From 4aab2aae5db7ca9be3028e20496370fad9531ae9 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 5 Apr 2023 13:28:33 +0200 Subject: [PATCH 001/354] cicd: prueba dependencies script #TASK-4163 --- .../main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java index 4fa055dde8c..296b1be2d75 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java @@ -17,6 +17,7 @@ package org.opencb.opencga.app.cli.main; import org.apache.commons.lang3.ArrayUtils; +import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.CliOptionsParser; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.main.processors.CommandProcessor; @@ -48,6 +49,7 @@ public static void main(String[] args) { parser.printUsage(); System.exit(0); } + PrintUtils.printSpace(); checkLogLevel(args); checkMode(args); logger.debug(Arrays.toString(args)); From e4b4fe5afa4a52f1ae876ba4d0066440d1c2d081 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 5 Apr 2023 13:30:16 +0200 Subject: [PATCH 002/354] cicd: prueba dependencies script #TASK-4163 --- .github/workflows/task.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index 886fd6e05dd..ccce1089592 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -8,7 +8,7 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@TASK-4163 with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' From 6f9eafabf9495c0c7d64966ec49e97c178111135 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 5 Apr 2023 15:35:20 +0200 Subject: [PATCH 003/354] cicd: prueba local dependencies script #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/scripts/get_same_branch.sh diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh new file mode 100644 index 00000000000..3b8d138a52d --- /dev/null +++ b/.github/workflows/scripts/get_same_branch.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +BRANCH_NAME=$1 + +if [[ -z $BRANCH_NAME ]]; then + echo "The first parameter is mandatory and must be a valid branch name." + exit 1 +fi + +if [[ $BRANCH_NAME != "TASK-"* ]]; then + echo "No need to check dependencies." + exit 0 +fi + +function install(){ + local REPO=$1 + cd /home/runner/work/ + git clone git@github.com:opencb/"$REPO".git + cd "$REPO" + git checkout "$BRANCH_NAME" + local BRANCHES=$(git branch --list $BRANCH_NAME) + if [[ -n $BRANCHES ]]; then + echo "Branch name $BRANCH_NAME already exists." + mvn clean install -DskipTests + else + echo "$BRANCHES Is empty" + fi +} + +PWD=$(pwd) +echo "The absolute exec path is $PWD" + +if [[ "$PWD" != *"java-common-libs"* ]]; then + ## biodata + if [[ "$PWD" == *"biodata"* ]]; then + echo "It's biodata." + install "java-common-libs" + fi + ## cellbase + if [[ "$PWD" == *"cellbase"* ]]; then + echo "It's cellbase." + install "java-common-libs" + install "biodata" + fi + ## opencga + if [[ "$PWD" == *"opencga"* ]]; then + echo "It's opencga." + install "java-common-libs" + install "biodata" + install "cellbase" + fi +fi \ No newline at end of file From 7fb65ed29037031cffd71a75e079014e13bd499e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 6 Apr 2023 09:50:36 +0200 Subject: [PATCH 004/354] cicd: prueba home workspace #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 3b8d138a52d..47d31f03b4b 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -14,9 +14,10 @@ fi function install(){ local REPO=$1 - cd /home/runner/work/ + #cd /home/runner/work/ + cd ~ || exit 2 git clone git@github.com:opencb/"$REPO".git - cd "$REPO" + cd "$REPO" || exit 2 git checkout "$BRANCH_NAME" local BRANCHES=$(git branch --list $BRANCH_NAME) if [[ -n $BRANCHES ]]; then From 6eb4f0d2a3d073f7fe3238e29830a2b7404d7dcc Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 6 Apr 2023 13:17:47 +0200 Subject: [PATCH 005/354] cicd: Trying https clone #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 47d31f03b4b..2193aa1a0f9 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -14,9 +14,9 @@ fi function install(){ local REPO=$1 - #cd /home/runner/work/ - cd ~ || exit 2 - git clone git@github.com:opencb/"$REPO".git + cd /home/runner/work/ + #git clone git@github.com:opencb/"$REPO".git + git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 git checkout "$BRANCH_NAME" local BRANCHES=$(git branch --list $BRANCH_NAME) From 50f4f94e5cc7e83e7dac556cf63b1b87d5721dd4 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 6 Apr 2023 16:24:05 +0200 Subject: [PATCH 006/354] cicd: Reinstalling maven dependencies #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- .github/workflows/test-analysis.yml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 2193aa1a0f9..570bae1525b 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -18,7 +18,7 @@ function install(){ #git clone git@github.com:opencb/"$REPO".git git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 - git checkout "$BRANCH_NAME" + git checkout -b "$BRANCH_NAME" local BRANCHES=$(git branch --list $BRANCH_NAME) if [[ -n $BRANCHES ]]; then echo "Branch name $BRANCH_NAME already exists." diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 52abb53cb56..101ba4e46b7 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -38,6 +38,14 @@ jobs: distribution: 'temurin' java-version: '11' cache: 'maven' + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + else + echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + fi - name: Test and Analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any @@ -57,6 +65,14 @@ jobs: distribution: 'temurin' java-version: '8' cache: 'maven' + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + else + echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + fi - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From a04c478062a49438bf19cb178c4bb8d1f12a2f4a Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 13:47:53 +0200 Subject: [PATCH 007/354] cicd: save maven cache #TASK-4163 --- .github/workflows/test-analysis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 101ba4e46b7..b8f9f09d4da 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -46,6 +46,10 @@ jobs: else echo "./.github/workflows/scripts/get_same_branch.sh does not exist." fi + - name: Save Maven cache + uses: skjolber/maven-cache-github-action@v1 + with: + step: save - name: Test and Analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any @@ -73,6 +77,10 @@ jobs: else echo "./.github/workflows/scripts/get_same_branch.sh does not exist." fi + - name: Save Maven cache + uses: skjolber/maven-cache-github-action@v1 + with: + step: save - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From 46b5e9118018d6212331775d874799f501a37f30 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 14:56:21 +0200 Subject: [PATCH 008/354] cicd: git branch -r --list #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 570bae1525b..f07755be3b6 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -19,7 +19,8 @@ function install(){ git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 git checkout -b "$BRANCH_NAME" - local BRANCHES=$(git branch --list $BRANCH_NAME) + local BRANCHES="" + BRANCHES=$(git branch -r --list $BRANCH_NAME) if [[ -n $BRANCHES ]]; then echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests From 7a8885a9e184b4bc8273c34b7fef1bfef2183d83 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 15:00:22 +0200 Subject: [PATCH 009/354] cicd: git branch -r --list #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index f07755be3b6..36a385891a0 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -18,9 +18,9 @@ function install(){ #git clone git@github.com:opencb/"$REPO".git git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 - git checkout -b "$BRANCH_NAME" + git checkout -b origin/"$BRANCH_NAME" local BRANCHES="" - BRANCHES=$(git branch -r --list $BRANCH_NAME) + BRANCHES=$(git branch -r --list origin/$BRANCH_NAME) if [[ -n $BRANCHES ]]; then echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests From 445064d1da75f471247b01acff2141b94a4cb6ba Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 15:17:52 +0200 Subject: [PATCH 010/354] cicd: current branch name check #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 36a385891a0..a06f39cff5f 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -21,6 +21,13 @@ function install(){ git checkout -b origin/"$BRANCH_NAME" local BRANCHES="" BRANCHES=$(git branch -r --list origin/$BRANCH_NAME) + CURRENT=$(git branch --show-current) + echo "Current branch name $CURRENT" + if [[ "$CURRENT" == "$BRANCH_NAME" ]]; then + echo "$CURRENT Branch is equals $BRANCH_NAME " + else + echo "$CURRENT Branch is NOT EQUALS $BRANCH_NAME " + fi if [[ -n $BRANCHES ]]; then echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests From aea63291caedd0af96f0f6e2f35e6bbac7d89d62 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 15:23:02 +0200 Subject: [PATCH 011/354] cicd: git checkout origin/branch_name #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index a06f39cff5f..421af126aa4 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -18,7 +18,7 @@ function install(){ #git clone git@github.com:opencb/"$REPO".git git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 - git checkout -b origin/"$BRANCH_NAME" + git checkout origin/"$BRANCH_NAME" local BRANCHES="" BRANCHES=$(git branch -r --list origin/$BRANCH_NAME) CURRENT=$(git branch --show-current) From a0a11e7057073fb56b1d2e819f704b74ec5557e8 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 15:25:33 +0200 Subject: [PATCH 012/354] cicd: git checkout branch_name #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 421af126aa4..19eea1a9fad 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -18,7 +18,7 @@ function install(){ #git clone git@github.com:opencb/"$REPO".git git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 - git checkout origin/"$BRANCH_NAME" + git checkout "$BRANCH_NAME" local BRANCHES="" BRANCHES=$(git branch -r --list origin/$BRANCH_NAME) CURRENT=$(git branch --show-current) From 154a81a6320b481a049c557d740cc3d419e76b94 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 15:58:53 +0200 Subject: [PATCH 013/354] cicd: checkout and clean unuseful code #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 13 ++---- .github/workflows/test-analysis.yml | 48 ++++++++++---------- 2 files changed, 27 insertions(+), 34 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 19eea1a9fad..4c0b140795d 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -14,25 +14,18 @@ fi function install(){ local REPO=$1 - cd /home/runner/work/ + cd /home/runner/work/ || exit 2 #git clone git@github.com:opencb/"$REPO".git git clone https://github.com/opencb/"$REPO".git cd "$REPO" || exit 2 git checkout "$BRANCH_NAME" - local BRANCHES="" - BRANCHES=$(git branch -r --list origin/$BRANCH_NAME) CURRENT=$(git branch --show-current) echo "Current branch name $CURRENT" - if [[ "$CURRENT" == "$BRANCH_NAME" ]]; then - echo "$CURRENT Branch is equals $BRANCH_NAME " - else - echo "$CURRENT Branch is NOT EQUALS $BRANCH_NAME " - fi - if [[ -n $BRANCHES ]]; then + if [[ "$CURRENT" == "$BRANCH_NAME" ]]; then echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests else - echo "$BRANCHES Is empty" + echo "$CURRENT Branch is NOT EQUALS $BRANCH_NAME " fi } diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index b8f9f09d4da..2c79137f816 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -38,18 +38,18 @@ jobs: distribution: 'temurin' java-version: '11' cache: 'maven' - - name: Install dependencies branches - run: | - if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then - chmod +x ./.github/workflows/scripts/get_same_branch.sh - ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} - else - echo "./.github/workflows/scripts/get_same_branch.sh does not exist." - fi - - name: Save Maven cache - uses: skjolber/maven-cache-github-action@v1 - with: - step: save + # - name: Install dependencies branches + # run: | + # if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + # chmod +x ./.github/workflows/scripts/get_same_branch.sh + # ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + # else + # echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + # fi + # - name: Save Maven cache + # uses: skjolber/maven-cache-github-action@v1 + # with: + # step: save - name: Test and Analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any @@ -69,18 +69,18 @@ jobs: distribution: 'temurin' java-version: '8' cache: 'maven' - - name: Install dependencies branches - run: | - if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then - chmod +x ./.github/workflows/scripts/get_same_branch.sh - ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} - else - echo "./.github/workflows/scripts/get_same_branch.sh does not exist." - fi - - name: Save Maven cache - uses: skjolber/maven-cache-github-action@v1 - with: - step: save + # - name: Install dependencies branches + # run: | + # if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + # chmod +x ./.github/workflows/scripts/get_same_branch.sh + # ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + # else + # echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + # fi + # - name: Save Maven cache + # uses: skjolber/maven-cache-github-action@v1 + # with: + # step: save - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From 8337eb8a259aeb25eba0345bbae121e7fb610742 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Apr 2023 16:41:35 +0200 Subject: [PATCH 014/354] cicd: maven cache is not available #TASK-4163 --- .github/workflows/test-analysis.yml | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 2c79137f816..0064b082542 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -38,14 +38,14 @@ jobs: distribution: 'temurin' java-version: '11' cache: 'maven' - # - name: Install dependencies branches - # run: | - # if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then - # chmod +x ./.github/workflows/scripts/get_same_branch.sh - # ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} - # else - # echo "./.github/workflows/scripts/get_same_branch.sh does not exist." - # fi + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + else + echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + fi # - name: Save Maven cache # uses: skjolber/maven-cache-github-action@v1 # with: @@ -69,14 +69,14 @@ jobs: distribution: 'temurin' java-version: '8' cache: 'maven' - # - name: Install dependencies branches - # run: | - # if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then - # chmod +x ./.github/workflows/scripts/get_same_branch.sh - # ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} - # else - # echo "./.github/workflows/scripts/get_same_branch.sh does not exist." - # fi + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + else + echo "./.github/workflows/scripts/get_same_branch.sh does not exist." + fi # - name: Save Maven cache # uses: skjolber/maven-cache-github-action@v1 # with: From 455c876ca2305ef9890c19828a871d1e07268593 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:26:21 +0200 Subject: [PATCH 015/354] cicd: clean script and workflows #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 41 +++----------------- .github/workflows/task.yml | 26 ------------- 2 files changed, 6 insertions(+), 61 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 4c0b140795d..1c0caad9ca4 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -15,40 +15,11 @@ fi function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 - #git clone git@github.com:opencb/"$REPO".git - git clone https://github.com/opencb/"$REPO".git - cd "$REPO" || exit 2 - git checkout "$BRANCH_NAME" - CURRENT=$(git branch --show-current) - echo "Current branch name $CURRENT" - if [[ "$CURRENT" == "$BRANCH_NAME" ]]; then - echo "Branch name $BRANCH_NAME already exists." - mvn clean install -DskipTests - else - echo "$CURRENT Branch is NOT EQUALS $BRANCH_NAME " - fi + git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" + echo "Branch name $BRANCH_NAME already exists." + mvn clean install -DskipTests } -PWD=$(pwd) -echo "The absolute exec path is $PWD" - -if [[ "$PWD" != *"java-common-libs"* ]]; then - ## biodata - if [[ "$PWD" == *"biodata"* ]]; then - echo "It's biodata." - install "java-common-libs" - fi - ## cellbase - if [[ "$PWD" == *"cellbase"* ]]; then - echo "It's cellbase." - install "java-common-libs" - install "biodata" - fi - ## opencga - if [[ "$PWD" == *"opencga"* ]]; then - echo "It's opencga." - install "java-common-libs" - install "biodata" - install "cellbase" - fi -fi \ No newline at end of file +install "java-common-libs" +install "biodata" +install "cellbase" diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index ccce1089592..bb6d540de71 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -20,13 +20,6 @@ jobs: test_profile: runShortTests report_context: development - deploy-maven: - name: Deploy in maven only for renamed versions - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop - needs: [ build, test ] - if: contains( needs.build.outputs.version ,'TASK') - secrets: inherit - deploy-docker: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test @@ -34,22 +27,3 @@ jobs: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init --tag ${{ github.ref_name }} secrets: inherit - # The following jobs are to see that the previous 'if' doesn't fail and that the maven deploy is executed because it is true - snapshot-version: - name: Check SNAPSHOT version - needs: [ build, test ] - if: contains(needs.build.outputs.version ,'SNAPSHOT') - runs-on: ubuntu-22.04 - steps: - - name: test-version-from-check - run: echo "Project version is " ${{ needs.build.outputs.version }} - - task-version: - name: Check TASK version - needs: [ build, test ] - if: contains(needs.build.outputs.version ,'TASK') - runs-on: ubuntu-22.04 - steps: - - name: test-version-from-check - run: echo "Project version is " ${{ needs.build.outputs.version }} - From 2bdced845a44581066a589a9e65b3fa6b79fe29c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:30:37 +0200 Subject: [PATCH 016/354] cicd: clean script and workflows #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 1c0caad9ca4..cd079000663 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -16,6 +16,7 @@ function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" + cd "$REPO" || exit 2 echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests } From e748246e48d997cb68084358446d7819f8dee7d0 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:32:31 +0200 Subject: [PATCH 017/354] cicd: clean script and workflows #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index cd079000663..04e046c7c91 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -16,7 +16,7 @@ function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" - cd "$REPO" || exit 2 + cd "$REPO" || exit echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests } From 914cd52933174795ec40621eb0024b8114d1909d Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:34:22 +0200 Subject: [PATCH 018/354] cicd: clean script and workflows #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 04e046c7c91..7980142fb64 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -16,7 +16,7 @@ function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" - cd "$REPO" || exit + cd "$REPO" || exit 0 echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests } From 7703cce0f76e2c1836e3a7652edb6b11eb79f309 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:37:40 +0200 Subject: [PATCH 019/354] cicd: change exit for return in get_same_branch.sh #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index 7980142fb64..f2325fff46d 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -16,7 +16,7 @@ function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" - cd "$REPO" || exit 0 + cd "$REPO" || return echo "Branch name $BRANCH_NAME already exists." mvn clean install -DskipTests } From cf7744f6a77b46cd1a2833f44ae0f10266547e2c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Apr 2023 18:47:15 +0200 Subject: [PATCH 020/354] cicd: change script get_same_branch.sh to check if directory exists #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index f2325fff46d..fef5346c0e2 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -15,10 +15,14 @@ fi function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 - git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" - cd "$REPO" || return - echo "Branch name $BRANCH_NAME already exists." - mvn clean install -DskipTests + git clone https://github.com/opencb/"$REPO".git -d "$BRANCH_NAME" + if [ -d "./$REPO" ]; then + cd "$REPO" || exit 2 + echo "Branch name $BRANCH_NAME already exists." + mvn clean install -DskipTests + else + echo "$CURRENT Branch is NOT EQUALS $BRANCH_NAME " + fi } install "java-common-libs" From 3b415b5db515c16edd19d7d9f6c874ae7dda86b5 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 13 Apr 2023 11:14:43 +0200 Subject: [PATCH 021/354] Cicd: clean comments #TASK-4163 --- .github/workflows/test-analysis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 0064b082542..760a0d19435 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -46,10 +46,6 @@ jobs: else echo "./.github/workflows/scripts/get_same_branch.sh does not exist." fi - # - name: Save Maven cache - # uses: skjolber/maven-cache-github-action@v1 - # with: - # step: save - name: Test and Analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any @@ -77,10 +73,6 @@ jobs: else echo "./.github/workflows/scripts/get_same_branch.sh does not exist." fi - # - name: Save Maven cache - # uses: skjolber/maven-cache-github-action@v1 - # with: - # step: save - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From fe8f9e2b72b72a1b19f433a41d3d8bff1bfc9fe7 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 13 Apr 2023 11:55:56 +0200 Subject: [PATCH 022/354] cicd: change script get_same_branch.sh to check if directory exists #TASK-4163 --- .github/workflows/scripts/get_same_branch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/get_same_branch.sh b/.github/workflows/scripts/get_same_branch.sh index fef5346c0e2..f217d21e70c 100644 --- a/.github/workflows/scripts/get_same_branch.sh +++ b/.github/workflows/scripts/get_same_branch.sh @@ -15,7 +15,7 @@ fi function install(){ local REPO=$1 cd /home/runner/work/ || exit 2 - git clone https://github.com/opencb/"$REPO".git -d "$BRANCH_NAME" + git clone https://github.com/opencb/"$REPO".git -b "$BRANCH_NAME" if [ -d "./$REPO" ]; then cd "$REPO" || exit 2 echo "Branch name $BRANCH_NAME already exists." From 1b1a91222139baff928fd6c0a728778400507baf Mon Sep 17 00:00:00 2001 From: Juanfe Sanahuja <85166064+juanfeSanahuja@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:33:27 +0200 Subject: [PATCH 023/354] Update test-analysis.yml --- .github/workflows/test-analysis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 01cbc7d3d3d..e5c870228e9 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -42,7 +42,8 @@ jobs: run: mvn -T 2 clean install -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -DskipTests -Dcheckstyle.skip org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=opencb_opencga test: name: Execute JUnit and Jacoco tests - runs-on: ubuntu-22.04 + #runs-on: ubuntu-22.04 + runs-on: self-hosted steps: - uses: actions/checkout@v3 with: From 077892c1e14c05d47badf39586491269435c5870 Mon Sep 17 00:00:00 2001 From: Juanfe Sanahuja <85166064+juanfeSanahuja@users.noreply.github.com> Date: Fri, 21 Apr 2023 16:52:44 +0200 Subject: [PATCH 024/354] Update test-analysis.yml --- .github/workflows/test-analysis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index e5c870228e9..2a96ffc4ffc 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -48,12 +48,12 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: '0' - - name: Set up JDK 8 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '8' - cache: 'maven' + #- name: Set up JDK 8 + # uses: actions/setup-java@v3 + # with: + # distribution: 'temurin' + # java-version: '8' + # cache: 'maven' - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From 4d546260caf9d40b73d3f79201abe2217446675b Mon Sep 17 00:00:00 2001 From: Juanfe Sanahuja <85166064+juanfeSanahuja@users.noreply.github.com> Date: Fri, 21 Apr 2023 17:06:30 +0200 Subject: [PATCH 025/354] Update test-analysis.yml --- .github/workflows/test-analysis.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 2a96ffc4ffc..01cbc7d3d3d 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -42,18 +42,17 @@ jobs: run: mvn -T 2 clean install -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -DskipTests -Dcheckstyle.skip org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=opencb_opencga test: name: Execute JUnit and Jacoco tests - #runs-on: ubuntu-22.04 - runs-on: self-hosted + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 with: fetch-depth: '0' - #- name: Set up JDK 8 - # uses: actions/setup-java@v3 - # with: - # distribution: 'temurin' - # java-version: '8' - # cache: 'maven' + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' - name: Install Samtools run: sudo apt-get install samtools python3-deeptools - name: Start MongoDB v6.0 From df611903fdf5f2c24d6889114d23e6fd5b2e879b Mon Sep 17 00:00:00 2001 From: imedina Date: Tue, 25 Apr 2023 02:16:56 +0100 Subject: [PATCH 026/354] core: rename GitRepositoryState.get() to GitRepositoryState.getInstance() --- .../analysis/clinical/InterpretationAnalysis.java | 8 ++++---- .../exomiser/ExomiserInterpretationAnalysis.java | 4 ++-- .../circos/CircosLocalAnalysisExecutor.java | 2 +- .../GenomePlotLocalAnalysisExecutor.java | 2 +- .../hrdetect/HRDetectLocalAnalysisExecutor.java | 14 +------------- .../MutationalSignatureLocalAnalysisExecutor.java | 2 +- .../executors/DockerWrapperAnalysisExecutor.java | 2 +- .../analysis/rga/RgaSolrExtenalResource.java | 6 ++---- .../app/cli/admin/AdminCliOptionsParser.java | 4 ++-- .../opencb/opencga/app/cli/admin/AdminMain.java | 6 +++--- .../admin/executors/MigrationCommandExecutor.java | 2 +- .../app/cli/internal/InternalCliOptionsParser.java | 4 ++-- .../opencga/app/cli/internal/InternalMain.java | 6 +++--- .../app/cli/main/utils/CommandLineUtils.java | 12 ++++++------ .../opencga/app/cli/main/utils/JobsTopManager.java | 2 +- .../opencga/app/cli/session/SessionManager.java | 2 +- .../issue_1849/CompleteStatusDataModelUtils.java | 4 ++-- .../catalog/db/mongodb/MetaMongoDBAdaptor.java | 2 +- .../opencga/catalog/managers/AuditManager.java | 2 +- .../catalog/stats/solr/CatalogSolrManager.java | 2 +- .../opencga/catalog/templates/TemplateManager.java | 2 +- .../opencga/catalog/utils/PedigreeGraphUtils.java | 2 +- .../catalog/stats/solr/SolrExternalResource.java | 2 +- .../opencga/core/common/GitRepositoryState.java | 12 ++++++++++-- .../org/opencb/opencga/core/docs/DocBuilder.java | 2 +- .../org/opencb/opencga/core/models/Metadata.java | 2 +- .../opencga/core/models/common/InternalStatus.java | 4 ++-- .../opencb/opencga/core/tools/result/Status.java | 4 ++-- .../opencga/server/generator/models/RestApi.java | 2 +- .../opencb/opencga/server/rest/MetaWSServer.java | 6 +++--- .../opencga/server/rest/OpenCGAWSServer.java | 8 ++++---- .../main/resources/parserAbstractMethods.template | 4 ++-- .../opencga/storage/app/StorageAdminMain.java | 4 ++-- .../opencb/opencga/storage/app/StorageMain.java | 6 +++--- .../app/cli/client/ClientCliOptionsParser.java | 4 ++-- .../app/cli/server/AdminCliOptionsParser.java | 4 ++-- .../core/metadata/VariantMetadataConverter.java | 2 +- .../variant/solr/VariantSolrExternalResource.java | 2 +- .../hadoop/variant/executors/MRExecutor.java | 2 +- .../org/opencb/opencga/test/cli/OptionsParser.java | 4 ++-- 40 files changed, 80 insertions(+), 86 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/InterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/InterpretationAnalysis.java index 02ab7d9b5d8..4fe57ad701b 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/InterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/InterpretationAnalysis.java @@ -79,8 +79,8 @@ protected InterpretationMethod getInterpretationMethod(String name) { .setName(name) .setDependencies(Collections.singletonList(new Software() .setName("OpenCGA") - .setVersion(GitRepositoryState.get().getBuildVersion()) - .setCommit(GitRepositoryState.get().getCommitId()))); + .setVersion(GitRepositoryState.getInstance().getBuildVersion()) + .setCommit(GitRepositoryState.getInstance().getCommitId()))); return method; } @@ -114,8 +114,8 @@ protected void saveInterpretation(String studyId, ClinicalAnalysis clinicalAnaly // Interpretation method InterpretationMethod method = new InterpretationMethod(getId(), null, null, - Collections.singletonList(new Software().setName("OpenCGA").setVersion(GitRepositoryState.get().getBuildVersion()) - .setCommit(GitRepositoryState.get().getCommitId()))); + Collections.singletonList(new Software().setName("OpenCGA").setVersion(GitRepositoryState.getInstance().getBuildVersion()) + .setCommit(GitRepositoryState.getInstance().getCommitId()))); // Analyst ClinicalAnalyst analyst = clinicalInterpretationManager.getAnalyst(token); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 07e35a78504..39fa4fd581c 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -137,8 +137,8 @@ protected void run() throws ToolException { protected void saveInterpretation(String studyId, ClinicalAnalysis clinicalAnalysis) throws ToolException, StorageEngineException, CatalogException, IOException { // Interpretation method - InterpretationMethod method = new InterpretationMethod(getId(), GitRepositoryState.get().getBuildVersion(), - GitRepositoryState.get().getCommitId(), Collections.singletonList( + InterpretationMethod method = new InterpretationMethod(getId(), GitRepositoryState.getInstance().getBuildVersion(), + GitRepositoryState.getInstance().getCommitId(), Collections.singletonList( new Software() .setName("Exomiser") .setRepository("Docker: " + ExomiserWrapperAnalysisExecutor.DOCKER_IMAGE_NAME) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java index cd2ada565fa..40f829ecd6c 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java @@ -58,7 +58,7 @@ public class CircosLocalAnalysisExecutor extends CircosAnalysisExecutor implements StorageToolExecutor { public final static String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" - + GitRepositoryState.get().getBuildVersion(); + + GitRepositoryState.getInstance().getBuildVersion(); private VariantStorageManager storageManager; private File snvsFile; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java index 027bb8dc9a8..4246e142d55 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java @@ -61,7 +61,7 @@ public class GenomePlotLocalAnalysisExecutor extends GenomePlotAnalysisExecutor implements StorageToolExecutor { public final static String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" - + GitRepositoryState.get().getBuildVersion(); + + GitRepositoryState.getInstance().getBuildVersion(); private GenomePlotConfig plotConfig; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/hrdetect/HRDetectLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/hrdetect/HRDetectLocalAnalysisExecutor.java index 4c96ad7b3b0..f85e0a1873a 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/hrdetect/HRDetectLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/hrdetect/HRDetectLocalAnalysisExecutor.java @@ -16,31 +16,21 @@ package org.opencb.opencga.analysis.variant.hrdetect; -import htsjdk.samtools.reference.BlockCompressedIndexedFastaSequenceFile; -import htsjdk.samtools.reference.FastaSequenceIndex; -import htsjdk.samtools.reference.ReferenceSequence; -import htsjdk.samtools.util.GZIIndex; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; -import org.opencb.biodata.models.variant.avro.VariantType; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.commons.datastore.core.QueryResultWriter; import org.opencb.commons.exec.Command; import org.opencb.commons.utils.DockerUtils; -import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.StorageToolExecutor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.core.common.GitRepositoryState; import org.opencb.opencga.core.exceptions.ToolException; import org.opencb.opencga.core.exceptions.ToolExecutorException; -import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.core.tools.annotations.ToolExecutor; import org.opencb.opencga.core.tools.variant.HRDetectAnalysisExecutor; -import org.opencb.opencga.core.tools.variant.MutationalSignatureAnalysisExecutor; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; @@ -53,14 +43,12 @@ import java.nio.file.Paths; import java.util.*; -import static org.opencb.opencga.analysis.variant.mutationalSignature.MutationalSignatureAnalysis.CATALOGUES_FILENAME_DEFAULT; - @ToolExecutor(id="opencga-local", tool = HRDetectAnalysis.ID, framework = ToolExecutor.Framework.LOCAL, source = ToolExecutor.Source.STORAGE) public class HRDetectLocalAnalysisExecutor extends HRDetectAnalysisExecutor implements StorageToolExecutor { - public final static String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" + GitRepositoryState.get().getBuildVersion(); + public final static String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" + GitRepositoryState.getInstance().getBuildVersion(); private final static String CNV_FILENAME = "cnv.tsv"; private final static String INDEL_FILENAME = "indel.vcf"; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java index 55173c3bd3a..d0b17eac64a 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java @@ -65,7 +65,7 @@ public class MutationalSignatureLocalAnalysisExecutor extends MutationalSignatur implements StorageToolExecutor { public final static String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" - + GitRepositoryState.get().getBuildVersion(); + + GitRepositoryState.getInstance().getBuildVersion(); private Path opencgaHome; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java index 27d6c54d7b3..21f619cc5a4 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java @@ -32,7 +32,7 @@ public String getDockerImageName() { } public String getDockerImageVersion() { - return GitRepositoryState.get().getBuildVersion(); + return GitRepositoryState.getInstance().getBuildVersion(); } private Logger privateLogger = LoggerFactory.getLogger(DockerWrapperAnalysisExecutor.class); diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/rga/RgaSolrExtenalResource.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/rga/RgaSolrExtenalResource.java index 0884482ef80..f45e8e77ec2 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/rga/RgaSolrExtenalResource.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/rga/RgaSolrExtenalResource.java @@ -5,10 +5,8 @@ import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; import org.apache.solr.core.NodeConfig; -import org.apache.solr.core.SolrResourceLoader; import org.junit.rules.ExternalResource; import org.opencb.commons.datastore.solr.SolrManager; -import org.opencb.opencga.analysis.variant.manager.VariantStorageManager; import org.opencb.opencga.core.common.GitRepositoryState; import org.opencb.opencga.core.config.storage.StorageConfiguration; @@ -40,8 +38,8 @@ protected void before() throws Throwable { Path rootDir = getTmpRootDir(); - String mainConfigSet = "opencga-rga-configset-" + GitRepositoryState.get().getBuildVersion(); - String auxConfigSet = "opencga-rga-aux-configset-" + GitRepositoryState.get().getBuildVersion(); + String mainConfigSet = "opencga-rga-configset-" + GitRepositoryState.getInstance().getBuildVersion(); + String auxConfigSet = "opencga-rga-aux-configset-" + GitRepositoryState.getInstance().getBuildVersion(); copyConfigSetConfiguration(mainConfigSet, "managed-schema"); copyConfigSetConfiguration(auxConfigSet, "aux-managed-schema"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminCliOptionsParser.java index 89832e53260..28787847b65 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminCliOptionsParser.java @@ -800,8 +800,8 @@ public void printUsage() { if (parsedCommand.isEmpty()) { System.err.println(""); System.err.println("Program: OpenCGA Admin (OpenCB)"); - System.err.println("Version: " + GitRepositoryState.get().getBuildVersion()); - System.err.println("Git commit: " + GitRepositoryState.get().getCommitId()); + System.err.println("Version: " + GitRepositoryState.getInstance().getBuildVersion()); + System.err.println("Git commit: " + GitRepositoryState.getInstance().getCommitId()); System.err.println("Description: Big Data platform for processing and analysing NGS data"); System.err.println(""); System.err.println("Usage: opencga-admin.sh [-h|--help] [--version] [options]"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminMain.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminMain.java index 2bb78fb51c3..2dc1f8d638b 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminMain.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/AdminMain.java @@ -30,7 +30,7 @@ */ public class AdminMain { - public static final String VERSION = GitRepositoryState.get().getBuildVersion(); + public static final String VERSION = GitRepositoryState.getInstance().getBuildVersion(); public static void main(String[] args) { @@ -71,8 +71,8 @@ public static void main(String[] args) { String parsedCommand = cliOptionsParser.getCommand(); if (parsedCommand == null || parsedCommand.isEmpty()) { if (cliOptionsParser.getGeneralOptions().version) { - System.out.println("Version " + GitRepositoryState.get().getBuildVersion()); - System.out.println("Git version: " + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); + System.out.println("Version " + GitRepositoryState.getInstance().getBuildVersion()); + System.out.println("Git version: " + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); System.exit(0); } else if (cliOptionsParser.getGeneralOptions().help) { cliOptionsParser.printUsage(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/executors/MigrationCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/executors/MigrationCommandExecutor.java index ceaab6ea98d..a360eaa2f1e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/executors/MigrationCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/admin/executors/MigrationCommandExecutor.java @@ -167,7 +167,7 @@ private String parseVersion(String version) { public static String getDefaultVersion() { String version; - version = GitRepositoryState.get().getBuildVersion(); + version = GitRepositoryState.getInstance().getBuildVersion(); // Remove extra information version = version.split("-")[0]; return version; diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java index f11d519c846..132ad854c82 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java @@ -468,8 +468,8 @@ public void printUsage() { if (parsedCommand.isEmpty()) { System.err.println(""); System.err.println("Program: OpenCGA Analysis (OpenCB)"); - System.err.println("Version: " + GitRepositoryState.get().getBuildVersion()); - System.err.println("Git commit: " + GitRepositoryState.get().getCommitId()); + System.err.println("Version: " + GitRepositoryState.getInstance().getBuildVersion()); + System.err.println("Git commit: " + GitRepositoryState.getInstance().getCommitId()); System.err.println("Description: Big Data platform for processing and analysing NGS data"); System.err.println(""); System.err.println("Usage: opencga-internal.sh [-h|--help] [--version] [options]"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalMain.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalMain.java index a1aaf7466f3..98d8b965357 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalMain.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalMain.java @@ -28,7 +28,7 @@ */ public class InternalMain { - public static final String VERSION = GitRepositoryState.get().getBuildVersion(); + public static final String VERSION = GitRepositoryState.getInstance().getBuildVersion(); public static void main(String[] args) { System.exit(privateMain(args)); @@ -48,8 +48,8 @@ public static int privateMain(String[] args) { String parsedCommand = cliOptionsParser.getCommand(); if (parsedCommand == null || parsedCommand.isEmpty()) { if (cliOptionsParser.getGeneralOptions().version) { - System.out.println("Version " + GitRepositoryState.get().getBuildVersion()); - System.out.println("Git version: " + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); + System.out.println("Version " + GitRepositoryState.getInstance().getBuildVersion()); + System.out.println("Git version: " + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); return 0; } else if (cliOptionsParser.getGeneralOptions().help) { cliOptionsParser.printUsage(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java index 46af3e8eeb9..4454887584b 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java @@ -18,16 +18,16 @@ public class CommandLineUtils { private static final Logger logger = LoggerFactory.getLogger(CommandLineUtils.class); public static String getVersionString() { - String res = PrintUtils.getKeyValueAsFormattedString("\tOpenCGA CLI version: ", "\t" + GitRepositoryState.get().getBuildVersion() + "\n"); - res += PrintUtils.getKeyValueAsFormattedString("\tGit version:", "\t\t" + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId() + "\n"); + String res = PrintUtils.getKeyValueAsFormattedString("\tOpenCGA CLI version: ", "\t" + GitRepositoryState.getInstance().getBuildVersion() + "\n"); + res += PrintUtils.getKeyValueAsFormattedString("\tGit version:", "\t\t" + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId() + "\n"); res += PrintUtils.getKeyValueAsFormattedString("\tProgram:", "\t\tOpenCGA (OpenCB)" + "\n"); res += PrintUtils.getKeyValueAsFormattedString("\tDescription: ", "\t\tBig Data platform for processing and analysing NGS data" + "\n"); return res; } public static String getHelpVersionString() { - String res = PrintUtils.getHelpVersionFormattedString("OpenCGA CLI version: ", "\t" + GitRepositoryState.get().getBuildVersion() + "\n"); - res += PrintUtils.getHelpVersionFormattedString("Git version:", "\t\t" + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId() + "\n"); + String res = PrintUtils.getHelpVersionFormattedString("OpenCGA CLI version: ", "\t" + GitRepositoryState.getInstance().getBuildVersion() + "\n"); + res += PrintUtils.getHelpVersionFormattedString("Git version:", "\t\t" + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId() + "\n"); res += PrintUtils.getHelpVersionFormattedString("Program:", "\t\tOpenCGA (OpenCB)" + "\n"); res += PrintUtils.getHelpVersionFormattedString("Description: ", "\t\tBig Data platform for processing and analysing NGS data" + "\n"); return res; @@ -90,7 +90,7 @@ public static String[] processShortCuts(String[] args) { break; case "--build-version": case "build-version": - println(GitRepositoryState.get().getBuildVersion()); + println(GitRepositoryState.getInstance().getBuildVersion()); break; case "logout": return ArrayUtils.addAll(new String[]{"users"}, args); @@ -99,7 +99,7 @@ public static String[] processShortCuts(String[] args) { if (args.length > 1 && args[1].equals("studies")) { println(String.join(", ", OpencgaMain.getShell().getSessionManager().getSession().getStudies()), Color.GREEN); } else { - printWarn("Opencga version " + GitRepositoryState.get().getBuildVersion() + " can only list studies"); + printWarn("Opencga version " + GitRepositoryState.getInstance().getBuildVersion() + " can only list studies"); } } else { printWarn("List studies is only available in Shell mode"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/JobsTopManager.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/JobsTopManager.java index 1c2099ec471..15d7b63e6ec 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/JobsTopManager.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/JobsTopManager.java @@ -150,7 +150,7 @@ public void print(JobTop top) { jobTable.restoreCursorPosition(); jobTable.println("OpenCGA jobs TOP"); - jobTable.println(" Version " + GitRepositoryState.get().getBuildVersion()); + jobTable.println(" Version " + GitRepositoryState.getInstance().getBuildVersion()); jobTable.println(" " + TextOutputWriter.SIMPLE_DATE_FORMAT.format(Date.from(Instant.now()))); jobTable.println(); jobTable.print(Enums.ExecutionStatus.RUNNING + ": " + top.getStats().getRunning() + ", "); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/session/SessionManager.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/session/SessionManager.java index 640a687f7c3..f822716041e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/session/SessionManager.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/session/SessionManager.java @@ -111,7 +111,7 @@ private void init() { private Session createEmptySession() { Session session = new Session(); session.setHost(host); - session.setVersion(GitRepositoryState.get().getBuildVersion()); + session.setVersion(GitRepositoryState.getInstance().getBuildVersion()); session.setTimestamp(System.currentTimeMillis()); session.setStudies(new ArrayList()); session.setCurrentStudy(NO_STUDY); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_2_0/catalog/issue_1849/CompleteStatusDataModelUtils.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_2_0/catalog/issue_1849/CompleteStatusDataModelUtils.java index d23d2345681..d9e270c3d9f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_2_0/catalog/issue_1849/CompleteStatusDataModelUtils.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_2_0/catalog/issue_1849/CompleteStatusDataModelUtils.java @@ -35,8 +35,8 @@ public static void completeInternalStatus(Document document) { completeStatus(internal); Document status = internal.get("status", Document.class); - status.put("version", GitRepositoryState.get().getBuildVersion()); - status.put("commit", GitRepositoryState.get().getCommitId()); + status.put("version", GitRepositoryState.getInstance().getBuildVersion()); + status.put("commit", GitRepositoryState.getInstance().getCommitId()); String id = status.getString("id"); if (StringUtils.isEmpty(id)) { diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MetaMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MetaMongoDBAdaptor.java index 1a98f5a99a9..9fc90a7b621 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MetaMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MetaMongoDBAdaptor.java @@ -55,7 +55,7 @@ public class MetaMongoDBAdaptor extends MongoDBAdaptor implements MetaDBAdaptor Filters.eq(ID, MongoDBAdaptorFactory.METADATA_OBJECT_ID), Filters.eq(OLD_ID, MongoDBAdaptorFactory.METADATA_OBJECT_ID)); private final MongoDBCollection metaCollection; - private static final String VERSION = GitRepositoryState.get().getBuildVersion(); + private static final String VERSION = GitRepositoryState.getInstance().getBuildVersion(); public MetaMongoDBAdaptor(MongoDBCollection metaMongoDBCollection, Configuration configuration, MongoDBAdaptorFactory dbAdaptorFactory) { diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AuditManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AuditManager.java index 1f0a9ae40c6..b95d3b0ff0e 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AuditManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AuditManager.java @@ -184,7 +184,7 @@ public void audit(String operationId, String userId, Enums.Action action, Enums. public void audit(String operationId, String userId, Enums.Action action, Enums.Resource resource, String resourceId, String resourceUuid, String studyId, String studyUuid, ObjectMap params, AuditRecord.Status status, ObjectMap attributes) { - String apiVersion = GitRepositoryState.get().getBuildVersion(); + String apiVersion = GitRepositoryState.getInstance().getBuildVersion(); Date date = TimeUtils.getDate(); String auditId = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/stats/solr/CatalogSolrManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/stats/solr/CatalogSolrManager.java index 6be7ad1be28..b1c2df87d1f 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/stats/solr/CatalogSolrManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/stats/solr/CatalogSolrManager.java @@ -268,7 +268,7 @@ public DataResult facetedQuery(Study study, String collection, Query //***************** PRIVATE ****************/ private void populateConfigCollectionMap() { - String version = GitRepositoryState.get().getBuildVersion(); + String version = GitRepositoryState.getInstance().getBuildVersion(); CONFIGS_COLLECTION.put(DATABASE_PREFIX + COHORT_SOLR_COLLECTION, COHORT_CONF_SET + "-" + version); CONFIGS_COLLECTION.put(DATABASE_PREFIX + FILE_SOLR_COLLECTION, FILE_CONF_SET + "-" + version); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/templates/TemplateManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/templates/TemplateManager.java index 16a638e0e2d..bb59584363b 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/templates/TemplateManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/templates/TemplateManager.java @@ -125,7 +125,7 @@ public void validate(TemplateManifest manifest) throws CatalogException { } // Check version - GitRepositoryState gitRepositoryState = GitRepositoryState.get(); + GitRepositoryState gitRepositoryState = GitRepositoryState.getInstance(); String version = gitRepositoryState.getBuildVersion(); String versionShort; if (version.contains("-")) { diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/PedigreeGraphUtils.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/PedigreeGraphUtils.java index 9da89bab416..62394a6e562 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/PedigreeGraphUtils.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/PedigreeGraphUtils.java @@ -25,7 +25,7 @@ public class PedigreeGraphUtils { public static final String PEDIGREE_JSON_FILENAME = "ped_coords.json"; public static final String PEDIGREE_TSV_FILENAME = "ped_coords.tsv"; - public static final String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" + GitRepositoryState.get().getBuildVersion(); + public static final String R_DOCKER_IMAGE = "opencb/opencga-ext-tools:" + GitRepositoryState.getInstance().getBuildVersion(); public static PedigreeGraph getPedigreeGraph(Family family, Path openCgaHome, Path scratchDir) throws IOException { PedigreeGraph pedigreeGraph = new PedigreeGraph(); diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/stats/solr/SolrExternalResource.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/stats/solr/SolrExternalResource.java index cc0a758e602..677262d5cf8 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/stats/solr/SolrExternalResource.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/stats/solr/SolrExternalResource.java @@ -41,7 +41,7 @@ public void before() throws Exception { Path rootDir = getOpencgaHome(); - String version = GitRepositoryState.get().getBuildVersion(); + String version = GitRepositoryState.getInstance().getBuildVersion(); // Copy configuration copyConfiguration("cohort-managed-schema", CatalogSolrManager.COHORT_CONF_SET + "-" + version); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/GitRepositoryState.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/GitRepositoryState.java index 80f1563dec6..790d8adcbe0 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/GitRepositoryState.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/GitRepositoryState.java @@ -32,6 +32,7 @@ public class GitRepositoryState { public static final String DEFAULT_RESOURCE_NAME = "git.properties"; private static GitRepositoryState gitRepositoryState; + private static Properties properties; private static final Logger logger = LoggerFactory.getLogger(GitRepositoryState.class); private String tags; // =${git.tags} // comma separated tag names @@ -57,9 +58,16 @@ public class GitRepositoryState { private String buildHost; // =${git.build.host} private String buildVersion; // =${git.build.version} - public static GitRepositoryState get() { + public static String get(String key) { + if (properties == null) { + getInstance(); + } + return properties.getProperty(key); + } + + public static GitRepositoryState getInstance() { if (gitRepositoryState == null) { - Properties properties = new Properties(); + properties = new Properties(); InputStream stream = null; try { stream = GitRepositoryState.class.getClassLoader().getResourceAsStream(DEFAULT_RESOURCE_NAME); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/docs/DocBuilder.java b/opencga-core/src/main/java/org/opencb/opencga/core/docs/DocBuilder.java index 53f0014dd27..a647bbd8b43 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/docs/DocBuilder.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/docs/DocBuilder.java @@ -44,7 +44,7 @@ public static void main(String[] args) { config.setType(DocFactory.DocFactoryType.MARKDOWN); config.setOutputDir("/workspace/opencga/docs/data-models/"); config.setGithubServerURL("https://github.com/opencb/opencga/tree/" - + GitRepositoryState.get().getBranch() + "/opencga-core"); + + GitRepositoryState.getInstance().getBranch() + "/opencga-core"); config.setJsondir("/workspace/opencga/opencga-core/src/main/resources/doc/json"); config.setGitbookServerURL("https://docs.opencga.opencb.org/data-models"); try { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/Metadata.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/Metadata.java index a0a67ee823a..99fb1bedeaa 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/Metadata.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/Metadata.java @@ -31,7 +31,7 @@ public class Metadata { public Metadata() { - this(GitRepositoryState.get().getBuildVersion(), TimeUtils.getTime()); + this(GitRepositoryState.getInstance().getBuildVersion(), TimeUtils.getTime()); } public Metadata(String version, String creationDate) { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/InternalStatus.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/InternalStatus.java index 732cb04adaf..a934efdc3ee 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/InternalStatus.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/InternalStatus.java @@ -120,8 +120,8 @@ protected void init(String statusId, String statusName, String description) { super.name = statusName; super.description = description; super.date = TimeUtils.getTime(); - this.version = GitRepositoryState.get().getBuildVersion(); - this.commit = GitRepositoryState.get().getCommitId(); + this.version = GitRepositoryState.getInstance().getBuildVersion(); + this.commit = GitRepositoryState.getInstance().getCommitId(); } @Override diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/Status.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/Status.java index da1778bf650..dc811356a1a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/Status.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/Status.java @@ -61,8 +61,8 @@ public Status(Type name, String step, Date date) { public static Status initStatus() { Status status = new Status(); - status.version = GitRepositoryState.get().getBuildVersion(); - status.commit = GitRepositoryState.get().getCommitId(); + status.version = GitRepositoryState.getInstance().getBuildVersion(); + status.commit = GitRepositoryState.getInstance().getCommitId(); return status; } diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/models/RestApi.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/models/RestApi.java index 84ae7f75aae..cff66f13e62 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/models/RestApi.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/models/RestApi.java @@ -28,7 +28,7 @@ public class RestApi { private List categories; public RestApi() { - this(GitRepositoryState.get().getBuildVersion(), GitRepositoryState.get().getCommitId(), new ArrayList<>()); + this(GitRepositoryState.getInstance().getBuildVersion(), GitRepositoryState.getInstance().getCommitId(), new ArrayList<>()); } public RestApi(String version, String commit, List categories) { diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/MetaWSServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/MetaWSServer.java index e075e938983..528853faeb6 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/MetaWSServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/MetaWSServer.java @@ -80,9 +80,9 @@ public MetaWSServer(@Context UriInfo uriInfo, @Context HttpServletRequest httpSe public Response getAbout() { Map info = new HashMap<>(5); info.put("Program", "OpenCGA (OpenCB)"); - info.put("Version", GitRepositoryState.get().getBuildVersion()); - info.put("Git branch", GitRepositoryState.get().getBranch()); - info.put("Git commit", GitRepositoryState.get().getCommitId()); + info.put("Version", GitRepositoryState.getInstance().getBuildVersion()); + info.put("Git branch", GitRepositoryState.getInstance().getBranch()); + info.put("Git commit", GitRepositoryState.getInstance().getCommitId()); info.put("Description", "Big Data platform for processing and analysing NGS data"); OpenCGAResult queryResult = new OpenCGAResult(); queryResult.setTime(0); diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/OpenCGAWSServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/OpenCGAWSServer.java index d152cf17277..03a39102d9e 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/OpenCGAWSServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/OpenCGAWSServer.java @@ -260,8 +260,8 @@ static void init(String opencgaHomeStr) { } logger.info("| OpenCGA REST successfully started!"); - logger.info("| - Version " + GitRepositoryState.get().getBuildVersion()); - logger.info("| - Git version: " + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); + logger.info("| - Version " + GitRepositoryState.getInstance().getBuildVersion()); + logger.info("| - Git version: " + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); logger.info("========================================================================\n"); } @@ -428,8 +428,8 @@ private static void addErrorEvent(RestResponse response, Throwable e) { } public static void setFederationServer(OpenCGAResult result, String baseuri) { - result.setFederationNode(new FederationNode(baseuri, GitRepositoryState.get().getCommitId(), - GitRepositoryState.get().getBuildVersion())); + result.setFederationNode(new FederationNode(baseuri, GitRepositoryState.getInstance().getCommitId(), + GitRepositoryState.getInstance().getBuildVersion())); } public static void logResponse(Response.StatusType statusInfo, RestResponse queryResponse, long startTime, diff --git a/opencga-server/src/main/resources/parserAbstractMethods.template b/opencga-server/src/main/resources/parserAbstractMethods.template index a06cc76c2f1..4d25b76e871 100644 --- a/opencga-server/src/main/resources/parserAbstractMethods.template +++ b/opencga-server/src/main/resources/parserAbstractMethods.template @@ -18,8 +18,8 @@ if (parsedCommand.isEmpty()) { System.err.println(""); System.err.println("Program: OpenCGA (OpenCB)"); - System.err.println("Version: " + GitRepositoryState.get().getBuildVersion()); - System.err.println("Git commit: " + GitRepositoryState.get().getCommitId()); + System.err.println("Version: " + GitRepositoryState.getInstance().getBuildVersion()); + System.err.println("Git commit: " + GitRepositoryState.getInstance().getCommitId()); System.err.println("Description: Big Data platform for processing and analysing NGS data"); System.err.println(""); System.err.println("Usage: opencga.sh [-h|--help] [--version] [options]"); diff --git a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageAdminMain.java b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageAdminMain.java index 85313d4e4c3..0825354d734 100644 --- a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageAdminMain.java +++ b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageAdminMain.java @@ -48,8 +48,8 @@ public static int privateMain(String[] args) { String parsedCommand = adminCliOptionsParser.getCommand(); if (parsedCommand == null || parsedCommand.isEmpty()) { if (adminCliOptionsParser.getGeneralOptions().version) { - System.out.println("Version " + GitRepositoryState.get().getBuildVersion()); - System.out.println("Git version: " + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); + System.out.println("Version " + GitRepositoryState.getInstance().getBuildVersion()); + System.out.println("Git version: " + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); return 0; } else if (adminCliOptionsParser.getGeneralOptions().help) { adminCliOptionsParser.printUsage(); diff --git a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageMain.java b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageMain.java index 05da1e97637..9f7ec6fd321 100644 --- a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageMain.java +++ b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/StorageMain.java @@ -48,9 +48,9 @@ public static int privateMain(String[] args) { String parsedCommand = cliOptionsParser.getCommand(); if (parsedCommand == null || parsedCommand.isEmpty()) { if (cliOptionsParser.getGeneralOptions().version) { - System.out.println("Version " + GitRepositoryState.get().getBuildVersion()); - System.out.println("Git version: " + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); -// System.out.println(GitRepositoryState.get()); + System.out.println("Version " + GitRepositoryState.getInstance().getBuildVersion()); + System.out.println("Git version: " + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); +// System.out.println(GitRepositoryState.getInstance()); return 0; } else if (cliOptionsParser.getGeneralOptions().help) { cliOptionsParser.printUsage(); diff --git a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/ClientCliOptionsParser.java b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/ClientCliOptionsParser.java index 9c430b284c1..fb567276992 100644 --- a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/ClientCliOptionsParser.java +++ b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/ClientCliOptionsParser.java @@ -82,8 +82,8 @@ public void printUsage() { if (parsedCommand.isEmpty()) { System.err.println(""); System.err.println("Program: OpenCGA Storage (OpenCB)"); - System.err.println("Version: " + GitRepositoryState.get().getBuildVersion()); - System.err.println("Git commit: " + GitRepositoryState.get().getCommitId()); + System.err.println("Version: " + GitRepositoryState.getInstance().getBuildVersion()); + System.err.println("Git commit: " + GitRepositoryState.getInstance().getCommitId()); System.err.println("Description: Big Data platform for processing and analysing NGS data"); System.err.println(""); System.err.println("Usage: opencga-storage.sh [-h|--help] [--version] [options]"); diff --git a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/server/AdminCliOptionsParser.java b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/server/AdminCliOptionsParser.java index 7aedfbd4e85..86a4bcca419 100644 --- a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/server/AdminCliOptionsParser.java +++ b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/server/AdminCliOptionsParser.java @@ -76,8 +76,8 @@ public void printUsage() { if (parsedCommand.isEmpty()) { System.err.println(""); System.err.println("Program: OpenCGA Storage Admin (OpenCB)"); - System.err.println("Version: " + GitRepositoryState.get().getBuildVersion()); - System.err.println("Git commit: " + GitRepositoryState.get().getCommitId()); + System.err.println("Version: " + GitRepositoryState.getInstance().getBuildVersion()); + System.err.println("Git commit: " + GitRepositoryState.getInstance().getCommitId()); System.err.println("Description: Big Data platform for processing and analysing NGS data"); System.err.println(""); System.err.println("Usage: opencga-storage-admin.sh [-h|--help] [--version] [options]"); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantMetadataConverter.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantMetadataConverter.java index 1ec92d91ea9..d2114731bc1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantMetadataConverter.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantMetadataConverter.java @@ -48,7 +48,7 @@ public VariantMetadata toVariantMetadata(VariantQueryProjection variantQueryProj // .setDate(Date.from(Instant.now()).toString()) .setCreationDate(TimeUtils.getTime()) .setStudies(studies) - .setVersion(GitRepositoryState.get().getDescribeShort()) + .setVersion(GitRepositoryState.getInstance().getDescribeShort()) .setSpecies(species) .build(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java index 122ef2da4af..031360d3298 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java @@ -63,7 +63,7 @@ protected void before() throws Throwable { Path rootDir = getTmpRootDir(); - String configSet = "opencga-variant-configset-" + GitRepositoryState.get().getBuildVersion(); + String configSet = "opencga-variant-configset-" + GitRepositoryState.getInstance().getBuildVersion(); // Copy configuration getResourceUri("configsets/variantsCollection/solrconfig.xml", "configsets/" + configSet + "/solrconfig.xml"); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutor.java index 7ba0a4faf85..ef8f97152ad 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutor.java @@ -51,7 +51,7 @@ public MRExecutor init(ObjectMap options) { public static String getJarWithDependencies(ObjectMap options) throws StorageEngineException { String jar = options.getString(MR_JAR_WITH_DEPENDENCIES.key(), null); if (jar == null) { - jar = "opencga-storage-hadoop-core-" + GitRepositoryState.get().getBuildVersion() + "-jar-with-dependencies.jar"; + jar = "opencga-storage-hadoop-core-" + GitRepositoryState.getInstance().getBuildVersion() + "-jar-with-dependencies.jar"; // throw new StorageEngineException("Missing option " + MR_JAR_WITH_DEPENDENCIES); } if (!Paths.get(jar).isAbsolute()) { diff --git a/opencga-test/src/main/java/org/opencb/opencga/test/cli/OptionsParser.java b/opencga-test/src/main/java/org/opencb/opencga/test/cli/OptionsParser.java index efd41c2b319..256df4315ee 100644 --- a/opencga-test/src/main/java/org/opencb/opencga/test/cli/OptionsParser.java +++ b/opencga-test/src/main/java/org/opencb/opencga/test/cli/OptionsParser.java @@ -76,8 +76,8 @@ public static void printVersion() { private static Map getVersionMap() { Map versionMap = new HashMap<>(); - versionMap.put("OpenCGA Test version:", GitRepositoryState.get().getBuildVersion()); - versionMap.put("Git version:", "" + GitRepositoryState.get().getBranch() + " " + GitRepositoryState.get().getCommitId()); + versionMap.put("OpenCGA Test version:", GitRepositoryState.getInstance().getBuildVersion()); + versionMap.put("Git version:", "" + GitRepositoryState.getInstance().getBranch() + " " + GitRepositoryState.getInstance().getCommitId()); versionMap.put("Program:", "OpenCGA-test (OpenCB)"); versionMap.put("Description:", "Data generation application for the openCGA platform"); return versionMap; From 1a52dd7e4ca90ca4b68ae893611888b55b32f00f Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 4 May 2023 19:20:59 +0200 Subject: [PATCH 027/354] pom: Dependency analysis plugin added #TASK-2095 --- pom.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pom.xml b/pom.xml index 63cfeeb438a..33c49e4f2b4 100644 --- a/pom.xml +++ b/pom.xml @@ -510,6 +510,7 @@ 2.2.27 test + @@ -660,6 +661,22 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + + + From 1e5d4312515e1b9ed1b24e098f9fc1a84857050c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 4 May 2023 19:39:44 +0200 Subject: [PATCH 028/354] delete file misc/sync_dependency.sh no longer necessary #TASK-4163 --- misc/sync_dependency.sh | 145 ---------------------------------------- 1 file changed, 145 deletions(-) delete mode 100755 misc/sync_dependency.sh diff --git a/misc/sync_dependency.sh b/misc/sync_dependency.sh deleted file mode 100755 index 316bbc39d3b..00000000000 --- a/misc/sync_dependency.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/bash - -function yellow (){ - echo "$(tput setaf 3)$1$(tput setaf 7)" -} -function green (){ - echo "$(tput setaf 2)$1$(tput setaf 7)" -} -function cyan (){ - echo "$(tput setaf 6)$1$(tput setaf 7)" -} - -function printUsage(){ - echo "" - yellow "Release an OpenCB project." - echo "" - echo "Usage: $(basename $0) --biodata|-b|--java-common-libs|-j" - echo "" - cyan "Options:" - green " -j --java-common-libs STRING Update java-common-libs dependency" - green " -b --biodata STRING Update biodata dependency" - echo "" -} - -## Check if the repo status is clean. -function check_repo_clean() { - GIT_STATUS=$(git status --short) - if [ -n "$GIT_STATUS" ]; then - yellow "Repository is not clean:" - yellow "$GIT_STATUS" - exit - fi -} - -## This function removes TASK-XXX- if exists, otherwise it adds it. -function toggle_version() { - local BRANCH=$1 - if [[ "$POM_DEPENDENCY_VERSION" == *"$BRANCH"* ]]; then - ## Remove TASK-XXX- from the current version - ## Example: remove 'TASK-1234-' from 2.6.0-TASK-1234-SNAPSHOT - NEW_VERSION=${POM_DEPENDENCY_VERSION/"$BRANCH-"} - else - ## Add 'TASK-XXX-' to the current version - ## Example: 2.6.0-SNAPSHOT --> 2.6.0-TASK-1234-SNAPSHOT - CLEAN_RELEASE_VERSION=$(echo "$POM_DEPENDENCY_VERSION" | cut -d "-" -f 1) - TAG_VERSION=$(echo "$POM_DEPENDENCY_VERSION" | cut -d "-" -f 2) - NEW_VERSION="$CLEAN_RELEASE_VERSION-$BRANCH-$TAG_VERSION" - fi -} - -## Change version in the dependency. -## Usage: update_dependency "$DEPENDENCY_REPO" "$NEW_VERSION" "$BRANCH_NAME" -function update_dependency() { - ## Save current directory - local pwd=$PWD - cd "$1" || exit 2 - check_repo_clean - git checkout "$3" - ## Check branch exists - local BRANCH=$(git branch --show-current) - if [ "$BRANCH" != "$3" ]; then - yellow "Branch '$3' does not exist" - exit - fi - ## Rename and commit new version - mvn versions:set -DnewVersion="$2" -DgenerateBackupPoms=false - git commit -am "Update version to $2" - ## Restore directory - cd "$pwd" || exit 2 -} - -## At least one parameter is required. -if [ -z "$1" ]; then - printUsage - exit 1 -fi - -while [[ $# -gt 0 ]]; do - key="$1" - if [ -n "$2" ]; then - DEPENDENCY_REPO="$2" - fi - case $key in - -h | --help) - printUsage - exit 0 - ;; - -j | --java-common-libs) - LIB="JAVA_COMMONS_LIB" - if [ -z "$DEPENDENCY_REPO" ]; then - DEPENDENCY_REPO="../java-common-libs" - else - shift - fi - shift # past argument - ;; - -b | --biodata) - LIB="BIODATA" - if [ -z "$DEPENDENCY_REPO" ]; then - DEPENDENCY_REPO="../biodata" - else - shift - fi - shift # past argument - ;; - *) # unknown option - echo "Unknown option $key" - printUsage - exit 1 - ;; - esac -done - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -CURRENT_DIR=$PWD -cd "$SCRIPT_DIR" || exit 2 -cd .. -BRANCH_NAME=$(git branch --show-current) -if [[ "$BRANCH_NAME" == "TASK-"* ]]; then - check_repo_clean "$BRANCH_NAME" -else - yellow "[$BRANCH_NAME] The branch name must start with TASK-" - yellow "$GIT_STATUS" - exit -fi - -function update_library(){ - local LIBRARY="$1" - POM_DEPENDENCY_VERSION=$(grep -m 1 "$LIBRARY" pom.xml | cut -d ">" -f 2 | cut -d "<" -f 1) - toggle_version "$BRANCH_NAME" - update_dependency "$DEPENDENCY_REPO" "$NEW_VERSION" "$BRANCH_NAME" - mvn versions:set-property -Dproperty=java-common-libs.version -DnewVersion="$NEW_VERSION" -DgenerateBackupPoms=false - git commit -am "Update '$LIBRARY' dependency to $NEW_VERSION" -} - - -if [ "$LIB" = "JAVA_COMMONS_LIB" ];then - update_library java-common-libs.version -fi -if [ "$LIB" = "BIODATA" ];then - update_library biodata.version -fi - -yellow "The new dependency version is $NEW_VERSION" -cd "$CURRENT_DIR" || exit 2 From 691f36abdca237a3a55ef5e3f84136907eacaa13 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 May 2023 18:17:38 +0200 Subject: [PATCH 029/354] cicd: Comment added #TASK-4163 --- .github/workflows/task.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index ae8d4cc8bd1..52394fd2fd5 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -5,7 +5,7 @@ on: branches: - TASK-* workflow_dispatch: - +#WARNING Develop branch needed for prod jobs: build: uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@TASK-4163 From 618603f65a2db073446611025d25071bb4c275c7 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 10 May 2023 15:15:10 +0200 Subject: [PATCH 030/354] catalog: add new method to update user to synced groups, #TASK-4359 --- .../catalog/db/api/StudyDBAdaptor.java | 24 ++- .../mongodb/AuthorizationMongoDBAdaptor.java | 4 +- .../db/mongodb/StudyMongoDBAdaptor.java | 169 +++++++++++++----- .../catalog/managers/AdminManager.java | 96 +++++++++- .../db/mongodb/StudyMongoDBAdaptorTest.java | 73 +++++++- .../core/models/admin/UserUpdateGroup.java | 43 +++++ .../server/rest/admin/AdminWSServer.java | 21 ++- 7 files changed, 382 insertions(+), 48 deletions(-) create mode 100644 opencga-core/src/main/java/org/opencb/opencga/core/models/admin/UserUpdateGroup.java diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/StudyDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/StudyDBAdaptor.java index 65077320bb7..f74d1a843b7 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/StudyDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/StudyDBAdaptor.java @@ -25,6 +25,7 @@ import org.opencb.opencga.catalog.exceptions.CatalogAuthorizationException; import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; +import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.models.project.Project; import org.opencb.opencga.core.models.study.*; @@ -287,9 +288,28 @@ OpenCGAResult removeUsersFromAllGroups(long studyId, List users) * @param groupList List containing possible groups that are synced and where the user should be added to. * @param authOrigin Authentication origin of the synced groups. * @return OpenCGAResult object. - * @throws CatalogDBException CatalogDBException. + * @throws CatalogDBException CatalogDBException + * @throws CatalogParameterException CatalogParameterException + * @throws CatalogAuthorizationException CatalogAuthorizationException */ - OpenCGAResult resyncUserWithSyncedGroups(String user, List groupList, String authOrigin) throws CatalogDBException; + OpenCGAResult resyncUserWithSyncedGroups(String user, List groupList, String authOrigin) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException; + + /** + * ADD or REMOVE user to list of provided groups. + * + * @param user User id. + * @param studyUids List of study uids. + * @param groupList List of group ids. + * @param action Update action [ADD, REMOVE] + * @return OpenCGAResult object. + * @throws CatalogDBException CatalogDBException + * @throws CatalogParameterException CatalogParameterException + * @throws CatalogAuthorizationException CatalogAuthorizationException + */ + OpenCGAResult updateUserFromGroups(String user, List studyUids, List groupList, + ParamUtils.AddRemoveAction action) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException; /** * Create the permission rule to the list of permission rules defined for the entry in the studyId. diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java index edab86e2f36..fff9a1ed3b3 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java @@ -522,8 +522,8 @@ private void addToMembersGroupInStudy(long studyId, List members, Client .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(userList)) { // We first add the member to the @members group in case they didn't belong already - dbAdaptorFactory.getCatalogStudyDBAdaptor().addUsersToGroup(studyId, CatalogAuthorizationManager.MEMBERS_GROUP, - userList, clientSession); + dbAdaptorFactory.getCatalogStudyDBAdaptor().addUsersToGroup(clientSession, studyId, CatalogAuthorizationManager.MEMBERS_GROUP, + userList); } } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptor.java index 0a3539870bb..34510e96868 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptor.java @@ -29,7 +29,6 @@ import org.opencb.commons.datastore.core.*; import org.opencb.commons.datastore.mongodb.MongoDBCollection; import org.opencb.commons.datastore.mongodb.MongoDBIterator; -import org.opencb.commons.utils.ListUtils; import org.opencb.opencga.catalog.db.api.*; import org.opencb.opencga.catalog.db.mongodb.converters.StudyConverter; import org.opencb.opencga.catalog.db.mongodb.converters.VariableSetConverter; @@ -40,6 +39,7 @@ import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.catalog.utils.UuidUtils; +import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.Configuration; import org.opencb.opencga.core.models.cohort.Cohort; @@ -482,8 +482,8 @@ public OpenCGAResult setUsersToGroup(long studyId, String groupId, List(result); } - void addUsersToGroup(long studyId, String groupId, List members, ClientSession clientSession) throws CatalogDBException { - if (ListUtils.isEmpty(members)) { + void addUsersToGroup(ClientSession clientSession, long studyId, String groupId, List members) throws CatalogDBException { + if (CollectionUtils.isEmpty(members)) { return; } @@ -491,7 +491,7 @@ void addUsersToGroup(long studyId, String groupId, List members, ClientS .append(PRIVATE_UID, studyId) .append(QueryParams.GROUP_ID.key(), groupId); Document update = new Document("$addToSet", new Document("groups.$.userIds", new Document("$each", members))); - DataResult result = studyCollection.update(clientSession, query, update, null); + DataResult result = studyCollection.update(clientSession, query, update, null); if (result.getNumMatches() != 1) { throw new CatalogDBException("Unable to add members to group " + groupId + ". The group does not exist."); @@ -500,7 +500,7 @@ void addUsersToGroup(long studyId, String groupId, List members, ClientS @Override public OpenCGAResult addUsersToGroup(long studyId, String groupId, List members) throws CatalogDBException { - if (ListUtils.isEmpty(members)) { + if (CollectionUtils.isEmpty(members)) { throw new CatalogDBException("List of 'members' is missing or empty."); } @@ -589,56 +589,145 @@ public OpenCGAResult syncGroup(long studyId, String groupId, Group.Sync s return new OpenCGAResult<>(studyCollection.update(query, updates, null)); } - // TODO: Make this transactional @Override public OpenCGAResult resyncUserWithSyncedGroups(String user, List groupList, String authOrigin) - throws CatalogDBException { + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { if (StringUtils.isEmpty(user)) { throw new CatalogDBException("Missing user field"); } - // 1. Take the user out from all synced groups - Document query = new Document() - .append(QueryParams.GROUPS.key(), new Document("$elemMatch", new Document() - .append("userIds", user) - .append("syncedFrom.authOrigin", authOrigin) - )); - Bson pull = Updates.pull("groups.$.userIds", user); - - // Pull the user while it still belongs to a synced group - QueryOptions multi = new QueryOptions(MongoDBCollection.MULTI, true); - DataResult update; - do { - update = studyCollection.update(query, pull, multi); - } while (update.getNumUpdated() > 0); - - // 2. Add user to all synced groups - if (groupList != null && groupList.size() > 0) { - // Add the user to all the synced groups matching - query = new Document() + return runTransaction(clientSession -> { + // 1. Take the user out from all synced groups + Document query = new Document() .append(QueryParams.GROUPS.key(), new Document("$elemMatch", new Document() - .append("userIds", new Document("$ne", user)) - .append("syncedFrom.remoteGroup", new Document("$in", groupList)) + .append("userIds", user) .append("syncedFrom.authOrigin", authOrigin) )); - Document push = new Document("$addToSet", new Document("groups.$.userIds", user)); + Bson pull = Updates.pull("groups.$.userIds", user); + + // Pull the user while it still belongs to a synced group + QueryOptions multi = new QueryOptions(MongoDBCollection.MULTI, true); + DataResult update; do { - update = studyCollection.update(query, push, multi); + update = studyCollection.update(clientSession, query, pull, multi); } while (update.getNumUpdated() > 0); - // We need to be updated with the internal @members group, so we fetch all the studies where the user has been added - // and attempt to add it to the each @members group - query = new Document() - .append(QueryParams.GROUP_USER_IDS.key(), user) - .append(QueryParams.GROUP_SYNCED_FROM_AUTH_ORIGIN.key(), authOrigin); - DataResult studyDataResult = studyCollection.find(query, studyConverter, new QueryOptions(QueryOptions.INCLUDE, - QueryParams.UID.key())); - for (Study study : studyDataResult.getResults()) { - addUsersToGroup(study.getUid(), "@members", Arrays.asList(user)); + // 2. Add user to all synced groups + if (groupList != null && groupList.size() > 0) { + // Add the user to all the synced groups matching + query = new Document() + .append(QueryParams.GROUPS.key(), new Document("$elemMatch", new Document() + .append("userIds", new Document("$ne", user)) + .append("syncedFrom.remoteGroup", new Document("$in", groupList)) + .append("syncedFrom.authOrigin", authOrigin) + )); + Document push = new Document("$addToSet", new Document("groups.$.userIds", user)); + do { + update = studyCollection.update(clientSession, query, push, multi); + } while (update.getNumUpdated() > 0); + + // We need to be updated with the internal @members group, so we fetch all the studies where the user has been added + // and attempt to add it to all @members groups + query = new Document() + .append(QueryParams.GROUP_USER_IDS.key(), user) + .append(QueryParams.GROUP_SYNCED_FROM_AUTH_ORIGIN.key(), authOrigin); + DataResult studyDataResult = studyCollection.find(clientSession, query, studyConverter, + new QueryOptions(QueryOptions.INCLUDE, QueryParams.UID.key())); + for (Study study : studyDataResult.getResults()) { + addUsersToGroup(clientSession, study.getUid(), "@members", Collections.singletonList(user)); + } } + + return OpenCGAResult.empty(Group.class); + }); + } + + @Override + public OpenCGAResult updateUserFromGroups(String user, List studyUids, List groupList, + ParamUtils.AddRemoveAction action) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + + if (StringUtils.isEmpty(user)) { + throw new CatalogParameterException("Missing user parameter"); + } + if (action == null) { + throw new CatalogParameterException("Missing action parameter"); + } + if (CollectionUtils.isEmpty(groupList)) { + throw new CatalogParameterException("Missing list of groups"); } - return OpenCGAResult.empty(); + // Fix group ids + List fixedGroupList = groupList.stream() + .map((group) -> { + if (!group.startsWith("@")) { + return "@" + group; + } + return group; + }) + .collect(Collectors.toList()); + + QueryOptions multi = new QueryOptions(MongoDBCollection.MULTI, true); + + return runTransaction(clientSession -> { + switch (action) { + case ADD: + Document addQuery = new Document() + // Do not apply changes in the admin study + .append(QueryParams.FQN.key(), new Document("$ne", ParamConstants.ADMIN_STUDY_FQN)) + // Add the user to all the groups matching the list + .append(QueryParams.GROUPS.key(), new Document("$elemMatch", new Document() + .append("userIds", new Document("$ne", user)) + .append("id", new Document("$in", fixedGroupList)) + )); + if (studyUids != null) { + addQuery.put(QueryParams.UID.key(), new Document("$in", studyUids)); + } + + Document push = new Document("$addToSet", new Document("groups.$.userIds", user)); + DataResult update; + do { + update = studyCollection.update(clientSession, addQuery, push, multi); + } while (update.getNumUpdated() > 0); + + // We need to be updated with the internal @members group, so we fetch all the studies where the user has been added + // and attempt to add it to all @members groups + addQuery = new Document() + .append(QueryParams.GROUP_USER_IDS.key(), user) + .append(QueryParams.GROUP_ID.key(), new Document("$in", fixedGroupList)); + if (studyUids != null) { + addQuery.put(QueryParams.UID.key(), new Document("$in", studyUids)); + } + + DataResult studyDataResult = studyCollection.find(clientSession, addQuery, studyConverter, + new QueryOptions(QueryOptions.INCLUDE, QueryParams.UID.key())); + for (Study study : studyDataResult.getResults()) { + addUsersToGroup(clientSession, study.getUid(), "@members", Collections.singletonList(user)); + } + break; + case REMOVE: + // 1. Take the user out from all groups + Document removeQuery = new Document() + .append(QueryParams.GROUPS.key(), new Document("$elemMatch", new Document() + .append("userIds", user) + .append("id", new Document("$in", fixedGroupList)) + )); + if (studyUids != null) { + removeQuery.put(QueryParams.UID.key(), new Document("$in", studyUids)); + } + Bson pull = Updates.pull("groups.$.userIds", user); + DataResult pullUpdate; + do { + pullUpdate = studyCollection.update(clientSession, removeQuery, pull, multi); + } while (pullUpdate.getNumUpdated() > 0); + + break; + default: + break; + } + + return OpenCGAResult.empty(Group.class); + }); } @Override diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java index 3bffa773511..69e1b0f14dc 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java @@ -3,7 +3,6 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.models.audit.AuditRecord; import org.opencb.opencga.catalog.auth.authorization.AuthorizationManager; import org.opencb.opencga.catalog.db.DBAdaptorFactory; import org.opencb.opencga.catalog.db.api.UserDBAdaptor; @@ -12,12 +11,18 @@ import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.config.Configuration; +import org.opencb.opencga.core.models.audit.AuditRecord; import org.opencb.opencga.core.models.common.Enums; +import org.opencb.opencga.core.models.study.Group; +import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.user.User; import org.opencb.opencga.core.response.OpenCGAResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.List; + public class AdminManager extends AbstractManager { private final CatalogIOManager catalogIOManager; @@ -72,4 +77,93 @@ public OpenCGAResult userSearch(Query query, QueryOptions options, String } } + public OpenCGAResult updateGroups(String userId, List studyIds, List groupIds, + ParamUtils.AddRemoveAction action, String token) throws CatalogException { + ObjectMap auditParams = new ObjectMap() + .append("userId", userId) + .append("studyIds", studyIds) + .append("groupIds", groupIds) + .append("action", action) + .append("token", token); + String authenticatedUser = catalogManager.getUserManager().getUserId(token); + try { + authorizationManager.checkIsInstallationAdministrator(authenticatedUser); + + // Check userId exists + Query query = new Query(UserDBAdaptor.QueryParams.ID.key(), userId); + OpenCGAResult count = userDBAdaptor.count(query); + if (count.getNumMatches() == 0) { + throw new CatalogException("User '" + userId + "' not found."); + } + + boolean membersPassed = groupIds.stream().anyMatch(g -> g.startsWith("@") + ? ParamConstants.MEMBERS_GROUP.equals(g) + : ParamConstants.MEMBERS_GROUP.equals("@" + g)); + if (action.equals(ParamUtils.AddRemoveAction.REMOVE) && membersPassed) { + // TODO: If @members is added for REMOVAL, we should also automatically remove all permissions. + throw new CatalogException("Operation not supported for '@members' group."); + } + + // Check studyIds exist + List studies = catalogManager.getStudyManager().resolveIds(studyIds, authenticatedUser); + List studyUids = new ArrayList<>(studies.size()); + for (Study study : studies) { + if (ParamConstants.ADMIN_STUDY_FQN.equals(study.getFqn())) { + throw new CatalogException("Cannot perform this operation on administration study '" + study.getFqn() + "'."); + } + studyUids.add(study.getUid()); + } + + OpenCGAResult result = studyDBAdaptor.updateUserFromGroups(userId, studyUids, groupIds, action); + + auditManager.audit(userId, Enums.Action.UPDATE_USERS_FROM_STUDY_GROUP, Enums.Resource.STUDY, "", "", "", "", auditParams, + new AuditRecord.Status(AuditRecord.Status.Result.SUCCESS)); + return result; + } catch (CatalogException e) { + auditManager.audit(userId, Enums.Action.UPDATE_USERS_FROM_STUDY_GROUP, Enums.Resource.STUDY, "", "", "", "", auditParams, + new AuditRecord.Status(AuditRecord.Status.Result.ERROR, e.getError())); + throw e; + } + } + + /** + * Add a user to all the remote groups he/she may belong for a particular authentication origin. + * Also remove the user from other groups he/she may have been associated in the past for the same authentication origin. + * + * @param userId User id. + * @param remoteGroupIds List of group ids the user must be associated with. + * @param authenticationOriginId The authentication origin the groups must be associated to. + * @param token Administrator token. + * @return An empty OpenCGAResult. + * @throws CatalogException If the token is invalid or belongs to a user other thant the Administrator and if userId does not exist. + */ + public OpenCGAResult syncRemoteGroups(String userId, List remoteGroupIds, + String authenticationOriginId, String token) throws CatalogException { + ObjectMap auditParams = new ObjectMap() + .append("userId", userId) + .append("remoteGroupIds", remoteGroupIds) + .append("authenticationOriginId", authenticationOriginId) + .append("token", token); + String authenticatedUser = catalogManager.getUserManager().getUserId(token); + try { + authorizationManager.checkIsInstallationAdministrator(authenticatedUser); + + // Check userId exists + Query query = new Query(UserDBAdaptor.QueryParams.ID.key(), userId); + OpenCGAResult count = userDBAdaptor.count(query); + if (count.getNumMatches() == 0) { + throw new CatalogException("User '" + userId + "' not found."); + } + OpenCGAResult result = studyDBAdaptor.resyncUserWithSyncedGroups(userId, remoteGroupIds, authenticationOriginId); + + auditManager.audit(userId, Enums.Action.UPDATE_USERS_FROM_STUDY_GROUP, Enums.Resource.STUDY, "", "", "", "", auditParams, + new AuditRecord.Status(AuditRecord.Status.Result.SUCCESS)); + return result; + } catch (CatalogException e) { + auditManager.audit(userId, Enums.Action.UPDATE_USERS_FROM_STUDY_GROUP, Enums.Resource.STUDY, "", "", "", "", auditParams, + new AuditRecord.Status(AuditRecord.Status.Result.ERROR, e.getError())); + throw e; + } + } + } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptorTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptorTest.java index f8c7b20e550..5791005394c 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptorTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/StudyMongoDBAdaptorTest.java @@ -26,6 +26,7 @@ import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; +import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.core.models.study.*; import org.opencb.opencga.core.testclassification.duration.MediumTests; @@ -208,7 +209,7 @@ public void removeUsersFromAllGroups() throws CatalogDBException, CatalogParamet } @Test - public void resyncUserWithSyncedGroups() throws CatalogDBException { + public void resyncUserWithSyncedGroups() throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { // We create synced groups and not synced groups in study 5 Group group = new Group("@notSyncedGroup", Arrays.asList("user1", "user2", "user3")); catalogStudyDBAdaptor.createGroup(5L, group); @@ -275,4 +276,74 @@ public void resyncUserWithSyncedGroups() throws CatalogDBException { .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup2", "@syncedGroup3", "@members"))); } + @Test + public void updateUserToGroups() throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + // We create synced groups and not synced groups in study 5 + Group group = new Group("@notSyncedGroup", Collections.emptyList()); + catalogStudyDBAdaptor.createGroup(5L, group); + group.setId("@syncedGroup1"); + group.setSyncedFrom(new Group.Sync("origin1", "@syncedGroup1")); + catalogStudyDBAdaptor.createGroup(5L, group); + group.setId("@syncedGroup2"); + group.setSyncedFrom(new Group.Sync("origin1", "@syncedGroup2")); + catalogStudyDBAdaptor.createGroup(5L, group); + group.setId("@syncedGroup3"); + group.setSyncedFrom(new Group.Sync("otherOrigin", "@syncedGroup3")); + catalogStudyDBAdaptor.createGroup(5L, group); + + // We create the same synced groups and not synced groups in study 9 + group = new Group("@notSyncedGroup", Collections.emptyList()); + catalogStudyDBAdaptor.createGroup(9L, group); + group.setId("@syncedGroup1"); + group.setSyncedFrom(new Group.Sync("origin1", "@syncedGroup1")); + catalogStudyDBAdaptor.createGroup(9L, group); + group.setId("@syncedGroup2"); + group.setSyncedFrom(new Group.Sync("origin1", "@syncedGroup2")); + catalogStudyDBAdaptor.createGroup(9L, group); + group.setId("@syncedGroup3"); + group.setSyncedFrom(new Group.Sync("otherOrigin", "@syncedGroup3")); + catalogStudyDBAdaptor.createGroup(9L, group); + group = new Group("@otherNotSyncedGroup", Collections.emptyList()); + catalogStudyDBAdaptor.createGroup(9L, group); + + catalogStudyDBAdaptor.updateUserFromGroups("user2", null, Arrays.asList("syncedGroup1", "notSyncedGroup"), ParamUtils.AddRemoveAction.ADD); + DataResult groupsStudy1 = catalogStudyDBAdaptor.getGroup(5L, null, Arrays.asList("user2")); + DataResult groupsStudy2 = catalogStudyDBAdaptor.getGroup(9L, null, Arrays.asList("user2")); + assertEquals(groupsStudy1.getNumResults(), groupsStudy2.getNumResults()); + assertEquals(3, groupsStudy1.getNumResults()); + assertTrue(groupsStudy1.getResults().stream().map(Group::getId).collect(Collectors.toList()) + .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup1", "@members"))); + assertEquals(3, groupsStudy2.getNumResults()); + assertTrue(groupsStudy2.getResults().stream().map(Group::getId).collect(Collectors.toList()) + .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup1", "@members"))); + + catalogStudyDBAdaptor.updateUserFromGroups("user2", null, Arrays.asList("syncedGroup1", "notSyncedGroup"), ParamUtils.AddRemoveAction.REMOVE); + groupsStudy1 = catalogStudyDBAdaptor.getGroup(5L, null, Arrays.asList("user2")); + groupsStudy2 = catalogStudyDBAdaptor.getGroup(9L, null, Arrays.asList("user2")); + assertEquals(1, groupsStudy1.getNumResults()); + assertEquals(1, groupsStudy2.getNumResults()); + assertEquals("@members", groupsStudy1.first().getId()); + assertEquals("@members", groupsStudy2.first().getId()); + + catalogStudyDBAdaptor.updateUserFromGroups("user2", Arrays.asList(5L, 9L), Arrays.asList("syncedGroup1", "notSyncedGroup"), ParamUtils.AddRemoveAction.ADD); + groupsStudy1 = catalogStudyDBAdaptor.getGroup(5L, null, Arrays.asList("user2")); + groupsStudy2 = catalogStudyDBAdaptor.getGroup(9L, null, Arrays.asList("user2")); + assertEquals(groupsStudy1.getNumResults(), groupsStudy2.getNumResults()); + assertEquals(3, groupsStudy1.getNumResults()); + assertTrue(groupsStudy1.getResults().stream().map(Group::getId).collect(Collectors.toList()) + .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup1", "@members"))); + assertEquals(3, groupsStudy2.getNumResults()); + assertTrue(groupsStudy2.getResults().stream().map(Group::getId).collect(Collectors.toList()) + .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup1", "@members"))); + + catalogStudyDBAdaptor.updateUserFromGroups("user2", Collections.singletonList(5L), Arrays.asList("syncedGroup1", "notSyncedGroup"), ParamUtils.AddRemoveAction.REMOVE); + groupsStudy1 = catalogStudyDBAdaptor.getGroup(5L, null, Arrays.asList("user2")); + groupsStudy2 = catalogStudyDBAdaptor.getGroup(9L, null, Arrays.asList("user2")); + assertEquals(1, groupsStudy1.getNumResults()); + assertEquals("@members", groupsStudy1.first().getId()); + assertEquals(3, groupsStudy2.getNumResults()); + assertTrue(groupsStudy2.getResults().stream().map(Group::getId).collect(Collectors.toList()) + .containsAll(Arrays.asList("@notSyncedGroup", "@syncedGroup1", "@members"))); + } + } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/admin/UserUpdateGroup.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/admin/UserUpdateGroup.java new file mode 100644 index 00000000000..ce05d03ccc2 --- /dev/null +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/admin/UserUpdateGroup.java @@ -0,0 +1,43 @@ +package org.opencb.opencga.core.models.admin; + +import java.util.List; + +public class UserUpdateGroup { + private List studyIds; + private List groupIds; + + public UserUpdateGroup() { + } + + public UserUpdateGroup(List studyIds, List groupIds) { + this.studyIds = studyIds; + this.groupIds = groupIds; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("UserUpdateGroup{"); + sb.append("studyIds=").append(studyIds); + sb.append(", groupIds=").append(groupIds); + sb.append('}'); + return sb.toString(); + } + + public List getStudyIds() { + return studyIds; + } + + public UserUpdateGroup setStudyIds(List studyIds) { + this.studyIds = studyIds; + return this; + } + + public List getGroupIds() { + return groupIds; + } + + public UserUpdateGroup setGroupIds(List groupIds) { + this.groupIds = groupIds; + return this; + } +} diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/admin/AdminWSServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/admin/AdminWSServer.java index f07c7ad3ecb..835c9632af1 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/admin/AdminWSServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/admin/AdminWSServer.java @@ -16,8 +16,6 @@ package org.opencb.opencga.server.rest.admin; -import org.opencb.opencga.core.models.user.AuthenticationResponse; -import org.opencb.opencga.core.tools.annotations.*; import org.apache.commons.lang3.StringUtils; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; @@ -31,6 +29,7 @@ import org.opencb.opencga.analysis.sample.SampleIndexTask; import org.opencb.opencga.catalog.db.api.MetaDBAdaptor; import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.exceptions.VersionException; import org.opencb.opencga.core.models.admin.*; @@ -39,8 +38,10 @@ import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Group; import org.opencb.opencga.core.models.user.Account; +import org.opencb.opencga.core.models.user.AuthenticationResponse; import org.opencb.opencga.core.models.user.User; import org.opencb.opencga.core.response.OpenCGAResult; +import org.opencb.opencga.core.tools.annotations.*; import org.opencb.opencga.server.rest.OpenCGAWSServer; import javax.servlet.http.HttpServletRequest; @@ -153,6 +154,22 @@ public Response remoteImport(@ApiParam(value = "JSON containing the parameters", } } + @POST + @Path("/users/{user}/groups/update") + @Consumes(MediaType.APPLICATION_JSON) + @ApiOperation(value = "Add or remove users from existing groups", response = Group.class) + public Response updateGroups( + @ApiParam(value = ParamConstants.USER_DESCRIPTION) @PathParam(ParamConstants.USER) String user, + @ApiParam(value = "Action to be performed: ADD or REMOVE user to/from groups", allowableValues = "ADD,REMOVE", + defaultValue = "ADD") @QueryParam("action") ParamUtils.AddRemoveAction action, + @ApiParam(value = "JSON containing the parameters", required = true) UserUpdateGroup updateParams) { + try { + return createOkResponse(catalogManager.getAdminManager().updateGroups(user, updateParams.getStudyIds(), updateParams.getGroupIds(), action, token)); + } catch (Exception e) { + return createErrorResponse(e); + } + } + @POST @Path("/users/sync") @ApiOperation(value = "Synchronise a group of users from an authentication origin with a group in a study from catalog", response = Group.class, From 1340a9b4b8949a883cb8d91a4665fe768c8248d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 12 May 2023 09:38:08 +0100 Subject: [PATCH 031/354] docker: Add yq to opencga-base. #TASK-4192 --- opencga-app/app/cloud/docker/opencga-base/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opencga-app/app/cloud/docker/opencga-base/Dockerfile b/opencga-app/app/cloud/docker/opencga-base/Dockerfile index 3d2c1e4db7c..5132720657c 100644 --- a/opencga-app/app/cloud/docker/opencga-base/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-base/Dockerfile @@ -16,6 +16,8 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpa echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list && \ apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io mongodb-org-shell && \ rm -rf /var/lib/apt/lists/* && \ + wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && \ + chmod +x /usr/local/bin/yq && \ adduser --disabled-password --uid 1001 opencga ## Run Docker images as non root From 1cbf0f66177f4116348be5294e2021da39078ca1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 12 May 2023 18:24:54 +0200 Subject: [PATCH 032/354] Port Patch v1.6.1 #TASK-4371 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 9c2c2562870..10184c4d1ae 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 79682c8727f..4ac72115c89 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index c9cc7490a76..1bded6a828a 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 616d1d68e08..cc666ed2646 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index e831de167b0..88157b769f9 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b677e8ff1dc..f8a759696b8 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 39f2be6312e..6bcfe1229a1 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index b873573e930..146bfdcb0f1 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index a6ee7b85941..762d12d1730 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 372b65863eb..611100fea78 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index bf4fdf2917e..830a04cf6c9 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 6c2f0b54bd5..8aefe17d973 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 2157ccc69e5..5da87ce97ea 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index b4685ef3354..938346bf05a 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 0e6ff804ca8..606c47dea2b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 627dc2bdd3c..320691d8782 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 20b6e62754f..da7ae969c7d 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index aba64ebc3b7..4a66ba429de 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index c606422a941..8276f52ef48 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 402cefdbd2e..08a12d4c1e6 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index fc1a5f52f8b..db0b212b7ee 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.1 + 2.9.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From 3d948d83c56b88ab56ec9126e2f4030c14033055 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 15 May 2023 11:27:37 +0200 Subject: [PATCH 033/354] cicd: References to develop updated #TASK-4163 --- .github/workflows/task.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index 52394fd2fd5..a73d0c10c64 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -8,7 +8,7 @@ on: #WARNING Develop branch needed for prod jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@TASK-4163 + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' From 283042643c6574bcb1441361beb3b00d195a4754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Mon, 15 May 2023 18:47:20 +0100 Subject: [PATCH 034/354] storage: Use default datarelease by version instead of "latest". #TASK-4332 --- .../core/cellbase/CellBaseValidator.java | 50 +++++++++++++++---- .../storage/core/utils/CellBaseUtilsTest.java | 3 +- pom.xml | 2 +- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index a2c5da2dc72..67cddd88ef1 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Optional; +import java.util.stream.Collectors; public class CellBaseValidator { @@ -94,17 +94,33 @@ public CellBaseConfiguration getCellBaseConfiguration() { return new CellBaseConfiguration(getURL(), getVersion(), getDataRelease(), getToken()); } - public String getLatestActiveDataRelease() throws IOException { + public String getDefaultDataRelease() throws IOException { if (supportsDataRelease()) { - Optional dataRelease = cellBaseClient.getMetaClient().dataReleases() - .allResults() - .stream() - .filter(DataRelease::isActive) - .max(Comparator.comparing(DataRelease::getDate)); - if (!dataRelease.isPresent()) { + List dataReleases = cellBaseClient.getMetaClient().dataReleases() + .allResults(); + DataRelease dataRelease = null; + if (supportsDataReleaseActiveByDefaultIn()) { + // ActiveByDefault versions are stored in form `v.` , i.e. v5.5 , v5.7, ... + String majorMinor = "v" + getVersionFromServerMajorMinor(); + List drs = dataReleases + .stream() + .filter(dr -> dr.getActiveByDefaultIn() != null && dr.getActiveByDefaultIn().contains(majorMinor)) + .collect(Collectors.toList()); + if (drs.size() == 1) { + dataRelease = drs.get(0); + } else if (drs.size() > 1) { + throw new IllegalArgumentException("More than one default active data releases found on cellbase " + this); + } + } else { + dataRelease = dataReleases + .stream() + .filter(DataRelease::isActive) + .max(Comparator.comparing(DataRelease::getDate)).orElse(null); + } + if (dataRelease == null) { throw new IllegalArgumentException("No active data releases found on cellbase " + this); } else { - return String.valueOf(dataRelease.get().getRelease()); + return String.valueOf(dataRelease.getRelease()); } } else { return null; @@ -149,7 +165,7 @@ public CellBaseConfiguration validate(boolean autoComplete) throws IOException { String dataRelease = getDataRelease(); if (dataRelease == null) { if (autoComplete) { - cellBaseConfiguration.setDataRelease(getLatestActiveDataRelease()); + cellBaseConfiguration.setDataRelease(getDefaultDataRelease()); } else { throw new IllegalArgumentException("Missing DataRelease for cellbase " + "url: '" + getURL() + "'" @@ -202,10 +218,19 @@ public boolean supportsDataRelease() throws IOException { } public static boolean supportsDataRelease(String serverVersion) { - // Data Release support starts at versio 5.1.0 + // Data Release support starts at version 5.1.0 return VersionUtils.isMinVersion("5.1.0", serverVersion); } + public boolean supportsDataReleaseActiveByDefaultIn() throws IOException { + return supportsDataReleaseActiveByDefaultIn(getVersionFromServer()); + } + + public static boolean supportsDataReleaseActiveByDefaultIn(String serverVersion) { + // Data Release Default Active In Version support starts at version 5.5.0 , TASK-4157 + return VersionUtils.isMinVersion("5.5.0", serverVersion); + } + public String getVersionFromServerMajor() throws IOException { return major(getVersionFromServer()); } @@ -217,10 +242,13 @@ public String getVersionFromServerMajorMinor() throws IOException { } private static String major(String version) { +// return String.valueOf(new VersionUtils.Version(version).getMajor()); return version.split("\\.")[0]; } private static String majorMinor(String version) { +// VersionUtils.Version v = new VersionUtils.Version(version); +// return v.getMajor() + "." + v.getMinor(); String[] split = version.split("\\."); if (split.length > 1) { version = split[0] + "." + split[1]; diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java index ccb8106a2c0..1f679ace47e 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java @@ -67,7 +67,8 @@ public static List data() { new Object[]{"https://ws.zettagenomics.com/cellbase/", "v5.1", "grch38", "1"}, new Object[]{"https://ws.zettagenomics.com/cellbase/", "v5.1", "grch38", "2"}, new Object[]{"https://uk.ws.zettagenomics.com/cellbase/", "v5.2", "grch37", "1"}, - new Object[]{"https://uk.ws.zettagenomics.com/cellbase/", "v5.2", "grch38", "2"}); + new Object[]{"https://uk.ws.zettagenomics.com/cellbase/", "v5.2", "grch38", "2"}, + new Object[]{"https://uk.ws.zettagenomics.com/cellbase/", "v5.4", "grch38", "3"}); } @Parameter(0) diff --git a/pom.xml b/pom.xml index db0b212b7ee..c65e55ff724 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 2.8.1 2.8.1 - 5.4.0 + 5.5.0-SNAPSHOT 2.8.0 4.8.0 2.8.1 From 6919928ae410d17038468c0f769ab50126ed4f47 Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 16 May 2023 10:24:28 +0200 Subject: [PATCH 035/354] catalog: fail if user is passing administration study, #TASK-4359 --- .../opencb/opencga/catalog/managers/AdminManager.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java index 69e1b0f14dc..b57426ebf04 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/AdminManager.java @@ -1,5 +1,6 @@ package org.opencb.opencga.catalog.managers; +import org.apache.commons.collections4.CollectionUtils; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; @@ -109,9 +110,13 @@ public OpenCGAResult updateGroups(String userId, List studyIds, L List studyUids = new ArrayList<>(studies.size()); for (Study study : studies) { if (ParamConstants.ADMIN_STUDY_FQN.equals(study.getFqn())) { - throw new CatalogException("Cannot perform this operation on administration study '" + study.getFqn() + "'."); + if (CollectionUtils.isNotEmpty(studyIds)) { + // Only fail if the user is passing the list of study ids + throw new CatalogException("Cannot perform this operation on administration study '" + study.getFqn() + "'."); + } + } else { + studyUids.add(study.getUid()); } - studyUids.add(study.getUid()); } OpenCGAResult result = studyDBAdaptor.updateUserFromGroups(userId, studyUids, groupIds, action); From dc8b46b1008eead0fbafb116a90671f7212ee07b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 19 May 2023 14:40:08 +0100 Subject: [PATCH 036/354] storage: Allow working with pre-release cellbase instances. #TASK-4332 --- .../core/cellbase/CellBaseValidator.java | 2 +- .../opencga/core/common/VersionUtils.java | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 67cddd88ef1..21f5c79fecd 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -228,7 +228,7 @@ public boolean supportsDataReleaseActiveByDefaultIn() throws IOException { public static boolean supportsDataReleaseActiveByDefaultIn(String serverVersion) { // Data Release Default Active In Version support starts at version 5.5.0 , TASK-4157 - return VersionUtils.isMinVersion("5.5.0", serverVersion); + return VersionUtils.isMinVersion("5.5.0", serverVersion, true); } public String getVersionFromServerMajor() throws IOException { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java index fb70ed94cb9..4e32c6ada32 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java @@ -13,7 +13,11 @@ public static List order(List versions) { } public static boolean isMinVersion(String minVersion, String version) { - return new Version(minVersion).compareTo(new Version(version)) <= 0; + return isMinVersion(minVersion, version, false); + } + + public static boolean isMinVersion(String minVersion, String version, boolean ignorePreReleaseVersioning) { + return new Version(minVersion).compareTo(new Version(version), ignorePreReleaseVersioning) <= 0; } public static class Version implements Comparable { @@ -48,6 +52,12 @@ public static class Version implements Comparable { return o1.other.compareTo(o2.other); }); + public static final Comparator COMPARATOR_NO_PR = Comparator + .comparingInt(Version::getMajor) + .thenComparingInt(Version::getMinor) + .thenComparingInt(Version::getPatch) + .thenComparingInt(Version::getRepatch); + public Version(String version) { String[] split = StringUtils.split(version, ".", 4); major = Integer.parseInt(split[0]); @@ -81,6 +91,14 @@ public int compareTo(Version o) { return COMPARATOR.compare(this, o); } + public int compareTo(Version o, boolean ignorePreReleaseVersioning) { + if (ignorePreReleaseVersioning) { + return COMPARATOR_NO_PR.compare(this, o); + } else { + return COMPARATOR.compare(this, o); + } + } + public int getMajor() { return major; } From 88e668a74603bb1af2c1e52c963cbf66fe8718e2 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 22 May 2023 15:19:13 +0200 Subject: [PATCH 037/354] cicd: New check-junit-test workflow #TASK-4445 --- .github/workflows/check-junit-test.yml | 41 +++++++++++++++++++ .github/workflows/scripts/get_profiles.sh | 30 ++++++++++++++ .github/workflows/test-long-test-analysis.yml | 14 ------- 3 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/check-junit-test.yml create mode 100755 .github/workflows/scripts/get_profiles.sh delete mode 100644 .github/workflows/test-long-test-analysis.yml diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml new file mode 100644 index 00000000000..58f71978a27 --- /dev/null +++ b/.github/workflows/check-junit-test.yml @@ -0,0 +1,41 @@ +name: Check junits + +on: + workflow_dispatch: + inputs: + short_tests: + type: boolean + required: false + default: true + medium_tests: + type: boolean + required: false + default: false + long_tests: + type: boolean + required: false + default: false + mvn_opts: + type: string + required: false + default: "" + +jobs: + test: + name: Test JUnit + runs-on: ubuntu-22.04 + steps: + - name: Building string profiles to run + id: get_profiles + run: | + if [ -f "./.github/workflows/scripts/get_profiles.sh" ]; then + chmod +x ./.github/workflows/scripts/get_profiles.sh + echo "profiles=$(./.github/workflows/scripts/get_profiles.sh ${{ inputs.short_tests }} ${{ inputs.medium_tests }} ${{ inputs.long_tests }})" >> $GITHUB_OUTPUT + fi + - name: Building string profiles to run + uses: ./.github/workflows/test-analysis.yml + secrets: inherit + with: + test_profile: ${{ steps.get_profiles.outputs.profiles }} + report_context: development + mvn_opts: ${{ inputs.mvn_opts }} diff --git a/.github/workflows/scripts/get_profiles.sh b/.github/workflows/scripts/get_profiles.sh new file mode 100755 index 00000000000..fc205968984 --- /dev/null +++ b/.github/workflows/scripts/get_profiles.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + echo "The arguments must be 3" + exit 1 +fi +PROFILE="" + +if [ $1 == "true" ]; then + PROFILE="${PROFILE}runShortTests," +fi +if [ $2 == "true" ]; then + PROFILE="${PROFILE}runMediumTests," +fi +if [ $3 == "true" ]; then + PROFILE="${PROFILE}runLongTests" +fi + +if [[ "${PROFILE}" == *"," ]]; then + PROFILE="${PROFILE%?}" +fi + +if [ -z "${PROFILE}" ]; then + echo "There must be at least one active profile" + exit 1 +fi + +echo "${PROFILE}" +exit 0 + diff --git a/.github/workflows/test-long-test-analysis.yml b/.github/workflows/test-long-test-analysis.yml deleted file mode 100644 index fe516b75a98..00000000000 --- a/.github/workflows/test-long-test-analysis.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: LONG TEST ANALYSIS - -on: - push: - branches: - - TASK-4149 - -jobs: - test: - uses: ./.github/workflows/test-analysis.yml - secrets: inherit - with: - test_profile: runLongTests,runMediumTests,runShortTests - report_context: development From cf84cc91e5573393cb1c65a0b04cdf85cb36e2bb Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 22 May 2023 15:23:33 +0200 Subject: [PATCH 038/354] cicd: Change test-analysis to adapt for test junit #TASK-4445 --- .github/workflows/test-analysis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index d01fb65bd62..ca38d16c6b3 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -8,6 +8,10 @@ on: report_context: type: string required: true + mvn_opts: + type: string + required: false + default: "" secrets: SONAR_TOKEN: required: true @@ -77,7 +81,7 @@ jobs: mongodb-version: 6.0 mongodb-replica-set: rs-test - name: Run Junit tests - run: mvn -B verify surefire-report:report -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' + run: mvn -B verify surefire-report:report -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' ${{ inputs.mvn_opts }} - name: Upload result dir uses: actions/upload-artifact@v3 with: From df8382a362780cc7d96065ede6e869c0feb6f2ef Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 11:08:34 +0200 Subject: [PATCH 039/354] pom: Fix dependencies versions --- .github/workflows/check-junit-test.yml | 2 +- pom.xml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 58f71978a27..a75e011ebd9 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -34,8 +34,8 @@ jobs: fi - name: Building string profiles to run uses: ./.github/workflows/test-analysis.yml - secrets: inherit with: test_profile: ${{ steps.get_profiles.outputs.profiles }} report_context: development mvn_opts: ${{ inputs.mvn_opts }} + secrets: inherit diff --git a/pom.xml b/pom.xml index c65e55ff724..437d0956bf5 100644 --- a/pom.xml +++ b/pom.xml @@ -42,12 +42,12 @@ - 2.8.1 - 2.8.1 + 2.9.0-dev + 2.9.0-dev 5.5.0-SNAPSHOT - 2.8.0 - 4.8.0 - 2.8.1 + 2.9.0-SNAPSHOT + 4.9.0-SNAPSHOT + 2.9.0-SNAPSHOT 0.2.0 2.11.4 From ff1510cd48966aa005b3db61ea7ff204c8047d5b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:01:17 +0200 Subject: [PATCH 040/354] cicd:secrets error #TASK-4445 --- .github/workflows/check-junit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index a75e011ebd9..79edaad0923 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -38,4 +38,4 @@ jobs: test_profile: ${{ steps.get_profiles.outputs.profiles }} report_context: development mvn_opts: ${{ inputs.mvn_opts }} - secrets: inherit + secrets: inherit \ No newline at end of file From 86c583fc710b559427549506354ecaff46e61896 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:12:36 +0200 Subject: [PATCH 041/354] cicd:Add needed checkout step #TASK-4445 --- .github/workflows/check-junit-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 79edaad0923..4c56f2c2702 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -25,6 +25,9 @@ jobs: name: Test JUnit runs-on: ubuntu-22.04 steps: + - uses: actions/checkout@v3 + with: + fetch-depth: '10' - name: Building string profiles to run id: get_profiles run: | From 7aae0542e9eacd68bf62592376b9f8b67e2019b2 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:28:13 +0200 Subject: [PATCH 042/354] cicd: Refactor in two jobs #TASK-4445 --- .github/workflows/check-junit-test.yml | 22 +++++++++++++--------- .github/workflows/develop.yml | 8 ++++---- .github/workflows/docker-aws-emr.yml | 4 ++-- .github/workflows/docker-tools.yml | 4 ++-- .github/workflows/pull-request-merge.yml | 2 +- .github/workflows/release.yml | 12 ++++++------ 6 files changed, 28 insertions(+), 24 deletions(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 4c56f2c2702..50e52b894f0 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -21,24 +21,28 @@ on: default: "" jobs: - test: + get_profiles: name: Test JUnit runs-on: ubuntu-22.04 + outputs: + profile: ${{ steps.getter.outputs.profiles }} steps: - uses: actions/checkout@v3 with: fetch-depth: '10' - name: Building string profiles to run - id: get_profiles + id: getter run: | if [ -f "./.github/workflows/scripts/get_profiles.sh" ]; then chmod +x ./.github/workflows/scripts/get_profiles.sh echo "profiles=$(./.github/workflows/scripts/get_profiles.sh ${{ inputs.short_tests }} ${{ inputs.medium_tests }} ${{ inputs.long_tests }})" >> $GITHUB_OUTPUT fi - - name: Building string profiles to run - uses: ./.github/workflows/test-analysis.yml - with: - test_profile: ${{ steps.get_profiles.outputs.profiles }} - report_context: development - mvn_opts: ${{ inputs.mvn_opts }} - secrets: inherit \ No newline at end of file + + test: + needs: get_profiles + uses: ./.github/workflows/test-analysis.yml + with: + test_profile: ${{ needs.get_profiles.outputs.profiles }} + report_context: development + mvn_opts: ${{ inputs.mvn_opts }} + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index a6d37f1e39c..a6b61a44ee2 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -9,12 +9,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} @@ -29,14 +29,14 @@ jobs: report_context: development deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init diff --git a/.github/workflows/docker-aws-emr.yml b/.github/workflows/docker-aws-emr.yml index 98157167216..bf1c8571ca8 100644 --- a/.github/workflows/docker-aws-emr.yml +++ b/.github/workflows/docker-aws-emr.yml @@ -8,12 +8,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,emr6.1 -Dopencga.war.name=opencga deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init diff --git a/.github/workflows/docker-tools.yml b/.github/workflows/docker-tools.yml index 32e938c5a2d..6f61637e0e5 100644 --- a/.github/workflows/docker-tools.yml +++ b/.github/workflows/docker-tools.yml @@ -12,12 +12,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index ff9fbdc3c1e..4b1c43c682b 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -10,7 +10,7 @@ on: jobs: delete-docker: - uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@develop with: cli: python3 ./build/cloud/docker/docker-build.py delete --images base --tag ${{ github.head_ref }} secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cdad8273a32..5479fc5bb4c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,12 +8,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} @@ -28,14 +28,14 @@ jobs: report_context: xetabase deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init @@ -44,7 +44,7 @@ jobs: deploy-python: - uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@develop needs: test with: cli: ./clients/python/python-build.sh push @@ -52,7 +52,7 @@ jobs: secrets: inherit release: - uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop needs: test with: artifact: build-folder From 9e8b180b4196f5e975ae60811877a8f761807b88 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:33:52 +0200 Subject: [PATCH 043/354] cicd: Adding log #TASK-4445 --- .github/workflows/check-junit-test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 50e52b894f0..f4113c35506 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -38,6 +38,11 @@ jobs: echo "profiles=$(./.github/workflows/scripts/get_profiles.sh ${{ inputs.short_tests }} ${{ inputs.medium_tests }} ${{ inputs.long_tests }})" >> $GITHUB_OUTPUT fi + echo_log: + needs: get_profiles + runs-on: ubuntu-22.04 + run: echo "Executing testing profiles -> ${{ needs.get_profiles.outputs.profiles }}" + test: needs: get_profiles uses: ./.github/workflows/test-analysis.yml From a051044b1ba974b82af65453ad013eb8f9c0ca46 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:36:33 +0200 Subject: [PATCH 044/354] cicd: Adding log #TASK-4445 --- .github/workflows/check-junit-test.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index f4113c35506..809ce259828 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -41,10 +41,13 @@ jobs: echo_log: needs: get_profiles runs-on: ubuntu-22.04 - run: echo "Executing testing profiles -> ${{ needs.get_profiles.outputs.profiles }}" + steps: + - name: Echo profiles + id: log + run: echo "Executing testing profiles -> ${{ needs.get_profiles.outputs.profiles }}" test: - needs: get_profiles + needs: [ get_profiles, echo_log ] uses: ./.github/workflows/test-analysis.yml with: test_profile: ${{ needs.get_profiles.outputs.profiles }} From b697f89df8049079691aa41754117a2226e33302 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 May 2023 12:39:47 +0200 Subject: [PATCH 045/354] cicd: Adding log #TASK-4445 --- .github/workflows/check-junit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 809ce259828..f953642c9eb 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -25,7 +25,7 @@ jobs: name: Test JUnit runs-on: ubuntu-22.04 outputs: - profile: ${{ steps.getter.outputs.profiles }} + profiles: ${{ steps.getter.outputs.profiles }} steps: - uses: actions/checkout@v3 with: From 7aa5f59dee3e475064556b437376cad63f707202 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 24 May 2023 12:04:45 +0200 Subject: [PATCH 046/354] CICD: fix yml to release tar.gz related with TASK-4406 --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5479fc5bb4c..ecd3d4152cf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,9 +53,9 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop - needs: test - with: - artifact: build-folder - file: | - opencga-client-${{ needs.build.outputs.version }}.tar.gz - clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz + needs: [ build,test ] + with: + artifact: build-folder + file: | + opencga-client-${{ needs.build.outputs.version }}.tar.gz + clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz From 5bb318a2930ae2b82763c77a35da86899e29499e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 16:41:46 +0200 Subject: [PATCH 047/354] Prepare release 2.9.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 10 +++++----- 21 files changed, 25 insertions(+), 25 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 10184c4d1ae..506063fcbe0 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 4ac72115c89..84aec45ed6e 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 1bded6a828a..b2cf9e69e45 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index cc666ed2646..43b81784554 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 88157b769f9..1c6f99c9da1 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index f8a759696b8..095118e29c5 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 6bcfe1229a1..9ecb60f987d 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 146bfdcb0f1..db21a3db9b2 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 762d12d1730..61e9c98f2d4 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 611100fea78..4c4ad72fb26 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 830a04cf6c9..41d5ba608fe 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 8aefe17d973..3ca2d7747df 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 5da87ce97ea..cc833ae07e9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 938346bf05a..6cf4c54ee36 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 606c47dea2b..a11f5ffaade 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 320691d8782..8a5a59b0204 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index da7ae969c7d..d83fe46817f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 4a66ba429de..312e5ee8922 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 8276f52ef48..06934f49948 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 08a12d4c1e6..34ca2e5c727 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/pom.xml b/pom.xml index 437d0956bf5..f3212884ec9 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -44,10 +44,10 @@ 2.9.0-dev 2.9.0-dev - 5.5.0-SNAPSHOT - 2.9.0-SNAPSHOT - 4.9.0-SNAPSHOT - 2.9.0-SNAPSHOT + 5.5.0 + 2.9.0 + 4.9.0 + 2.9.0 0.2.0 2.11.4 From 6c24152eb724d8b5310ab2a01108a298810319c6 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 16:51:04 +0200 Subject: [PATCH 048/354] Prepare release 2.9.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 10 +++++----- 21 files changed, 25 insertions(+), 25 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 10184c4d1ae..506063fcbe0 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 4ac72115c89..84aec45ed6e 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 1bded6a828a..b2cf9e69e45 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index cc666ed2646..43b81784554 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 88157b769f9..1c6f99c9da1 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index f8a759696b8..095118e29c5 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 6bcfe1229a1..9ecb60f987d 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 146bfdcb0f1..db21a3db9b2 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 762d12d1730..61e9c98f2d4 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 611100fea78..4c4ad72fb26 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 830a04cf6c9..41d5ba608fe 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 8aefe17d973..3ca2d7747df 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 5da87ce97ea..cc833ae07e9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 938346bf05a..6cf4c54ee36 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 606c47dea2b..a11f5ffaade 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 320691d8782..8a5a59b0204 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index da7ae969c7d..d83fe46817f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 4a66ba429de..312e5ee8922 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 8276f52ef48..06934f49948 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 08a12d4c1e6..34ca2e5c727 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 ../pom.xml diff --git a/pom.xml b/pom.xml index 437d0956bf5..f3212884ec9 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0-SNAPSHOT + 2.9.0 pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -44,10 +44,10 @@ 2.9.0-dev 2.9.0-dev - 5.5.0-SNAPSHOT - 2.9.0-SNAPSHOT - 4.9.0-SNAPSHOT - 2.9.0-SNAPSHOT + 5.5.0 + 2.9.0 + 4.9.0 + 2.9.0 0.2.0 2.11.4 From b65ec96d35d8f0729b85d5e27d851a98a96ebc86 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 16:52:27 +0200 Subject: [PATCH 049/354] Prepare new development branch release-2.9.x --- .github/workflows/test-analysis.yml | 2 +- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 22 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index ca38d16c6b3..04b4414e9fe 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -24,7 +24,7 @@ on: SSH_TESTING_SERVER_PASSWORD: required: true env: - xb_version: "1.6.1" + xb_version: "1.7.0" jobs: analysis: name: Execute Sonar Analysis diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 506063fcbe0..ddefa7d2618 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 84aec45ed6e..c0bc97362b9 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index b2cf9e69e45..c911504528d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 43b81784554..25c7042ce63 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 1c6f99c9da1..d7c383eec63 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 095118e29c5..b23641a3dbd 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 9ecb60f987d..d1e079cf6a8 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index db21a3db9b2..f16e51062b9 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 61e9c98f2d4..209b780bb8c 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 4c4ad72fb26..e43034af54f 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 41d5ba608fe..95c37c68a8c 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 3ca2d7747df..ca90d6fc622 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index cc833ae07e9..001205ea43e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 6cf4c54ee36..e8ed3f367fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index a11f5ffaade..19403f3054e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8a5a59b0204..f46f425eede 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index d83fe46817f..d2c588dc56f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 312e5ee8922..42703d7ee32 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 06934f49948..643cebae481 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 34ca2e5c727..18c878e910c 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index f3212884ec9..8cd2d21fbe7 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.0 + 2.10.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.9.0-dev - 2.9.0-dev - 5.5.0 - 2.9.0 - 4.9.0 - 2.9.0 + 2.10.0_dev + 2.10.0_dev + 5.6.0-SNAPSHOT + 2.10.0-SNAPSHOT + 4.10.0-SNAPSHOT + 2.10.0-SNAPSHOT 0.2.0 2.11.4 From dd109d85ab2d7cce791d8df16228e901ba425d49 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 16:53:05 +0200 Subject: [PATCH 050/354] Prepare new development branch release-2.9.x --- .github/workflows/test-analysis.yml | 2 +- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 22 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 04b4414e9fe..7de7dfd920a 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -24,7 +24,7 @@ on: SSH_TESTING_SERVER_PASSWORD: required: true env: - xb_version: "1.7.0" + xb_version: "1.6.2" jobs: analysis: name: Execute Sonar Analysis diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index ddefa7d2618..4e8c931536f 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index c0bc97362b9..74ab91fb07f 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index c911504528d..8648dfbb20d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 25c7042ce63..e58a4f025f9 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index d7c383eec63..0f3e6be7560 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b23641a3dbd..2100338ef11 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index d1e079cf6a8..a3c8e96f61b 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index f16e51062b9..a56bb4e317a 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 209b780bb8c..f1f9570dc82 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index e43034af54f..a11e3049ea8 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 95c37c68a8c..3297bd21564 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ca90d6fc622..ec5b94b1ab0 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 001205ea43e..69ce1a5ae86 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index e8ed3f367fc..3b7b31cbd1d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 19403f3054e..99b707529e7 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index f46f425eede..5a39a152b21 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index d2c588dc56f..6d31451f331 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 42703d7ee32..1d32e52b9d6 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 643cebae481..1afe2783957 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 18c878e910c..4fa4cdd08e3 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 8cd2d21fbe7..acaa1b8d962 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.9.1-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.10.0_dev - 2.10.0_dev - 5.6.0-SNAPSHOT - 2.10.0-SNAPSHOT - 4.10.0-SNAPSHOT - 2.10.0-SNAPSHOT + 2.9.1_dev + 2.9.1_dev + 5.5.1-SNAPSHOT + 2.9.1-SNAPSHOT + 4.9.1-SNAPSHOT + 2.9.1-SNAPSHOT 0.2.0 2.11.4 From 461ecc8eb2fe861ef2456e893f23875e698d3ad3 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 17:05:02 +0200 Subject: [PATCH 051/354] Fix release.yml --- .github/workflows/release.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecd3d4152cf..3bb701cba50 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,8 +41,6 @@ jobs: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init secrets: inherit - - deploy-python: uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@develop needs: test @@ -54,8 +52,8 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop needs: [ build,test ] - with: - artifact: build-folder - file: | - opencga-client-${{ needs.build.outputs.version }}.tar.gz - clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz + with: + artifact: build-folder + file: | + opencga-client-${{ needs.build.outputs.version }}.tar.gz + clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz From 05d51664917682c7f87449d57739f99e1c686969 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 17:06:41 +0200 Subject: [PATCH 052/354] Fix release.yml --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecd3d4152cf..87a8f237508 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,8 +54,8 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop needs: [ build,test ] - with: - artifact: build-folder - file: | - opencga-client-${{ needs.build.outputs.version }}.tar.gz - clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz + with: + artifact: build-folder + file: | + opencga-client-${{ needs.build.outputs.version }}.tar.gz + clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz From 5c8e32236e28ed7bed1776bf176fb0c657f862cc Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 17:14:53 +0200 Subject: [PATCH 053/354] Fix conflicts --- opencga-analysis/pom.xml | 4 ---- opencga-app/pom.xml | 4 ---- opencga-catalog/pom.xml | 4 ---- opencga-client/pom.xml | 4 ---- opencga-clinical/pom.xml | 4 ---- opencga-core/pom.xml | 4 ---- opencga-master/pom.xml | 4 ---- opencga-server/pom.xml | 4 ---- opencga-storage/opencga-storage-app/pom.xml | 4 ---- opencga-storage/opencga-storage-benchmark/pom.xml | 4 ---- opencga-storage/opencga-storage-core/pom.xml | 4 ---- .../opencga-storage-hadoop-core/pom.xml | 4 ---- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 4 ---- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 4 ---- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 4 ---- .../opencga-storage-hadoop-deps/pom.xml | 4 ---- opencga-storage/opencga-storage-hadoop/pom.xml | 4 ---- opencga-storage/opencga-storage-server/pom.xml | 4 ---- opencga-storage/pom.xml | 4 ---- opencga-test/pom.xml | 4 ---- pom.xml | 13 ------------- 21 files changed, 93 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index e537b0bbe32..ddefa7d2618 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index c11d0fefce6..c0bc97362b9 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index e44afd6d960..c911504528d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,11 +23,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 5c574f815f6..25c7042ce63 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 235cccb1df6..d7c383eec63 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,11 +5,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 399dc6a6b36..b23641a3dbd 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index d2b44b213eb..d1e079cf6a8 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,11 +22,7 @@ opencga org.opencb.opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 41b4d4ee2df..f16e51062b9 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 24a081e8134..209b780bb8c 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga-storage -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index f93c21a4449..e43034af54f 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,11 +22,7 @@ opencga-storage org.opencb.opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index aa5318ea6e7..95c37c68a8c 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,11 +25,7 @@ org.opencb.opencga opencga-storage -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 3553f855e4c..ca90d6fc622 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,11 +23,7 @@ org.opencb.opencga opencga-storage-hadoop -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index a883c9a7421..001205ea43e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index a86203ff8cd..e8ed3f367fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index d2d1923dda9..19403f3054e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 280c48971a4..f46f425eede 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,11 +50,7 @@ org.opencb.opencga opencga-storage-hadoop -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index cef60a808de..d2c588dc56f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,11 +28,7 @@ org.opencb.opencga opencga-storage -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index d570556f9b2..42703d7ee32 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga-storage -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index aea0014cd1e..643cebae481 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 4ae3f80c3d1..18c878e910c 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,11 +24,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x ../pom.xml diff --git a/pom.xml b/pom.xml index 2776dfe1fbb..8cd2d21fbe7 100644 --- a/pom.xml +++ b/pom.xml @@ -22,11 +22,7 @@ org.opencb.opencga opencga -<<<<<<< HEAD - 2.9.0 -======= 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -46,21 +42,12 @@ -<<<<<<< HEAD - 2.9.0-dev - 2.9.0-dev - 5.5.0 - 2.9.0 - 4.9.0 - 2.9.0 -======= 2.10.0_dev 2.10.0_dev 5.6.0-SNAPSHOT 2.10.0-SNAPSHOT 4.10.0-SNAPSHOT 2.10.0-SNAPSHOT ->>>>>>> release-2.9.x 0.2.0 2.11.4 From dfd74656fe9f998ff19be16d5b02d142ed88a3f1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 26 May 2023 17:15:50 +0200 Subject: [PATCH 054/354] Fix dev versions --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f3212884ec9..971db5bdae4 100644 --- a/pom.xml +++ b/pom.xml @@ -42,8 +42,8 @@ - 2.9.0-dev - 2.9.0-dev + 2.9.0 + 2.9.0 5.5.0 2.9.0 4.9.0 From 912aa4840cdbf8ebb8ea1d6ba2fc81515d205207 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 29 May 2023 01:33:49 +0100 Subject: [PATCH 055/354] docker: use Ubuntu 22.04 + OpenJDK 8u372 to take advantage of cgroup v2 --- .../app/cloud/docker/opencga-base/Dockerfile | 27 +++++++++++-------- .../app/cloud/docker/opencga-init/Dockerfile | 21 +++++++-------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/opencga-app/app/cloud/docker/opencga-base/Dockerfile b/opencga-app/app/cloud/docker/opencga-base/Dockerfile index 5132720657c..d3eee2266d2 100644 --- a/opencga-app/app/cloud/docker/opencga-base/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-base/Dockerfile @@ -1,5 +1,6 @@ -## Based on Debian 11 (bullseye) -FROM openjdk:8-jre +## Based on Ubuntu 22.04 (jammy) +## We are now using OpenJDK 8u372 to support "cgroup v2", see https://developers.redhat.com/articles/2023/04/19/openjdk-8u372-feature-cgroup-v2-support# +FROM eclipse-temurin:8u372-b07-jre-jammy ARG BUILD_PATH="." @@ -7,17 +8,21 @@ ENV OPENCGA_HOME=/opt/opencga ENV OPENCGA_CONFIG_DIR=${OPENCGA_HOME}/conf RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpass ca-certificates curl gnupg jq ncurses-bin && \ - # Install Docker repository - curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ - $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ - # Install MongoDB repository - wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add - && \ - echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list && \ - apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io mongodb-org-shell && \ - rm -rf /var/lib/apt/lists/* && \ + ## Install Docker repository + install -m 0755 -d /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ + chmod a+r /etc/apt/keyrings/docker.gpg && \ + echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "jammy")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ + ## Install MongoDB 6.0 repository + curl -fsSL https://pgp.mongodb.com/server-6.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-server-6.0.gpg && \ + echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list && \ + ## Install docker and mongodb packages + apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io mongodb-mongosh && \ + ## Install yq wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && \ chmod +x /usr/local/bin/yq && \ + ## Clean downloaded packages to make images smaller + rm -rf /var/lib/apt/lists/* && \ adduser --disabled-password --uid 1001 opencga ## Run Docker images as non root diff --git a/opencga-app/app/cloud/docker/opencga-init/Dockerfile b/opencga-app/app/cloud/docker/opencga-init/Dockerfile index f7efd322ac9..60b60f278b7 100644 --- a/opencga-app/app/cloud/docker/opencga-init/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-init/Dockerfile @@ -8,25 +8,22 @@ ARG INIT_PATH=cloud/docker/opencga-init/ COPY ${INIT_PATH} /opt/opencga/init/ COPY ${BUILD_PATH}/conf/* /opt/opencga/init/test/ - -# Mount volume to copy config into +## Mount volume to copy config into VOLUME /opt/volume USER root -# Install local dependencies -RUN apt install python3 && \ - echo "deb http://ftp.de.debian.org/debian bullseye main" | tee -a /etc/apt/sources.list.d/sources.list && \ - apt-get update && apt-get -y upgrade && \ - apt install -y python3-pip && \ + +## Install local dependencies +RUN apt-get update && apt-get -y upgrade && apt-get install -y python3 python3-pip && \ pip3 install --upgrade pip setuptools && \ pip3 install -r /opt/opencga/init/requirements.txt && \ chmod +x /opt/opencga/init/setup.sh /opt/opencga/init/setup-hadoop.sh && \ echo ">Running init container configuration tests" && \ cd /opt/opencga/init/test && python3 test_override_yaml.py -v && rm -r /opt/opencga/init/test - +## Run Docker images as non root USER opencga -# It is the responsibility of the setup.sh -# script to initialise the volume correctly -# and apply any runtime config transforms. -ENTRYPOINT [ "/bin/sh","/opt/opencga/init/setup.sh" ] + +## It is the responsibility of the setup.sh script to initialise the volume correctly +## and apply any runtime config transforms. +ENTRYPOINT [ "/bin/sh", "/opt/opencga/init/setup.sh" ] From f96af2059577476d40741cf25253d0b16b455c14 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 31 May 2023 18:08:23 +0200 Subject: [PATCH 056/354] poms refactor --- opencga-analysis/pom.xml | 198 +++++++++++++++-- opencga-catalog/pom.xml | 220 ++++++++++++++++--- opencga-clinical/pom.xml | 4 +- opencga-core/pom.xml | 70 +++++- opencga-master/pom.xml | 166 +++++++++++++- opencga-server/pom.xml | 207 +++++++++++++++-- opencga-storage/opencga-storage-core/pom.xml | 10 + opencga-storage/pom.xml | 21 +- opencga-test/pom.xml | 17 ++ 9 files changed, 825 insertions(+), 88 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index a951c697d1d..33b8d697e2b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -68,13 +68,15 @@ test-jar test - - - javax.servlet - javax.servlet-api - 3.1.0 - test - + org.opencb.opencga @@ -83,14 +85,14 @@ shaded test - - org.opencb.opencga - ${opencga-storage-hadoop-deps.artifactId} - ${project.parent.version} - tests - test-jar - test - + org.mockito @@ -100,22 +102,172 @@ junit junit + + + + org.apache.solr + solr-solrj + + + + + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + com.google.code.findbugs + annotations + 2.0.1 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.opencb.commons + commons-datastore-mongodb + 4.8.1-SNAPSHOT + test + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + org.opencb.cellbase + cellbase-client + 5.4.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-annotations + 2.11.4 + + + com.google.guava + guava + 19.0 + + + org.mongodb + mongodb-driver-core + 4.8.2 + + + commons-codec + commons-codec + 1.7 + + + commons-lang + commons-lang + 2.6 + + + org.reflections + reflections + 0.9.10 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + org.opencb.opencga - opencga-clinical - ${project.parent.version} - compile + opencga-core + 2.8.1-SNAPSHOT - - org.apache.solr - solr-solrj + io.jsonwebtoken + jjwt-api + 0.11.2 + + + commons-io + commons-io + 2.8.0 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.hamcrest + hamcrest-core + 1.3 + test + + + org.apache.commons + commons-collections4 + 4.4 + + + org.opencb.cellbase + cellbase-core + 5.4.1-SNAPSHOT + + + org.opencb.commons + commons-datastore-solr + 4.8.1-SNAPSHOT + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.11.4 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.opencb.oskar + oskar-analysis + 0.2.0 org.apache.solr - solr-test-framework + solr-core + 8.8.2 + test + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + com.github.samtools + htsjdk + 2.23.0 - diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 6a78b19981d..40b5006f2ca 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -57,24 +57,24 @@ jjwt-impl runtime - - io.jsonwebtoken - jjwt-jackson - runtime - + org.apache.solr solr-solrj - + + com.microsoft.azure adal4j @@ -91,33 +91,195 @@ + - com.microsoft.azure - azure - - 1.13.0 - - - org.slf4j - slf4j-simple - - + junit + junit + test + + - com.microsoft.azure - azure-batch - 4.0.1 + com.google.code.findbugs + annotations + 2.0.1 + + + org.slf4j + slf4j-api + 1.7.32 + + + net.minidev + json-smart + 2.3 + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + com.google.guava + guava + 19.0 + + + org.mongodb + mongodb-driver-core + 4.8.2 + + + com.google.code.gson + gson + 2.8.0 + + + org.reflections + reflections + 0.9.10 + + + com.nimbusds + nimbus-jose-jwt + 9.31 + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.mongodb + mongodb-driver-sync + 4.8.2 + + + commons-io + commons-io + 2.8.0 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.hamcrest + hamcrest-core + 1.3 + test + + + org.apache.commons + commons-collections4 + 4.4 com.microsoft.azure - azure-client-runtime - 1.6.4 + azure-client-authentication + 1.5.4 - junit - junit + org.apache.avro + avro + 1.7.7 + + + org.mongodb + bson + 4.8.2 + + + org.apache.httpcomponents + httpclient + 4.5.6 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.11.4 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + javax.mail + mail + 1.4.7 + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.codehaus.jackson + jackson-core-asl + 1.9.13 + + + com.nimbusds + oauth2-oidc-sdk + 5.64.4 + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.apache.solr + solr-core + 8.8.2 test + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + com.github.samtools + htsjdk + 2.23.0 + + + + org.apache.logging.log4j + log4j-core + diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index b18d2641164..a72ee1cd8b6 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -13,7 +13,7 @@ opencga-clinical jar - + diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 5590d990b5b..01c13da7d1f 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -66,14 +66,14 @@ org.slf4j slf4j-api - + javax.mail mail @@ -88,6 +88,69 @@ passay 1.6.1 + + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-annotations + 2.11.4 + + + org.opencb.cellbase + cellbase-client + 5.4.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.google.guava + guava + 19.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + org.apache.avro + avro + 1.7.7 + + + com.github.samtools + htsjdk + 2.23.0 + + @@ -139,7 +202,8 @@ true - target/generated-resources/git.properties + target/generated-resources/git.properties + false diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 92ebaa30773..c1d26e509c2 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -47,19 +47,173 @@ org.eclipse.jetty jetty-server + + + + junit + junit + + + + + + com.microsoft.azure + azure-batch + 4.0.1 + + + + io.fabric8 + kubernetes-client + 4.3.0 + + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + org.glassfish.jersey.core + jersey-client + 2.30.1 + + + org.slf4j + slf4j-api + 1.7.32 + + + commons-io + commons-io + 2.8.0 + + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + org.eclipse.jetty - jetty-webapp + jetty-servlet + 9.4.17.v20190418 - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} + org.apache.commons + commons-collections4 + 4.4 - junit - junit + com.google.guava + guava + 19.0 + + + org.apache.logging.log4j + log4j-core + 2.17.2 + + + io.fabric8 + kubernetes-model + 4.3.0 + + + commons-codec + commons-codec + 1.7 + + org.glassfish.jersey.core + jersey-server + 2.30.1 + + + org.apache.ant + ant + 1.10.12 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.opencb.opencga + opencga-core + 2.8.1-SNAPSHOT + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.opencb.opencga + opencga-catalog + 2.8.1-SNAPSHOT + + + org.apache.httpcomponents + httpcore + 4.4.13 + + + org.glassfish.jersey.containers + jersey-container-servlet-core + 2.30.1 + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 5a442064896..02b0b2e23b2 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -43,24 +43,24 @@ opencga-analysis - - org.glassfish.jersey.containers - jersey-container-servlet - + + + + org.glassfish.jersey.media jersey-media-multipart ${jersey.version} - - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} - - - org.glassfish.jersey.inject - jersey-hk2 - + @@ -79,12 +79,12 @@ com.fasterxml.jackson.dataformat jackson-dataformat-yaml - - - - - - + + javax.servlet + javax.servlet-api + 3.1.0 + provided + org.opencb.opencga opencga-catalog @@ -96,10 +96,10 @@ com.google.protobuf protobuf-java - + org.eclipse.jetty jetty-server @@ -112,6 +112,167 @@ junit junit + + + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.opencb.commons + commons-datastore-mongodb + 4.8.1-SNAPSHOT + test + + + log4j + log4j + 1.2.17 + + + org.eclipse.jetty + jetty-servlet + 9.4.17.v20190418 + test + + + io.grpc + grpc-api + 1.28.1 + + + com.fasterxml.jackson.core + jackson-annotations + 2.11.4 + + + com.google.guava + guava + 19.0 + + + org.apache.logging.log4j + log4j-core + 2.17.2 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.opencga + opencga-core + 2.8.1-SNAPSHOT + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.glassfish.jersey.containers + jersey-container-servlet-core + 2.30.1 + test + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + + org.apache.solr + solr-solrj + 8.8.2 + + + org.glassfish.jersey.core + jersey-client + 2.30.1 + test + + + commons-io + commons-io + 2.8.0 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + org.apache.commons + commons-collections4 + 4.4 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + test + + + org.apache.avro + avro + 1.7.7 + test + + + org.glassfish.jersey.core + jersey-server + 2.30.1 + + + io.grpc + grpc-protobuf + 1.28.1 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + io.grpc + grpc-stub + 1.28.1 + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + com.github.samtools + htsjdk + 2.23.0 + + + @@ -249,7 +410,7 @@ true - + diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index dee64459406..ee5c196f7d0 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -119,6 +119,16 @@ 11.0.0 ${azure.optional} + + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 62f96aa2030..8695e701986 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -83,7 +83,7 @@ - + org.xolstice.maven.plugins protobuf-maven-plugin 0.5.0 @@ -93,7 +93,8 @@ protobuf-java directly, you will be transitively depending on the protobuf-java version that grpc depends on. --> - com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} + com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier} + grpc-java io.grpc:protoc-gen-grpc-java:0.13.2:exe:${os.detected.classifier} @@ -106,6 +107,22 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + false + + + + diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 106b5a22ece..2a46f5e8e1a 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -57,6 +57,23 @@ org.opencb.commons commons-lib + + + commons-io + commons-io + 2.5 + + + junit + junit + 4.13.2 + test + + + org.apache.commons + commons-lang3 + 3.12.0 + From fed15138f8fd61398b5ca751aec80f22b505c0bd Mon Sep 17 00:00:00 2001 From: imedina Date: Thu, 1 Jun 2023 02:22:18 +0100 Subject: [PATCH 057/354] pom: fix some dependencies --- opencga-analysis/pom.xml | 6 +++++ opencga-master/pom.xml | 6 +++++ opencga-server/pom.xml | 26 +++++++++++++------ .../org/opencb/opencga/server/RestServer.java | 1 - 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 33b8d697e2b..a0aee01fa9b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -124,6 +124,12 @@ org.opencb.ga4gh ga4gh 0.6.0a5 + + + arg.apache.avro + avro-ipc + + com.google.code.findbugs diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index c1d26e509c2..c23f5f8189c 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -34,6 +34,12 @@ org.opencb.opencga opencga-analysis ${project.parent.version} + + + org.opencb.ga4gh + ga4gh + + org.opencb.opencga diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 02b0b2e23b2..8ff8709f479 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -79,12 +79,12 @@ com.fasterxml.jackson.dataformat jackson-dataformat-yaml - - javax.servlet - javax.servlet-api - 3.1.0 - provided - + + + + + + org.opencb.opencga opencga-catalog @@ -119,6 +119,16 @@ org.opencb.ga4gh ga4gh 0.6.0a5 + + + org.mortbay.jetty + jetty + + + org.mortbay.jetty + servlet-api + + org.slf4j @@ -140,7 +150,7 @@ org.eclipse.jetty jetty-servlet 9.4.17.v20190418 - test + io.grpc @@ -234,7 +244,7 @@ org.apache.avro avro 1.7.7 - test + org.glassfish.jersey.core diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java index ba1d5a2c095..28bdffc8016 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Optional; import java.util.stream.Stream; From 663b4165f1368752f94b99ce75b50f506f278a60 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 1 Jun 2023 15:02:09 +0200 Subject: [PATCH 058/354] pom: Clean poms #TASK-2095 --- opencga-app/pom.xml | 195 +++++++++++++++++++++++++++++++++++++++-- opencga-client/pom.xml | 94 ++++++++++++++++++-- opencga-server/pom.xml | 24 ++++- 3 files changed, 298 insertions(+), 15 deletions(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index e5ca3de1dc8..f6e000d6319 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -95,20 +95,20 @@ test-jar test - + + junit junit @@ -125,12 +125,177 @@ jline-terminal ${dep.jline.version} - + + + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.opencb.commons + commons-datastore-mongodb + 4.8.1-SNAPSHOT + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + io.grpc + grpc-api + 1.28.1 + + + com.google.guava + guava + 19.0 + + + org.apache.logging.log4j + log4j-core + 2.17.2 + + + org.fusesource.jansi + jansi + 2.4.0 + + + org.mongodb + mongodb-driver-core + 4.8.2 + + + commons-lang + commons-lang + 2.6 + + + org.reflections + reflections + 0.9.10 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.opencga + opencga-core + 2.8.1-SNAPSHOT + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.opencb.opencga + opencga-storage-core + 2.8.1-SNAPSHOT + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + + org.apache.solr + solr-solrj + 8.8.2 + + + org.mongodb + mongodb-driver-sync + 4.8.2 + + + commons-io + commons-io + 2.8.0 + test + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.apache.commons + commons-collections4 + 4.4 + + + com.beust + jcommander + 1.69 + + + org.apache.avro + avro + 1.7.7 + + + org.opencb.commons + commons-datastore-solr + 4.8.1-SNAPSHOT + + + org.mongodb + bson + 4.8.2 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.11.4 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.opencb.oskar + oskar-analysis + 0.2.0 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + @@ -472,6 +637,26 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + org.opencb.opencga:opencga-storage-hadoop-core:jar:* + org.opencb.opencga:opencga-storage-hadoop-deps-hdp3.1:jar:* + + + + + diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 2f234d1ccc2..d2796a528b6 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -45,15 +45,15 @@ jersey-media-multipart ${jersey.version} - + io.jsonwebtoken jjwt-api - + org.opencb.opencga opencga-catalog @@ -81,15 +81,97 @@ jetty-server test - + junit junit + + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + org.slf4j + slf4j-api + 1.7.32 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.apache.commons + commons-collections4 + 4.4 + + + org.eclipse.jetty + jetty-servlet + 9.4.17.v20190418 + test + + + org.glassfish.jersey.core + jersey-server + 2.30.1 + test + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.11.4 + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.opencb.opencga + opencga-catalog + 2.8.1-SNAPSHOT + test + + + org.glassfish.jersey.containers + jersey-container-servlet-core + 2.30.1 + test + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 8ff8709f479..6616d862c27 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -404,12 +404,28 @@ true - + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + org.eclipse.jetty:jetty-servlet:jar:9.4.17.v20190418 + org.apache.avro:avro:jar:1.7.7 + + + + + - - - storage-hadoop From 65671d36a6c9aa77bc4829f2416a270042de3475 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 5 Jun 2023 02:17:39 +0100 Subject: [PATCH 059/354] pom: improvements, clean-ups and fixes in analysis, app, core and client --- opencga-analysis/pom.xml | 241 ++++++++++++++++-------------------- opencga-app/pom.xml | 255 +++++++++++++++----------------------- opencga-catalog/pom.xml | 234 +++++++++++++++-------------------- opencga-client/pom.xml | 146 +++++++++------------- opencga-core/pom.xml | 112 ++++++----------- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 261 +++++++++++++++++++++++++-------------- 9 files changed, 576 insertions(+), 679 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index a0aee01fa9b..405512c420e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -32,17 +32,12 @@ org.opencb.opencga - opencga-storage-core + opencga-core org.opencb.opencga opencga-catalog - - org.opencb.commons - commons-datastore-core - - org.opencb.opencga opencga-catalog @@ -50,6 +45,10 @@ test-jar test + + org.opencb.opencga + opencga-storage-core + org.opencb.opencga opencga-storage-core @@ -68,16 +67,6 @@ test-jar test - - org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} @@ -85,194 +74,149 @@ shaded test - - org.mockito - mockito-core + org.opencb.commons + commons-lib - junit - junit + org.opencb.commons + commons-datastore-core - - - org.apache.solr - solr-solrj + org.opencb.commons + commons-datastore-mongodb + test - - - - - org.opencb.ga4gh - ga4gh - 0.6.0a5 - - - arg.apache.avro - avro-ipc - - + org.opencb.commons + commons-datastore-solr - com.google.code.findbugs - annotations - 2.0.1 + org.opencb.biodata + biodata-formats - org.slf4j - slf4j-api - 1.7.32 + org.opencb.biodata + biodata-models - org.opencb.commons - commons-datastore-mongodb - 4.8.1-SNAPSHOT - test + org.opencb.biodata + biodata-tools - org.opencb.biodata - biodata-formats - 2.8.1-SNAPSHOT + org.opencb.cellbase + cellbase-core org.opencb.cellbase cellbase-client - 5.4.1-SNAPSHOT - com.fasterxml.jackson.core - jackson-annotations - 2.11.4 + org.opencb.oskar + oskar-analysis - com.google.guava - guava - 19.0 + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + arg.apache.avro + avro-ipc + + + + - org.mongodb - mongodb-driver-core - 4.8.2 + org.apache.commons + commons-collections4 - commons-codec - commons-codec - 1.7 + org.apache.commons + commons-lang3 commons-lang commons-lang - 2.6 - org.reflections - reflections - 0.9.10 + commons-io + commons-io - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT + commons-codec + commons-codec - org.apache.commons - commons-lang3 - 3.12.0 + org.slf4j + slf4j-api - org.opencb.opencga - opencga-core - 2.8.1-SNAPSHOT + com.fasterxml.jackson.core + jackson-core - io.jsonwebtoken - jjwt-api - 0.11.2 + com.fasterxml.jackson.core + jackson-databind - commons-io - commons-io - 2.8.0 + com.fasterxml.jackson.core + jackson-annotations - com.fasterxml.jackson.core - jackson-core - 2.11.4 + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml - org.hamcrest - hamcrest-core - 1.3 - test + org.apache.solr + solr-solrj - org.apache.commons - commons-collections4 - 4.4 + org.apache.solr + solr-core + ${solr.version} + test - org.opencb.cellbase - cellbase-core - 5.4.1-SNAPSHOT + org.mongodb + mongodb-driver-core - org.opencb.commons - commons-datastore-solr - 4.8.1-SNAPSHOT + org.reflections + reflections - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.11.4 + io.jsonwebtoken + jjwt-api - org.opencb.biodata - biodata-tools - 2.8.1-SNAPSHOT + com.github.samtools + htsjdk - org.opencb.biodata - biodata-models - 2.8.1-SNAPSHOT + com.google.code.findbugs + annotations - org.opencb.oskar - oskar-analysis - 0.2.0 + com.google.guava + guava - org.apache.solr - solr-core - 8.8.2 + org.hamcrest + hamcrest-core + 1.3 test - com.fasterxml.jackson.core - jackson-databind - 2.11.4 + org.mockito + mockito-core + test - com.github.samtools - htsjdk - 2.23.0 + junit + junit @@ -290,6 +234,33 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + + + com.google.code.findbugs:jsr305:jar:3.0.2 + + + + + com.google.code.findbugs:annotations:jar:${findbugs-annotations.version} + + + + + + diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index f6e000d6319..12364a244af 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -38,6 +38,10 @@ + + org.opencb.opencga + opencga-core + org.opencb.opencga opencga-catalog @@ -48,254 +52,189 @@ org.opencb.opencga - opencga-master + opencga-analysis ${project.parent.version} + test-jar + test org.opencb.opencga - opencga-storage-app - - - org.opencb.opencga - opencga-storage-benchmark - - + opencga-master org.opencb.opencga opencga-client - - - - - - org.opencb.opencga - opencga-server - ${project.parent.version} - + opencga-storage-core - - - - - - - - - - - org.opencb.opencga - opencga-analysis - ${project.parent.version} - test-jar - test + opencga-storage-app + + + org.opencb.opencga + opencga-storage-benchmark + + - - - - junit - junit - - - - org.jline - jline-reader - ${dep.jline.version} - org.jline - jline-terminal - ${dep.jline.version} + org.opencb.commons + commons-lib - - - - org.opencb.ga4gh - ga4gh - 0.6.0a5 + org.opencb.commons + commons-datastore-core - org.slf4j - slf4j-api - 1.7.32 + org.opencb.commons + commons-datastore-mongodb org.opencb.commons - commons-datastore-mongodb - 4.8.1-SNAPSHOT + commons-datastore-solr org.opencb.biodata biodata-formats - 2.8.1-SNAPSHOT - io.grpc - grpc-api - 1.28.1 + org.opencb.biodata + biodata-models - com.google.guava - guava - 19.0 + org.opencb.biodata + biodata-tools - org.apache.logging.log4j - log4j-core - 2.17.2 + org.opencb.oskar + oskar-analysis - org.fusesource.jansi - jansi - 2.4.0 + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + arg.apache.avro + avro-ipc + + + + - org.mongodb - mongodb-driver-core - 4.8.2 + org.apache.commons + commons-collections4 - commons-lang - commons-lang - 2.6 + org.apache.commons + commons-lang3 - org.reflections - reflections - 0.9.10 + commons-lang + commons-lang - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT + org.slf4j + slf4j-api - org.apache.commons - commons-lang3 - 3.12.0 + org.apache.logging.log4j + log4j-core - org.opencb.opencga - opencga-core - 2.8.1-SNAPSHOT + org.apache.logging.log4j + log4j-api - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT + com.fasterxml.jackson.core + jackson-core - org.opencb.opencga - opencga-storage-core - 2.8.1-SNAPSHOT + com.fasterxml.jackson.core + jackson-databind - jakarta.ws.rs - jakarta.ws.rs-api - 2.1.6 + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml - org.apache.solr - solr-solrj - 8.8.2 + org.jline + jline-reader + ${dep.jline.version} - org.mongodb - mongodb-driver-sync - 4.8.2 + org.jline + jline-terminal + ${dep.jline.version} - commons-io - commons-io - 2.8.0 - test + io.grpc + grpc-api + 1.28.1 - com.fasterxml.jackson.core - jackson-core - 2.11.4 + com.google.guava + guava - org.apache.commons - commons-collections4 - 4.4 + org.fusesource.jansi + jansi + 2.4.0 - com.beust - jcommander - 1.69 + org.apache.solr + solr-solrj - org.apache.avro - avro - 1.7.7 + org.mongodb + mongodb-driver-core - org.opencb.commons - commons-datastore-solr - 4.8.1-SNAPSHOT + org.mongodb + mongodb-driver-sync + ${mongodb-driver-core.version} org.mongodb bson - 4.8.2 + ${mongodb-driver-core.version} - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.11.4 + org.apache.avro + avro - org.opencb.biodata - biodata-tools - 2.8.1-SNAPSHOT + org.reflections + reflections - org.opencb.biodata - biodata-models - 2.8.1-SNAPSHOT + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 - org.apache.logging.log4j - log4j-api - 2.17.2 + com.beust + jcommander + 1.69 - org.opencb.oskar - oskar-analysis - 0.2.0 + commons-io + commons-io + test - com.fasterxml.jackson.core - jackson-databind - 2.11.4 + junit + junit - - diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 40b5006f2ca..8084be46daf 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -39,6 +39,10 @@ org.opencb.commons commons-lib + + org.opencb.commons + commons-datastore-core + org.opencb.commons commons-datastore-mongodb @@ -47,7 +51,61 @@ org.opencb.commons commons-datastore-solr + + org.opencb.biodata + biodata-formats + + + org.opencb.biodata + biodata-models + + + org.opencb.biodata + biodata-tools + + + + org.apache.commons + commons-collections4 + + + org.apache.commons + commons-lang3 + + + commons-io + commons-io + + + org.slf4j + slf4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-api + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + org.codehaus.jackson + jackson-core-asl + 1.9.13 + io.jsonwebtoken jjwt-api @@ -57,24 +115,10 @@ jjwt-impl runtime - org.apache.solr solr-solrj - - com.microsoft.azure adal4j @@ -91,64 +135,18 @@ - - - junit - junit - test - - - com.google.code.findbugs annotations - 2.0.1 - - - org.slf4j - slf4j-api - 1.7.32 net.minidev json-smart 2.3 - - org.opencb.biodata - biodata-formats - 2.8.1-SNAPSHOT - com.google.guava guava - 19.0 - - - org.mongodb - mongodb-driver-core - 4.8.2 com.google.code.gson @@ -158,7 +156,6 @@ org.reflections reflections - 0.9.10 com.nimbusds @@ -166,40 +163,19 @@ 9.31 - org.apache.commons - commons-lang3 - 3.12.0 - - - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT + org.mongodb + mongodb-driver-core + ${mongodb-driver-core.version} org.mongodb mongodb-driver-sync - 4.8.2 - - - commons-io - commons-io - 2.8.0 - - - com.fasterxml.jackson.core - jackson-core - 2.11.4 + ${mongodb-driver-core.version} - org.hamcrest - hamcrest-core - 1.3 - test - - - org.apache.commons - commons-collections4 - 4.4 + org.mongodb + bson + ${mongodb-driver-core.version} com.microsoft.azure @@ -209,42 +185,15 @@ org.apache.avro avro - 1.7.7 - - - org.mongodb - bson - 4.8.2 org.apache.httpcomponents httpclient 4.5.6 - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.11.4 - - - org.opencb.biodata - biodata-tools - 2.8.1-SNAPSHOT - javax.mail mail - 1.4.7 - - - org.opencb.biodata - biodata-models - 2.8.1-SNAPSHOT - - - org.codehaus.jackson - jackson-core-asl - 1.9.13 com.nimbusds @@ -252,9 +201,8 @@ 5.64.4 - org.apache.logging.log4j - log4j-api - 2.17.2 + com.github.samtools + htsjdk org.apache.solr @@ -263,22 +211,15 @@ test - com.fasterxml.jackson.core - jackson-databind - 2.11.4 - - - com.github.samtools - htsjdk - 2.23.0 + org.hamcrest + hamcrest-core + 1.3 + test - - org.apache.logging.log4j - log4j-core + junit + junit + test @@ -324,6 +265,33 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + + + com.google.code.findbugs:jsr305:jar:3.0.2 + + + + + com.google.code.findbugs:annotations:jar:${findbugs-annotations.version} + + + + + + diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index d2796a528b6..d17f4bbf82b 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -34,7 +34,55 @@ org.opencb.opencga opencga-core + + org.opencb.commons + commons-lib + + + org.opencb.commons + commons-datastore-core + + + org.opencb.biodata + biodata-models + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + arg.apache.avro + avro-ipc + + + + + + org.apache.commons + commons-collections4 + + + org.apache.commons + commons-lang3 + + + org.slf4j + slf4j-api + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + org.glassfish.jersey.core jersey-client @@ -45,73 +93,39 @@ jersey-media-multipart ${jersey.version} - io.jsonwebtoken jjwt-api - + org.opencb.opencga + opencga-catalog + test + org.opencb.opencga opencga-catalog + ${project.parent.version} test test-jar - ${project.parent.version} org.opencb.opencga opencga-server - test ${project.parent.version} + test org.eclipse.jetty jetty-server test - - - junit - junit - - - - - org.opencb.ga4gh - ga4gh - 0.6.0a5 - - - org.slf4j - slf4j-api - 1.7.32 - - - com.fasterxml.jackson.core - jackson-core - 2.11.4 - - - org.apache.commons - commons-collections4 - 4.4 - org.eclipse.jetty jetty-servlet @@ -124,37 +138,6 @@ 2.30.1 test - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.11.4 - - - org.opencb.biodata - biodata-models - 2.8.1-SNAPSHOT - - - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT - - - org.apache.commons - commons-lang3 - 3.12.0 - - - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT - - - org.opencb.opencga - opencga-catalog - 2.8.1-SNAPSHOT - test - org.glassfish.jersey.containers jersey-container-servlet-core @@ -162,16 +145,9 @@ test - com.fasterxml.jackson.core - jackson-databind - 2.11.4 - - - jakarta.ws.rs - jakarta.ws.rs-api - 2.1.6 + junit + junit - diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 01c13da7d1f..fca6fcfeffa 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -30,127 +30,97 @@ jar + + org.opencb.commons + commons-lib + + + org.opencb.commons + commons-datastore-core + + + org.opencb.biodata + biodata-formats + org.opencb.biodata biodata-models - - - - - - - - - + + org.opencb.cellbase + cellbase-client + org.opencb.oskar oskar-analysis - - - org.apache.httpcomponents - httpclient - 4.5.6 - + org.apache.commons commons-collections4 - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml + org.apache.commons + commons-lang3 org.slf4j slf4j-api - - - javax.mail - mail - - - junit - junit - test - - - org.passay - passay - 1.6.1 - - - - - org.opencb.biodata - biodata-formats - 2.8.1-SNAPSHOT - com.fasterxml.jackson.core jackson-core - 2.11.4 - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT + com.fasterxml.jackson.core + jackson-databind com.fasterxml.jackson.core jackson-annotations - 2.11.4 - org.opencb.cellbase - cellbase-client - 5.4.1-SNAPSHOT + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml - org.apache.commons - commons-lang3 - 3.12.0 + javax.mail + mail - com.google.guava - guava - 19.0 + org.passay + passay + 1.6.1 - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT + com.google.guava + guava jakarta.ws.rs jakarta.ws.rs-api 2.1.6 - - com.fasterxml.jackson.core - jackson-databind - 2.11.4 - org.apache.avro avro - 1.7.7 com.github.samtools htsjdk - 2.23.0 - + + + org.apache.httpcomponents + httpclient + 4.5.6 + + + junit + junit + test + diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index c23f5f8189c..4ca88932e7a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -176,7 +176,7 @@ org.apache.commons commons-lang3 - 3.12.0 + ${commons-lang3.version} org.apache.logging.log4j diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 6616d862c27..60933149b37 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -180,7 +180,7 @@ org.apache.commons commons-lang3 - 3.12.0 + ${commons-lang3.version} org.opencb.opencga diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 2a46f5e8e1a..d6d9efa24b3 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -72,7 +72,7 @@ org.apache.commons commons-lang3 - 3.12.0 + ${commons-lang3.version} diff --git a/pom.xml b/pom.xml index 33c49e4f2b4..19e71781848 100644 --- a/pom.xml +++ b/pom.xml @@ -47,9 +47,9 @@ 5.4.1-SNAPSHOT 2.8.1-SNAPSHOT 4.8.1-SNAPSHOT + 0.2.1 2.8.1-SNAPSHOT - 0.2.0 2.11.4 2.30.1 4.4 @@ -61,6 +61,16 @@ 8.8.2 0.11.2 9.4.17.v20190418 + 19.0 + 2.23.0 + 4.8.2 + 3.12.0 + 2.5 + 1.7 + 0.9.10 + 2.2.27 + 2.6 + 2.0.1 4.13.2 opencga @@ -69,8 +79,11 @@ opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default} - ${opencga-storage-hadoop-deps.id-default} - opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} + + ${opencga-storage-hadoop-deps.id-default} + + + opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} opencb @@ -85,6 +98,7 @@ false false 2.22.2 + 1.4.7 @@ -174,17 +188,22 @@ org.opencb.opencga - opencga-storage-app + opencga-master ${project.parent.version} org.opencb.opencga - opencga-storage-core + opencga-client ${project.parent.version} org.opencb.opencga - opencga-client + opencga-storage-app + ${project.parent.version} + + + org.opencb.opencga + opencga-storage-core ${project.parent.version} @@ -214,15 +233,24 @@ - org.opencb.oskar - oskar-analysis - ${oskar.version} - - - org.slf4j - slf4j-log4j12 - - + org.opencb.commons + commons-lib + ${java-common-libs.version} + + + org.opencb.commons + commons-datastore-core + ${java-common-libs.version} + + + org.opencb.commons + commons-datastore-mongodb + ${java-common-libs.version} + + + org.opencb.commons + commons-datastore-solr + ${java-common-libs.version} org.opencb.biodata @@ -256,14 +284,9 @@ - org.opencb.commons - commons-lib - ${java-common-libs.version} - - - org.opencb.commons - commons-datastore-core - ${java-common-libs.version} + org.opencb.cellbase + cellbase-core + ${cellbase.version} org.opencb.cellbase @@ -277,62 +300,42 @@ - org.opencb.commons - commons-datastore-mongodb - ${java-common-libs.version} - - - org.opencb.commons - commons-datastore-solr - ${java-common-libs.version} - - - - - org.apache.solr - solr-solrj - ${solr.version} - - - org.apache.solr - solr-test-framework - ${solr.version} - test + org.opencb.oskar + oskar-analysis + ${oskar.version} - com.google.protobuf - protobuf-java - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.logging.log4j - log4j-1.2-api - - - org.apache.logging.log4j - log4j-api - - - org.apache.logging.log4j - log4j-web + org.slf4j + slf4j-log4j12 + + org.apache.commons commons-collections4 ${collections.version} - com.google.guava - guava - - - - 19.0 + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + commons-lang + commons-lang + ${commons-lang26.version} + + + commons-io + commons-io + ${commons-io.version} + + + commons-codec + commons-codec + ${commons-codec.version} org.slf4j @@ -341,12 +344,17 @@ org.apache.logging.log4j - log4j-slf4j-impl + log4j-core ${log4j2.version} org.apache.logging.log4j - log4j-core + log4j-api + ${log4j2.version} + + + org.apache.logging.log4j + log4j-slf4j-impl ${log4j2.version} @@ -380,9 +388,37 @@ ${jackson.version} - javax.mail - mail - 1.4.7 + org.apache.solr + solr-solrj + ${solr.version} + + + org.apache.solr + solr-test-framework + ${solr.version} + test + + + com.google.protobuf + protobuf-java + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-web + + org.eclipse.jetty @@ -471,6 +507,11 @@ protobuf-java-util ${protobuf.version} + + com.google.code.findbugs + annotations + ${findbugs-annotations.version} + io.grpc grpc-all @@ -499,18 +540,45 @@ hadoop2 - junit - junit - ${junit.version} - test + org.mongodb + mongodb-driver-core + ${mongodb-driver-core.version} + + + javax.mail + mail + ${javax-mail.version} + + + org.reflections + reflections + ${reflections.version} + + + com.github.samtools + htsjdk + ${htsjdk.version} + + + com.google.guava + guava + + + + ${guava.version} org.mockito mockito-core - 2.2.27 + ${mockito.version} + test + + + junit + junit + ${junit.version} test - @@ -874,11 +942,25 @@ + + deploy-github + + + github + GitHub OpenCB Apache Maven Packages + https://maven.pkg.github.com/opencb/opencga + + + + + + hdp3.1 hdp3.1 - opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} + + opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} @@ -886,7 +968,8 @@ emr6.1 emr6.1 - opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} + + opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} @@ -894,7 +977,8 @@ hdp2.6 hdp2.6 - opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} + + opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} @@ -1021,18 +1105,7 @@ - - deploy-github - - - github - GitHub OpenCB Apache Maven Packages - https://maven.pkg.github.com/opencb/opencga - - - - - + From 2492de89a739f02be1dd81ae8407b73294a9f557 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 7 Jun 2023 18:46:57 +0200 Subject: [PATCH 060/354] pom: Cleaned versions and properties #TASK-2095 --- opencga-analysis/pom.xml | 7 - opencga-app/pom.xml | 13 - opencga-catalog/pom.xml | 14 - opencga-client/pom.xml | 10 - opencga-clinical/pom.xml | 48 ---- opencga-core/pom.xml | 3 - opencga-master/pom.xml | 139 +++------- opencga-server/pom.xml | 229 ++++++---------- opencga-storage/opencga-storage-app/pom.xml | 1 - .../opencga-storage-benchmark/pom.xml | 1 - .../opencga-storage-server/pom.xml | 1 - opencga-storage/pom.xml | 17 -- opencga-test/pom.xml | 4 - pom.xml | 252 +++++++++++++++++- 14 files changed, 359 insertions(+), 380 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 405512c420e..ba30d6e6a5c 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -41,7 +41,6 @@ org.opencb.opencga opencga-catalog - ${project.parent.version} test-jar test @@ -52,7 +51,6 @@ org.opencb.opencga opencga-storage-core - ${project.parent.version} test-jar test @@ -70,11 +68,9 @@ org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} - ${project.parent.version} shaded test - org.opencb.commons commons-lib @@ -119,7 +115,6 @@ org.opencb.ga4gh ga4gh - 0.6.0a5 arg.apache.avro @@ -176,7 +171,6 @@ org.apache.solr solr-core - ${solr.version} test @@ -206,7 +200,6 @@ org.hamcrest hamcrest-core - 1.3 test diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 12364a244af..d5867b363ef 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -33,7 +33,6 @@ ${project.basedir}/../build ${project.basedir}/app true - 3.12.1 opencga-client-${project.parent.version} @@ -53,7 +52,6 @@ org.opencb.opencga opencga-analysis - ${project.parent.version} test-jar test @@ -82,9 +80,7 @@ org.opencb.opencga opencga-server - ${project.parent.version} - org.opencb.commons commons-lib @@ -120,7 +116,6 @@ org.opencb.ga4gh ga4gh - 0.6.0a5 arg.apache.avro @@ -169,17 +164,14 @@ org.jline jline-reader - ${dep.jline.version} org.jline jline-terminal - ${dep.jline.version} io.grpc grpc-api - 1.28.1 com.google.guava @@ -188,7 +180,6 @@ org.fusesource.jansi jansi - 2.4.0 org.apache.solr @@ -201,12 +192,10 @@ org.mongodb mongodb-driver-sync - ${mongodb-driver-core.version} org.mongodb bson - ${mongodb-driver-core.version} org.apache.avro @@ -219,12 +208,10 @@ jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 com.beust jcommander - 1.69 commons-io diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 8084be46daf..0a1022f5808 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -104,7 +104,6 @@ org.codehaus.jackson jackson-core-asl - 1.9.13 io.jsonwebtoken @@ -122,12 +121,10 @@ com.microsoft.azure adal4j - 1.6.3 com.microsoft.graph microsoft-graph - 1.4.0 com.sun.jersey @@ -142,7 +139,6 @@ net.minidev json-smart - 2.3 com.google.guava @@ -151,7 +147,6 @@ com.google.code.gson gson - 2.8.0 org.reflections @@ -160,27 +155,22 @@ com.nimbusds nimbus-jose-jwt - 9.31 org.mongodb mongodb-driver-core - ${mongodb-driver-core.version} org.mongodb mongodb-driver-sync - ${mongodb-driver-core.version} org.mongodb bson - ${mongodb-driver-core.version} com.microsoft.azure azure-client-authentication - 1.5.4 org.apache.avro @@ -189,7 +179,6 @@ org.apache.httpcomponents httpclient - 4.5.6 javax.mail @@ -198,7 +187,6 @@ com.nimbusds oauth2-oidc-sdk - 5.64.4 com.github.samtools @@ -207,13 +195,11 @@ org.apache.solr solr-core - 8.8.2 test org.hamcrest hamcrest-core - 1.3 test diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index d17f4bbf82b..91f10d660e7 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -49,7 +49,6 @@ org.opencb.ga4gh ga4gh - 0.6.0a5 arg.apache.avro @@ -86,12 +85,10 @@ org.glassfish.jersey.core jersey-client - ${jersey.version} org.glassfish.jersey.media jersey-media-multipart - ${jersey.version} io.jsonwebtoken @@ -100,9 +97,7 @@ jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 - org.opencb.opencga opencga-catalog @@ -111,14 +106,12 @@ org.opencb.opencga opencga-catalog - ${project.parent.version} test test-jar org.opencb.opencga opencga-server - ${project.parent.version} test @@ -129,19 +122,16 @@ org.eclipse.jetty jetty-servlet - 9.4.17.v20190418 test org.glassfish.jersey.core jersey-server - 2.30.1 test org.glassfish.jersey.containers jersey-container-servlet-core - 2.30.1 test diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index a72ee1cd8b6..4a57791f37e 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -12,54 +12,6 @@ opencga-clinical jar - - - diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index fca6fcfeffa..32247f5ece0 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -91,7 +91,6 @@ org.passay passay - 1.6.1 com.google.guava @@ -100,7 +99,6 @@ jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 org.apache.avro @@ -114,7 +112,6 @@ org.apache.httpcomponents httpclient - 4.5.6 junit diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 4ca88932e7a..3288cf1658a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -33,7 +33,6 @@ org.opencb.opencga opencga-analysis - ${project.parent.version} org.opencb.ga4gh @@ -44,182 +43,120 @@ org.opencb.opencga opencga-catalog - ${project.parent.version} test-jar test + + org.opencb.commons + commons-lib + + + org.opencb.opencga + opencga-core + + + org.opencb.commons + commons-datastore-core + + + org.opencb.opencga + opencga-catalog + org.eclipse.jetty jetty-server - - - junit - junit + org.eclipse.jetty + jetty-servlet - - com.microsoft.azure azure-batch - 4.0.1 - io.fabric8 kubernetes-client - 4.3.0 - - javax.servlet javax.servlet-api - 3.1.0 org.glassfish.jersey.core jersey-client - 2.30.1 + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + + org.glassfish.jersey.core + jersey-server org.slf4j slf4j-api - 1.7.32 commons-io commons-io - 2.8.0 - com.fasterxml.jackson.core jackson-core - 2.11.4 - org.eclipse.jetty - jetty-servlet - 9.4.17.v20190418 + com.fasterxml.jackson.core + jackson-databind + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core org.apache.commons commons-collections4 - 4.4 com.google.guava guava - 19.0 - - - org.apache.logging.log4j - log4j-core - 2.17.2 io.fabric8 kubernetes-model - 4.3.0 commons-codec commons-codec - 1.7 - - - org.glassfish.jersey.core - jersey-server - 2.30.1 org.apache.ant ant - 1.10.12 - - - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT org.apache.commons commons-lang3 - ${commons-lang3.version} - - - org.apache.logging.log4j - log4j-api - 2.17.2 - - - org.opencb.opencga - opencga-core - 2.8.1-SNAPSHOT - - - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT - - - org.opencb.opencga - opencga-catalog - 2.8.1-SNAPSHOT org.apache.httpcomponents httpcore - 4.4.13 - - - org.glassfish.jersey.containers - jersey-container-servlet-core - 2.30.1 jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 - com.fasterxml.jackson.core - jackson-databind - 2.11.4 + junit + junit - - diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 60933149b37..0af62286ee1 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -42,83 +42,29 @@ org.opencb.opencga opencga-analysis - - - - - - - org.glassfish.jersey.media - jersey-media-multipart - ${jersey.version} - - - - - - - - - - - - - com.fasterxml.jackson.core - jackson-databind + org.opencb.biodata + biodata-tools - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml + org.opencb.biodata + biodata-models - - - - - - org.opencb.opencga - opencga-catalog - test - test-jar - ${project.parent.version} - - - com.google.protobuf - protobuf-java - - - - org.eclipse.jetty - jetty-server + opencga-core - org.eclipse.jetty - jetty-webapp + org.opencb.commons + commons-datastore-core - junit - junit + org.opencb.commons + commons-lib - - - org.opencb.ga4gh ga4gh - 0.6.0a5 org.mortbay.jetty @@ -131,158 +77,145 @@ - org.slf4j - slf4j-api - 1.7.32 + org.opencb.opencga + opencga-catalog + test + test-jar - org.opencb.commons - commons-datastore-mongodb - 4.8.1-SNAPSHOT - test + org.glassfish.jersey.media + jersey-media-multipart - log4j - log4j - 1.2.17 + org.glassfish.jersey.core + jersey-server - org.eclipse.jetty - jetty-servlet - 9.4.17.v20190418 - + com.fasterxml.jackson.core + jackson-databind - io.grpc - grpc-api - 1.28.1 + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml com.fasterxml.jackson.core jackson-annotations - 2.11.4 - com.google.guava - guava - 19.0 + com.fasterxml.jackson.core + jackson-core + + + com.google.protobuf + protobuf-java + + + io.grpc + grpc-protobuf + + + org.eclipse.jetty + jetty-server + + + org.eclipse.jetty + jetty-webapp + + + org.eclipse.jetty + jetty-servlet + + + log4j + log4j org.apache.logging.log4j - log4j-core - 2.17.2 + log4j-api - org.opencb.commons - commons-lib - 4.8.1-SNAPSHOT + org.apache.logging.log4j + log4j-core + + + - org.apache.commons - commons-lang3 - ${commons-lang3.version} + org.slf4j + slf4j-api - org.opencb.opencga - opencga-core - 2.8.1-SNAPSHOT + io.grpc + grpc-api - org.opencb.commons - commons-datastore-core - 4.8.1-SNAPSHOT + com.google.guava + guava - org.glassfish.jersey.containers - jersey-container-servlet-core - 2.30.1 - test + org.apache.commons + commons-lang3 jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 org.apache.solr solr-solrj - 8.8.2 - - - org.glassfish.jersey.core - jersey-client - 2.30.1 - test commons-io commons-io - 2.8.0 - - - com.fasterxml.jackson.core - jackson-core - 2.11.4 + javax.servlet javax.servlet-api - 3.1.0 org.apache.commons commons-collections4 - 4.4 - - - org.codehaus.jackson - jackson-mapper-asl - 1.9.13 - test org.apache.avro avro - 1.7.7 - - org.glassfish.jersey.core - jersey-server - 2.30.1 + io.grpc + grpc-stub - io.grpc - grpc-protobuf - 1.28.1 + com.github.samtools + htsjdk + - org.opencb.biodata - biodata-tools - 2.8.1-SNAPSHOT + org.codehaus.jackson + jackson-mapper-asl + test - org.opencb.biodata - biodata-models - 2.8.1-SNAPSHOT + org.glassfish.jersey.core + jersey-client + test - io.grpc - grpc-stub - 1.28.1 + org.glassfish.jersey.containers + jersey-container-servlet-core + test - org.apache.logging.log4j - log4j-api - 2.17.2 + org.opencb.commons + commons-datastore-mongodb + test - com.github.samtools - htsjdk - 2.23.0 + junit + junit - diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 345e8b74f9f..99ad015d9e5 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -58,7 +58,6 @@ org.glassfish.jersey.containers jersey-container-servlet-core - ${jersey.version} junit diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index cdb4640939f..fb997f18daa 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -147,7 +147,6 @@ javax.servlet javax.servlet-api - 3.1.0 test diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index dc3f88a4e6b..f25198d6e50 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -47,7 +47,6 @@ org.glassfish.jersey.containers jersey-container-servlet-core - ${jersey.version} com.google.protobuf diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 8695e701986..7a4a3758559 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -43,11 +43,6 @@ - - org.opencb.opencga - opencga-storage-core - ${project.parent.version} - org.opencb.opencga opencga-storage-server @@ -58,18 +53,6 @@ opencga-storage-benchmark ${project.parent.version} - - - io.grpc - grpc-all - ${grpc.version} - - - - commons-io - commons-io - 2.5 - diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index d6d9efa24b3..2642209a7bf 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -51,7 +51,6 @@ com.beust jcommander - 1.69 org.opencb.commons @@ -61,18 +60,15 @@ commons-io commons-io - 2.5 junit junit - 4.13.2 test org.apache.commons commons-lang3 - ${commons-lang3.version} diff --git a/pom.xml b/pom.xml index 19e71781848..48a973e15b3 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ 9.4.17.v20190418 19.0 2.23.0 - 4.8.2 + 4.8.2 3.12.0 2.5 1.7 @@ -72,6 +72,30 @@ 2.6 2.0.1 4.13.2 + 3.12.1 + 1.4.7 + 1.3 + 0.6.0a5 + 2.4.0 + 2.1.6 + 1.69 + 1.9.13 + 1.6.3 + 1.4.0 + 2.3 + 2.8.0 + 9.31 + 1.5.4 + 4.5.6 + 5.64.4 + 1.6.1 + 4.0.1 + 4.3.0 + 3.1.0 + 1.10.12 + 4.4.13 + 1.2.17 + opencga opencga-env.sh @@ -98,7 +122,7 @@ false false 2.22.2 - 1.4.7 + @@ -174,42 +198,42 @@ org.opencb.opencga opencga-core - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-catalog - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-analysis - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-master - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-client - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-storage-app - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-storage-core - ${project.parent.version} + ${project.version} org.opencb.opencga opencga-storage-hadoop-core - ${project.parent.version} + ${project.version} org.opencb.opencga @@ -220,7 +244,7 @@ org.opencb.opencga opencga-storage-hadoop-core - ${project.parent.version} + ${project.version} test-jar test @@ -230,6 +254,35 @@ + + org.opencb.opencga + opencga-storage-hadoop-deps-hdp3.1 + ${project.version} + shaded + + + org.opencb.opencga + opencga-storage-core + ${project.version} + test-jar + + + org.opencb.opencga + opencga-catalog + ${project.version} + test-jar + + + org.opencb.opencga + opencga-analysis + ${project.version} + test-jar + + + org.opencb.opencga + opencga-server + ${project.version} + @@ -392,6 +445,11 @@ solr-solrj ${solr.version} + + org.apache.solr + solr-core + ${solr.version} + org.apache.solr solr-test-framework @@ -420,6 +478,16 @@ + + org.jline + jline-reader + ${dep.jline.version} + + + org.jline + jline-terminal + ${dep.jline.version} + org.eclipse.jetty jetty-server @@ -480,6 +548,26 @@ jersey-hk2 ${jersey.version} + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + + + org.glassfish.jersey.media + jersey-media-multipart + ${jersey.version} + + + org.glassfish.jersey.core + jersey-server + ${jersey.version} + + + org.glassfish.jersey.containers + jersey-container-servlet-core + ${jersey.version} + io.jsonwebtoken jjwt-api @@ -517,6 +605,21 @@ grpc-all ${grpc.version} + + io.grpc + grpc-api + ${grpc.version} + + + io.grpc + grpc-protobuf + ${grpc.version} + + + io.grpc + grpc-stub + ${grpc.version} + org.apache.avro avro @@ -542,7 +645,17 @@ org.mongodb mongodb-driver-core - ${mongodb-driver-core.version} + ${mongodb-driver.version} + + + org.mongodb + mongodb-driver-sync + ${mongodb-driver.version} + + + org.mongodb + bson + ${mongodb-driver.version} javax.mail @@ -567,6 +680,121 @@ ${guava.version} + + org.hamcrest + hamcrest-core + ${hamcrest-core.version} + + + org.opencb.ga4gh + ga4gh + ${ga4gh.version} + + + org.fusesource.jansi + jansi + ${jansi.version} + + + jakarta.ws.rs + jakarta.ws.rs-api + ${jakarta.ws.rs-api.version} + + + com.beust + jcommander + ${jcommander.version} + + + com.microsoft.azure + adal4j + ${adal4j.version} + + + com.microsoft.graph + microsoft-graph + ${microsoft-graph.version} + + + net.minidev + json-smart + ${json-smart.version} + + + com.google.code.gson + gson + ${gson.version} + + + com.nimbusds + nimbus-jose-jwt + ${nimbus-jose-jwt.version} + + + com.microsoft.azure + azure-client-authentication + ${azure-client-authentication.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + com.nimbusds + oauth2-oidc-sdk + ${oauth2-oidc-sdk.version} + + + org.passay + passay + ${passay.version} + + + com.microsoft.azure + azure-batch + ${azure-batch.version} + + + io.fabric8 + kubernetes-client + ${kubernetes.version} + + + io.fabric8 + kubernetes-model + ${kubernetes.version} + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + org.apache.ant + ant + ${ant.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + + + log4j + log4j + ${log4j.version} + + + org.codehaus.jackson + jackson-mapper-asl + ${jackson-codehaus.version} + + + org.codehaus.jackson + jackson-core-asl + ${jackson-codehaus.version} + org.mockito mockito-core From d4db275d5dfdf032c25c870327497f71c55481b5 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 7 Jun 2023 19:49:49 +0200 Subject: [PATCH 061/354] pom reorder jackson-mapper-asl #TASK-2095 --- opencga-server/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 0af62286ee1..21022d147a3 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -106,6 +106,11 @@ com.fasterxml.jackson.core jackson-core + + org.codehaus.jackson + jackson-mapper-asl + test + com.google.protobuf protobuf-java @@ -191,11 +196,6 @@ htsjdk - - org.codehaus.jackson - jackson-mapper-asl - test - org.glassfish.jersey.core jersey-client From 159a0d9890624a44ed04fe3baf12579574c65090 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 8 Jun 2023 18:51:22 +0200 Subject: [PATCH 062/354] maven-surefire-plugin in pluginManagement section #TASK-2095 --- pom.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 48a973e15b3..3ee4fc3b687 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ false false - 2.22.2 + 3.1.0 @@ -826,6 +826,11 @@ maven-shade-plugin 2.4.3 + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + From 0e8cde0f2afd7dc888fdb977d7143c871e3aac10 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 13 Jun 2023 15:44:41 +0200 Subject: [PATCH 063/354] Prepare release 2.9.1 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 4e8c931536f..ed6d1e6ea9c 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 74ab91fb07f..ddac6242b5a 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 8648dfbb20d..4bd331c20cd 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index e58a4f025f9..3b99ea89a10 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 0f3e6be7560..70f90af19bf 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 2100338ef11..5b526af39c5 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index a3c8e96f61b..097227b48fb 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index a56bb4e317a..c1dedc8f9b5 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index f1f9570dc82..3866f9663c5 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index a11e3049ea8..efca71394d9 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 3297bd21564..5d72ad07bd9 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ec5b94b1ab0..e0e24254c4d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 69ce1a5ae86..3263e91216a 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 3b7b31cbd1d..efc599af6fb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 99b707529e7..64bfaffce10 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 5a39a152b21..59b617f558b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 6d31451f331..c1e722996de 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 1d32e52b9d6..323e4ef2404 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 1afe2783957..80340a628c9 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 4fa4cdd08e3..a7ff7fcb5cb 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 ../pom.xml diff --git a/pom.xml b/pom.xml index 5a247d5b293..7740e246360 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1-SNAPSHOT + 2.9.1 pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.9.1_dev - 2.9.1_dev - 5.5.1-SNAPSHOT - 2.9.1-SNAPSHOT - 4.9.1-SNAPSHOT - 2.9.1-SNAPSHOT + 2.9.1 + 2.9.1 + 5.5.0 + 2.9.0 + 4.9.0 + 2.9.1 0.2.0 2.11.4 From 548c19fad1df0b8745850b904e99d12b2a33fcfb Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 13 Jun 2023 15:54:17 +0200 Subject: [PATCH 064/354] Prepare next release 2.9.2-SNAPSHOT --- .github/workflows/test-analysis.yml | 3 +-- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 22 files changed, 28 insertions(+), 29 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index ac937f35c4c..b778e704cae 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -24,8 +24,7 @@ on: SSH_TESTING_SERVER_PASSWORD: required: true env: - xb_version: "1.7.1" - + xb_version: "1.7.2" jobs: analysis: name: Execute Sonar Analysis diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index ed6d1e6ea9c..aec5669b12f 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index ddac6242b5a..a9fe3703f97 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 4bd331c20cd..43fb05be14d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 3b99ea89a10..bed3ac24829 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 70f90af19bf..9f85a0ff7d0 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 5b526af39c5..8544e3bbd09 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 097227b48fb..898205375bc 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index c1dedc8f9b5..957eb127745 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 3866f9663c5..45bd1dd22c1 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index efca71394d9..cdd5e80590b 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 5d72ad07bd9..ab277249b74 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index e0e24254c4d..2ef22a0bf03 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 3263e91216a..6ed975a82d8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index efc599af6fb..422fa4f30c2 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 64bfaffce10..a2e8db3647b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 59b617f558b..246bdd0cc61 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index c1e722996de..e7302b47a65 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 323e4ef2404..580e03d7ebc 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 80340a628c9..eff64556c36 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index a7ff7fcb5cb..6b0e2013c39 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 7740e246360..d8b1fd7308a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.1 + 2.9.2-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.9.1 - 2.9.1 - 5.5.0 - 2.9.0 - 4.9.0 - 2.9.1 + 2.9.2_dev + 2.9.2_dev + 5.5.1-SNAPSHOT + 2.9.1-SNAPSHOT + 4.9.1-SNAPSHOT + 2.9.2-SNAPSHOT 0.2.0 2.11.4 From 020d2f9e1f33866d4dca120d5e68e6ec2faedaf1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 13 Jun 2023 16:12:46 +0200 Subject: [PATCH 065/354] Fix release.yml --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5d1f3b7398..388e4aacf92 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,9 +54,9 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@release-4.9.x needs: [ build,test ] - with: - artifact: build-folder - file: | - opencga-client-${{ needs.build.outputs.version }}.tar.gz - clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz + with: + artifact: build-folder + file: | + opencga-client-${{ needs.build.outputs.version }}.tar.gz + clients/R/opencgaR_${{ needs.build.outputs.version }}.tar.gz From 8a3fb8659cd8a1e0874d9e93de85fb4430e04da9 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 16 Jun 2023 17:33:11 +0200 Subject: [PATCH 066/354] cellbase-core added to opencga-core --- opencga-core/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 603b28fc266..93773977985 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -46,6 +46,10 @@ org.opencb.biodata biodata-models + + org.opencb.cellbase + cellbase-core + org.opencb.cellbase cellbase-client From a7d2143f567bee0ca12ca7f9f6627a6693d32ff1 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 19 Jun 2023 00:58:01 +0100 Subject: [PATCH 067/354] cicd: remove docker ext-tools creation from develop and release workflows --- .github/workflows/develop.yml | 12 ++++++------ .../{docker-tools.yml => docker-ext-tools.yml} | 6 +++--- .github/workflows/release.yml | 12 ++++++------ .github/workflows/task.yml | 3 ++- 4 files changed, 17 insertions(+), 16 deletions(-) rename .github/workflows/{docker-tools.yml => docker-ext-tools.yml} (90%) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 6577a417189..94ced2c7296 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -13,12 +13,12 @@ jobs: with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' - deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x - needs: build - with: - cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} - secrets: inherit +# deploy-docker-ext-tools: +# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x +# needs: build +# with: +# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} +# secrets: inherit test: uses: ./.github/workflows/test-analysis.yml diff --git a/.github/workflows/docker-tools.yml b/.github/workflows/docker-ext-tools.yml similarity index 90% rename from .github/workflows/docker-tools.yml rename to .github/workflows/docker-ext-tools.yml index d4b80e913e4..b1fd5005436 100644 --- a/.github/workflows/docker-tools.yml +++ b/.github/workflows/docker-ext-tools.yml @@ -1,4 +1,4 @@ -name: Deploy Docker Tools +name: Deploy Docker Ext-Tools on: push: @@ -13,8 +13,8 @@ on: jobs: build: uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x - with: - maven_opts: +# with: +# maven_opts: deploy-docker-ext-tools: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0fb1f666a62..adcf2f27a56 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,12 +12,12 @@ jobs: with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' - deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x - needs: build - with: - cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} - secrets: inherit +# deploy-docker-ext-tools: +# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x +# needs: build +# with: +# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} +# secrets: inherit test: uses: ./.github/workflows/test-analysis.yml diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index d48509a97df..169993bf4c9 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -5,7 +5,8 @@ on: branches: - TASK-* workflow_dispatch: -#WARNING Develop branch needed for prod + +# WARNING Develop branch needed for prod jobs: build: uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x From 37ffe01c5646f2cf6643aca5f74d4f1e91cd17d9 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 19 Jun 2023 01:01:25 +0100 Subject: [PATCH 068/354] cicd: testin new docker ext-tools creation workflow --- opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile b/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile index 024f4ed2a68..1ee9b95fdee 100644 --- a/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile @@ -30,4 +30,4 @@ RUN apt-get update -y && DEBIAN_FRONTEND="noninteractive" TZ="Europe/London" apt rm -rf /var/lib/apt/lists/* /tmp/* /opt/opencga/signature.tools.lib/.git && \ strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 -WORKDIR /opt/opencga \ No newline at end of file +WORKDIR /opt/opencga From 05aabd1796e39aff2c7a0a4833bbf5647def8c19 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 12:31:13 +0200 Subject: [PATCH 069/354] CICD: Test phase commented #TASK-4464 --- .github/workflows/develop.yml | 14 +++--- .github/workflows/docker-aws-emr.yml | 4 +- .github/workflows/docker-tools.yml | 14 +++--- .github/workflows/long-test-analysis.yml | 22 ++++----- .github/workflows/pull-request-merge.yml | 2 +- .github/workflows/release.yml | 18 +++---- .github/workflows/task.yml | 10 ++-- .github/workflows/test-analysis.yml | 63 ++++++++++++++---------- 8 files changed, 79 insertions(+), 68 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 6577a417189..ab685322beb 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -9,12 +9,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} @@ -24,19 +24,19 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools secrets: inherit - with: - test_profile: runShortTests,runMediumTests - report_context: development +# with: +# test_profile: runShortTests,runMediumTests +# report_context: development deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init diff --git a/.github/workflows/docker-aws-emr.yml b/.github/workflows/docker-aws-emr.yml index b5bae3ed5ed..bf1c8571ca8 100644 --- a/.github/workflows/docker-aws-emr.yml +++ b/.github/workflows/docker-aws-emr.yml @@ -8,12 +8,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,emr6.1 -Dopencga.war.name=opencga deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init diff --git a/.github/workflows/docker-tools.yml b/.github/workflows/docker-tools.yml index d4b80e913e4..628b28612cc 100644 --- a/.github/workflows/docker-tools.yml +++ b/.github/workflows/docker-tools.yml @@ -12,13 +12,13 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: - deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x - needs: build - with: - cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} - secrets: inherit +# deploy-docker-ext-tools: +# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop +# needs: build +# with: +# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} +# secrets: inherit diff --git a/.github/workflows/long-test-analysis.yml b/.github/workflows/long-test-analysis.yml index f516eb25029..f17400da032 100644 --- a/.github/workflows/long-test-analysis.yml +++ b/.github/workflows/long-test-analysis.yml @@ -1,15 +1,15 @@ name: Long test for run only on weekend #Every Saturday at 01:10 -on: - schedule: - - cron: '10 1 * * 6' - -jobs: - test: - uses: ./.github/workflows/test-analysis.yml - secrets: inherit - with: - test_profile: runLongTests,runMediumTests,runShortTests - report_context: development +#on: +# schedule: +# - cron: '10 1 * * 6' +# +#jobs: +# test: +# uses: ./.github/workflows/test-analysis.yml +# secrets: inherit +# with: +# test_profile: runLongTests,runMediumTests,runShortTests +# report_context: development diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index 54a63c56149..4b1c43c682b 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -10,7 +10,7 @@ on: jobs: delete-docker: - uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@develop with: cli: python3 ./build/cloud/docker/docker-build.py delete --images base --tag ${{ github.head_ref }} secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0fb1f666a62..7235c1e93ee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,12 +8,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' deploy-docker-ext-tools: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} @@ -23,26 +23,26 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools secrets: inherit - with: - test_profile: runShortTests,runMediumTests - report_context: xetabase +# with: +# test_profile: runShortTests,runMediumTests +# report_context: xetabase deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init secrets: inherit deploy-python: - uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@develop needs: test with: cli: ./clients/python/python-build.sh push @@ -50,7 +50,7 @@ jobs: secrets: inherit release: - uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop needs: [ build,test ] with: artifact: build-folder diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index d48509a97df..775e87e77b7 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -8,7 +8,7 @@ on: #WARNING Develop branch needed for prod jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' @@ -16,12 +16,12 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: build secrets: inherit - with: - test_profile: runShortTests - report_context: development +# with: +# test_profile: runShortTests +# report_context: development deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init --tag ${{ github.ref_name }} diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index ac937f35c4c..bd06a020e87 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -83,30 +83,41 @@ jobs: mongodb-replica-set: rs-test - name: Run Junit tests run: mvn -B verify surefire-report:report -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' ${{ inputs.mvn_opts }} - - name: Upload result dir - uses: actions/upload-artifact@v3 + - name: Publish Test Report + uses: scacap/action-surefire-report@v1 + ## Skip cancelled() + ## https://docs.github.com/en/actions/learn-github-actions/expressions#cancelled + if: success() || failure() with: - name: workdir - path: "**/target/site" - publish-test: - name: Publish test results - runs-on: ubuntu-22.04 - needs: test - strategy: - matrix: - module: ["opencga-app", "opencga-catalog", "opencga-client", "opencga-clinical", "opencga-core", "opencga-master", "opencga-server", "opencga-storage", "opencga-storage/opencga-storage-app", "opencga-storage/opencga-storage-benchmark", "opencga-storage/opencga-storage-core", "opencga-storage/opencga-storage-hadoop", "opencga-storage/opencga-storage-server", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps"] - steps: - - name: Download result dir - uses: actions/download-artifact@v3 - with: - name: workdir - - name: Deploy unit tests web recursively to remote - uses: garygrossgarten/github-action-scp@release - with: - local: ${{ matrix.module }}/target/site - remote: /var/www/html/reports/${{ inputs.report_context }}/${{ env.xb_version }}/${{ github.ref_name }}/opencga/${{ github.sha }}/unit/${{ matrix.module }} - host: ${{ secrets.SSH_TESTING_SERVER_HOST}} - port: ${{ secrets.SSH_TESTING_SERVER_PORT}} - username: ${{ secrets.SSH_TESTING_SERVER_USER }} - password: ${{ secrets.SSH_TESTING_SERVER_PASSWORD }} - concurrency: 2 + check_name: "Surefire tests report" + report_paths: './**/surefire-reports/TEST-*.xml' + commit: '${{ github.sha }}' + fail_on_test_failures: true + +# - name: Upload result dir +# uses: actions/upload-artifact@v3 +# with: +# name: workdir +# path: "**/target/site" +# publish-test: +# name: Publish test results +# runs-on: ubuntu-22.04 +# needs: test +# strategy: +# matrix: +# module: ["opencga-app", "opencga-catalog", "opencga-client", "opencga-clinical", "opencga-core", "opencga-master", "opencga-server", "opencga-storage", "opencga-storage/opencga-storage-app", "opencga-storage/opencga-storage-benchmark", "opencga-storage/opencga-storage-core", "opencga-storage/opencga-storage-hadoop", "opencga-storage/opencga-storage-server", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps"] +# steps: +# - name: Download result dir +# uses: actions/download-artifact@v3 +# with: +# name: workdir +# - name: Deploy unit tests web recursively to remote +# uses: garygrossgarten/github-action-scp@release +# with: +# local: ${{ matrix.module }}/target/site +# remote: /var/www/html/reports/${{ inputs.report_context }}/${{ env.xb_version }}/${{ github.ref_name }}/opencga/${{ github.sha }}/unit/${{ matrix.module }} +# host: ${{ secrets.SSH_TESTING_SERVER_HOST}} +# port: ${{ secrets.SSH_TESTING_SERVER_PORT}} +# username: ${{ secrets.SSH_TESTING_SERVER_USER }} +# password: ${{ secrets.SSH_TESTING_SERVER_PASSWORD }} +# concurrency: 2 From 795730c0b070154826a35783d0c5d588069971ee Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 13:04:42 +0200 Subject: [PATCH 070/354] pom: include cellbase-core in opencga-core #TASK-2095 --- opencga-core/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 603b28fc266..848b58fae95 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -50,6 +50,10 @@ org.opencb.cellbase cellbase-client + + org.opencb.cellbase + cellbase-core + org.opencb.oskar oskar-analysis From d9ee6b94c574944549752e5ce439c7d589bb1a7c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 13:48:58 +0200 Subject: [PATCH 071/354] updated maven-surefire-plugin.version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d8b1fd7308a..f36ef9ca58a 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ false false - 2.22.2 + 3.1.0 From 3a5666a24bfc038b2305b1ae7b342693fd06e85d Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 13:49:47 +0200 Subject: [PATCH 072/354] updated maven-surefire-plugin.version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 003a1f26fe3..8d23566bf5c 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,7 @@ false false - 2.22.2 + 3.1.0 From 0e20b66d9d87b18e8c23f9d601efad17b94544ad Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 13:50:33 +0200 Subject: [PATCH 073/354] maven-surefire-report-plugin version update --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 365428810e3..2cf79da2940 100644 --- a/pom.xml +++ b/pom.xml @@ -833,7 +833,7 @@ org.apache.maven.plugins - maven-surefire-plugin + maven-surefire-report-plugin ${maven-surefire-plugin.version} From 1f00e262e1b39d0ab0873af6e28c37999d10ab94 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 19 Jun 2023 18:43:21 +0200 Subject: [PATCH 074/354] Added jersey for storage-hodoop test #TASK-2095 --- .../opencga-storage-hadoop-core/pom.xml | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0e8e429b549..e4777133e32 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -35,6 +35,36 @@ org.opencb.opencga opencga-core + + org.glassfish.jersey.containers + jersey-container-servlet + ${jersey.version} + + + org.glassfish.jersey.inject + jersey-hk2 + ${jersey.version} + + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + + + org.glassfish.jersey.media + jersey-media-multipart + ${jersey.version} + + + org.glassfish.jersey.core + jersey-server + ${jersey.version} + + + org.glassfish.jersey.containers + jersey-container-servlet-core + ${jersey.version} + org.opencb.opencga opencga-storage-core From a416ac4dd7e3b03ea8f2751609a786f813ac480b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 20 Jun 2023 18:39:10 +0200 Subject: [PATCH 075/354] Remove scope runtime for jjwt-impl and jersey for storage-hodoop test #TASK-2095 --- .../opencga-storage-hadoop-core/pom.xml | 30 ------------------- pom.xml | 2 -- 2 files changed, 32 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index e4777133e32..0e8e429b549 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -35,36 +35,6 @@ org.opencb.opencga opencga-core - - org.glassfish.jersey.containers - jersey-container-servlet - ${jersey.version} - - - org.glassfish.jersey.inject - jersey-hk2 - ${jersey.version} - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - - - org.glassfish.jersey.media - jersey-media-multipart - ${jersey.version} - - - org.glassfish.jersey.core - jersey-server - ${jersey.version} - - - org.glassfish.jersey.containers - jersey-container-servlet-core - ${jersey.version} - org.opencb.opencga opencga-storage-core diff --git a/pom.xml b/pom.xml index 2cf79da2940..d310f720724 100644 --- a/pom.xml +++ b/pom.xml @@ -576,13 +576,11 @@ io.jsonwebtoken jjwt-impl ${jjwt.version} - runtime io.jsonwebtoken jjwt-jackson ${jjwt.version} - runtime com.google.protobuf From 4dc6a24c6a66c0f796a514c4ce9dfa1752fbdf65 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 22 Jun 2023 18:29:04 +0200 Subject: [PATCH 076/354] cicd: Comment test report update code #TASK-4464 --- .github/workflows/test-analysis.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index bd06a020e87..5e97eeca344 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -5,9 +5,9 @@ on: test_profile: type: string required: true - report_context: - type: string - required: true +# report_context: +# type: string +# required: true mvn_opts: type: string required: false @@ -15,16 +15,16 @@ on: secrets: SONAR_TOKEN: required: true - SSH_TESTING_SERVER_HOST: - required: true - SSH_TESTING_SERVER_PORT: - required: true - SSH_TESTING_SERVER_USER: - required: true - SSH_TESTING_SERVER_PASSWORD: - required: true -env: - xb_version: "1.7.1" +# SSH_TESTING_SERVER_HOST: +# required: true +# SSH_TESTING_SERVER_PORT: +# required: true +# SSH_TESTING_SERVER_USER: +# required: true +# SSH_TESTING_SERVER_PASSWORD: +# required: true +#env: +# xb_version: "1.7.1" jobs: analysis: From 48b7e4e7cd68d3c289e7efb9816232d1fb501ace Mon Sep 17 00:00:00 2001 From: imedina Date: Fri, 23 Jun 2023 01:28:04 +0100 Subject: [PATCH 077/354] cicd: minor style improvements --- .github/workflows/develop.yml | 3 -- .github/workflows/docker-tools.yml | 7 ----- .github/workflows/release.yml | 3 -- .github/workflows/task.yml | 4 +-- .github/workflows/test-analysis.yml | 43 ++--------------------------- 5 files changed, 3 insertions(+), 57 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index ab685322beb..9d3a1cfd04c 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -24,9 +24,6 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools secrets: inherit -# with: -# test_profile: runShortTests,runMediumTests -# report_context: development deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop diff --git a/.github/workflows/docker-tools.yml b/.github/workflows/docker-tools.yml index 628b28612cc..1847c1ffccb 100644 --- a/.github/workflows/docker-tools.yml +++ b/.github/workflows/docker-tools.yml @@ -15,10 +15,3 @@ jobs: uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: - -# deploy-docker-ext-tools: -# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop -# needs: build -# with: -# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} -# secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7235c1e93ee..15d447b3969 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,9 +23,6 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools secrets: inherit -# with: -# test_profile: runShortTests,runMediumTests -# report_context: xetabase deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index 775e87e77b7..59d093f7dd3 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -5,6 +5,7 @@ on: branches: - TASK-* workflow_dispatch: + #WARNING Develop branch needed for prod jobs: build: @@ -16,9 +17,6 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: build secrets: inherit -# with: -# test_profile: runShortTests -# report_context: development deploy-docker: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 5e97eeca344..2cf07e5c5f1 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -1,13 +1,11 @@ name: Build and test the project + on: workflow_call: inputs: test_profile: type: string required: true -# report_context: -# type: string -# required: true mvn_opts: type: string required: false @@ -15,16 +13,6 @@ on: secrets: SONAR_TOKEN: required: true -# SSH_TESTING_SERVER_HOST: -# required: true -# SSH_TESTING_SERVER_PORT: -# required: true -# SSH_TESTING_SERVER_USER: -# required: true -# SSH_TESTING_SERVER_PASSWORD: -# required: true -#env: -# xb_version: "1.7.1" jobs: analysis: @@ -53,6 +41,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} run: mvn -T 2 clean install -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -DskipTests -Dcheckstyle.skip org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=opencb_opencga + test: name: Execute JUnit and Jacoco tests runs-on: ubuntu-22.04 @@ -93,31 +82,3 @@ jobs: report_paths: './**/surefire-reports/TEST-*.xml' commit: '${{ github.sha }}' fail_on_test_failures: true - -# - name: Upload result dir -# uses: actions/upload-artifact@v3 -# with: -# name: workdir -# path: "**/target/site" -# publish-test: -# name: Publish test results -# runs-on: ubuntu-22.04 -# needs: test -# strategy: -# matrix: -# module: ["opencga-app", "opencga-catalog", "opencga-client", "opencga-clinical", "opencga-core", "opencga-master", "opencga-server", "opencga-storage", "opencga-storage/opencga-storage-app", "opencga-storage/opencga-storage-benchmark", "opencga-storage/opencga-storage-core", "opencga-storage/opencga-storage-hadoop", "opencga-storage/opencga-storage-server", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core", "opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps"] -# steps: -# - name: Download result dir -# uses: actions/download-artifact@v3 -# with: -# name: workdir -# - name: Deploy unit tests web recursively to remote -# uses: garygrossgarten/github-action-scp@release -# with: -# local: ${{ matrix.module }}/target/site -# remote: /var/www/html/reports/${{ inputs.report_context }}/${{ env.xb_version }}/${{ github.ref_name }}/opencga/${{ github.sha }}/unit/${{ matrix.module }} -# host: ${{ secrets.SSH_TESTING_SERVER_HOST}} -# port: ${{ secrets.SSH_TESTING_SERVER_PORT}} -# username: ${{ secrets.SSH_TESTING_SERVER_USER }} -# password: ${{ secrets.SSH_TESTING_SERVER_PASSWORD }} -# concurrency: 2 From a0eb1af9748604fc32dded27cecb61bb7f8a6ca2 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 23 Jun 2023 13:16:30 +0200 Subject: [PATCH 078/354] cicd: Set the test_profile and fail-never in test #TASK-4464 --- .github/workflows/check-junit-test.yml | 1 - .github/workflows/develop.yml | 2 ++ .github/workflows/release.yml | 5 ----- .github/workflows/task.yml | 2 ++ .github/workflows/test-analysis.yml | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index f953642c9eb..4331f156cf5 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -51,6 +51,5 @@ jobs: uses: ./.github/workflows/test-analysis.yml with: test_profile: ${{ needs.get_profiles.outputs.profiles }} - report_context: development mvn_opts: ${{ inputs.mvn_opts }} secrets: inherit \ No newline at end of file diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 9d3a1cfd04c..d480e5b40a8 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -24,6 +24,8 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools secrets: inherit + with: + test_profile: runShortTests,runMediumTests deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 15d447b3969..124be6733d6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,11 +19,6 @@ jobs: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} secrets: inherit - test: - uses: ./.github/workflows/test-analysis.yml - needs: deploy-docker-ext-tools - secrets: inherit - deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index 59d093f7dd3..68b22b50dc8 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -17,6 +17,8 @@ jobs: uses: ./.github/workflows/test-analysis.yml needs: build secrets: inherit + with: + test_profile: runShortTests deploy-docker: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 2cf07e5c5f1..732d92a4e56 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -71,7 +71,7 @@ jobs: mongodb-version: 6.0 mongodb-replica-set: rs-test - name: Run Junit tests - run: mvn -B verify surefire-report:report -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' ${{ inputs.mvn_opts }} + run: mvn -B verify surefire-report:report --fail-never -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' ${{ inputs.mvn_opts }} - name: Publish Test Report uses: scacap/action-surefire-report@v1 ## Skip cancelled() From c18bc8a49ae24b26ddcca54206ac89899aaaff01 Mon Sep 17 00:00:00 2001 From: imedina Date: Sun, 25 Jun 2023 02:10:01 +0100 Subject: [PATCH 079/354] cicd: minor code style improvement --- .github/workflows/develop.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index d480e5b40a8..fa5a1a1449e 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -23,9 +23,9 @@ jobs: test: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools - secrets: inherit with: test_profile: runShortTests,runMediumTests + secrets: inherit deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 124be6733d6..c4149ecf7d2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,7 +43,7 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop - needs: [ build,test ] + needs: [ build, test ] with: artifact: build-folder file: | From c978aef14ab3ee57b2ec553e6a33b15a5ce47458 Mon Sep 17 00:00:00 2001 From: imedina Date: Sun, 25 Jun 2023 02:14:47 +0100 Subject: [PATCH 080/354] cicd: fix release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c4149ecf7d2..9374b55147d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,7 +43,7 @@ jobs: release: uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop - needs: [ build, test ] + needs: [ build, deploy-maven, deploy-docker, deploy-python ] with: artifact: build-folder file: | From e10c9924df39fcc7e23cf355ba9e4b6f62f1329f Mon Sep 17 00:00:00 2001 From: imedina Date: Sun, 25 Jun 2023 02:45:11 +0100 Subject: [PATCH 081/354] cicd: code clean-up --- .github/workflows/release.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index adcf2f27a56..0dc096c34d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,13 +12,6 @@ jobs: with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' -# deploy-docker-ext-tools: -# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x -# needs: build -# with: -# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} -# secrets: inherit - test: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools From 1b91d849beafbaf685924bea5f9ffaf18d546d0b Mon Sep 17 00:00:00 2001 From: imedina Date: Thu, 29 Jun 2023 08:29:33 +0100 Subject: [PATCH 082/354] cicd: clean workflows --- .github/workflows/develop.yml | 13 +++---------- .github/workflows/docker-aws-emr.yml | 2 -- .github/workflows/docker-ext-tools.yml | 2 -- .github/workflows/long-test-analysis.yml | 2 +- .github/workflows/pull-request-merge.yml | 4 ++-- .github/workflows/release.yml | 10 +++++----- .github/workflows/task.yml | 4 ++-- 7 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 94ced2c7296..d3c477cb585 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -9,17 +9,10 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' -# deploy-docker-ext-tools: -# uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x -# needs: build -# with: -# cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} -# secrets: inherit - test: uses: ./.github/workflows/test-analysis.yml needs: deploy-docker-ext-tools @@ -29,14 +22,14 @@ jobs: report_context: development deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init diff --git a/.github/workflows/docker-aws-emr.yml b/.github/workflows/docker-aws-emr.yml index b5bae3ed5ed..d437c7b5d6f 100644 --- a/.github/workflows/docker-aws-emr.yml +++ b/.github/workflows/docker-aws-emr.yml @@ -18,5 +18,3 @@ jobs: with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init secrets: inherit -# DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }} -# DOCKER_HUB_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} diff --git a/.github/workflows/docker-ext-tools.yml b/.github/workflows/docker-ext-tools.yml index b1fd5005436..7f78ec05737 100644 --- a/.github/workflows/docker-ext-tools.yml +++ b/.github/workflows/docker-ext-tools.yml @@ -13,8 +13,6 @@ on: jobs: build: uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x -# with: -# maven_opts: deploy-docker-ext-tools: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x diff --git a/.github/workflows/long-test-analysis.yml b/.github/workflows/long-test-analysis.yml index f516eb25029..3a56faf6339 100644 --- a/.github/workflows/long-test-analysis.yml +++ b/.github/workflows/long-test-analysis.yml @@ -1,6 +1,6 @@ name: Long test for run only on weekend -#Every Saturday at 01:10 +## Every Saturday at 01:10 on: schedule: - cron: '10 1 * * 6' diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index 54a63c56149..41ecfb73141 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -3,8 +3,8 @@ name: "Pull Request Merge Workflow" on: pull_request: branches: - - "develop" - - "release-*" + - develop + - release-* types: - closed diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0dc096c34d4..d110de0c080 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' @@ -21,21 +21,21 @@ jobs: report_context: xetabase deploy-maven: - uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop needs: test with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init secrets: inherit deploy-python: - uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@develop needs: test with: cli: ./clients/python/python-build.sh push @@ -43,7 +43,7 @@ jobs: secrets: inherit release: - uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/release-github-workflow.yml@develop needs: [ build,test ] with: artifact: build-folder diff --git a/.github/workflows/task.yml b/.github/workflows/task.yml index 169993bf4c9..08c1ec937bc 100644 --- a/.github/workflows/task.yml +++ b/.github/workflows/task.yml @@ -9,7 +9,7 @@ on: # WARNING Develop branch needed for prod jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' @@ -22,7 +22,7 @@ jobs: report_context: development deploy-docker: - uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@release-4.9.x + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: test with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init --tag ${{ github.ref_name }} From e56598e14d899df988657b9348322bde05a98cf8 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 30 Jun 2023 13:43:12 +0200 Subject: [PATCH 083/354] pom.xml clean dependencies #TASK-2095 --- opencga-app/pom.xml | 9 +- opencga-storage/opencga-storage-app/pom.xml | 128 ++++++++++- .../opencga-storage-benchmark/pom.xml | 84 ++++++- opencga-storage/opencga-storage-core/pom.xml | 171 +++++++++++--- .../opencga-storage-hadoop-core/pom.xml | 212 +++++++++++++++--- .../opencga-storage-server/pom.xml | 112 ++++++++- opencga-storage/pom.xml | 2 +- 7 files changed, 637 insertions(+), 81 deletions(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 17e403ef8fd..48f9db977c2 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -125,6 +125,11 @@ + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + org.apache.commons commons-collections4 @@ -576,8 +581,8 @@ true - org.opencb.opencga:opencga-storage-hadoop-core:jar:* - org.opencb.opencga:opencga-storage-hadoop-deps-hdp3.1:jar:* + org.opencb.opencga:opencga-storage-hadoop-* + jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6 diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 20b7beae9d4..c6e954cb904 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -55,13 +55,107 @@ org.eclipse.jetty jetty-webapp + + + + javax.ws.rs + javax.ws.rs-api + 2.0.1 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.apache.commons + commons-collections4 + 4.4 + + + io.grpc + grpc-api + 1.28.1 + + + org.opencb.opencga + opencga-core + 2.8.3-SNAPSHOT + + + org.apache.logging.log4j + log4j-core + 2.17.2 + + + com.beust + jcommander + 1.69 + + + org.apache.avro + avro + 1.7.7 + + + org.apache.httpcomponents + httpclient + 4.5.6 + - org.glassfish.jersey.containers - jersey-container-servlet-core + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT - junit - junit + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 + + + com.github.samtools + htsjdk + 2.23.0 @@ -181,6 +275,32 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + org.opencb.opencga:opencga-storage-hadoop* + + javax.servlet:javax.servlet-api:jar:3.1.0 + + org.eclipse.jetty:* + + jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6 + + + + + + diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index dc6419546c6..45250b7c749 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -38,11 +38,7 @@ org.opencb.opencga opencga-core - - org.apache.logging.log4j - log4j-api - ${log4j2.version} - + org.opencb.opencga opencga-storage-core @@ -118,6 +114,57 @@ + + org.apache.jmeter + jorphan + 5.0 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.11.4 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.apache.jmeter + ApacheJMeter_components + 5.0 + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.google.guava + guava + 19.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + com.beust + jcommander + 1.69 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + org.opencb.opencga @@ -171,5 +218,30 @@ - + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + javax.servlet:javax.servlet-api:jar:3.1.0 + + org.opencb.opencga:opencga-storage-hadoop-deps* + + + + + + + + \ No newline at end of file diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 73d43795c20..20613eb8a77 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -46,10 +46,7 @@ cellbase-client - - org.glassfish.jersey.containers - jersey-container-servlet - + junit junit @@ -85,34 +82,18 @@ - - com.esotericsoftware.kryo - kryo - 2.23.0 - + org.apache.solr solr-solrj - - org.apache.solr - solr-test-framework - - - org.apache.httpcomponents - httpclient - 4.5.6 - + com.fasterxml.jackson.core jackson-annotations ${jackson.version} - - org.opencb.oskar - oskar-analysis - ${oskar.version} - + com.microsoft.azure azure-storage-blob @@ -123,12 +104,152 @@ org.apache.logging.log4j - log4j-slf4j-impl + log4j-core + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + commons-io + commons-io + 2.5 + + + org.slf4j + slf4j-api + 1.7.32 + + + com.google.protobuf + protobuf-java + 3.11.4 + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + com.google.guava + guava + 19.0 + + + commons-codec + commons-codec + 1.7 + + + commons-lang + commons-lang + 2.6 + test + + + org.apache.commons + commons-compress + 1.4.1 + + + io.reactivex.rxjava2 + rxjava + 2.2.0 + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + com.microsoft.rest.v2 + client-runtime + 2.1.0 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.reactivestreams + reactive-streams + 1.0.0 + + + org.hamcrest + hamcrest-core + 1.3 + test + + + org.apache.commons + commons-collections4 + 4.4 + + + org.opencb.cellbase + cellbase-core + 5.4.1-SNAPSHOT + + + org.xerial.snappy + snappy-java + 1.1.7.6 + + + org.apache.avro + avro + 1.7.7 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT org.apache.logging.log4j - log4j-core + log4j-api + 2.17.2 + + org.apache.solr + solr-core + 8.8.2 + test + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + com.github.samtools + htsjdk + 2.23.0 + + diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0e8e429b549..711dd991bf4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -86,40 +86,6 @@ org.apache.solr solr-solrj - - org.apache.solr - solr-test-framework - - - org.apache.hadoop - hadoop-auth - - - org.apache.hadoop - hadoop-common - - - org.apache.hadoop - hadoop-hdfs - - - org.apache.htrace - htrace-core - - - org.apache.httpcomponents - httpcore - - - org.apache.httpcomponents - httpmime - - - org.apache.zookeeper - zookeeper - - - org.opencb.opencga @@ -129,6 +95,164 @@ test-jar test + + + + org.opencb.ga4gh + ga4gh + 0.6.0a5 + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + commons-io + commons-io + 2.5 + + + org.slf4j + slf4j-api + 1.7.32 + + + org.slf4j + jcl-over-slf4j + 1.7.24 + + + com.google.protobuf + protobuf-java + 3.11.4 + + + org.opencb.biodata + biodata-formats + 2.8.1-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-annotations + 2.11.4 + + + org.opencb.cellbase + cellbase-client + 5.4.1-SNAPSHOT + test + + + org.apache.logging.log4j + log4j-core + 2.17.2 + test + + + org.apache.parquet + parquet-hadoop + 1.7.0 + + + commons-lang + commons-lang + 2.6 + + + org.apache.ant + ant + 1.10.12 + + + org.apache.zookeeper + zookeeper + 3.4.6 + test + + + org.opencb.commons + commons-lib + 4.8.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + org.opencb.oskar + oskar-analysis + 0.2.1 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.hamcrest + hamcrest-core + 1.3 + test + + + org.apache.commons + commons-collections4 + 4.4 + + + org.apache.avro + avro + 1.7.7 + + + org.apache.avro + avro-mapred + hadoop2 + 1.7.7 + + + commons-logging + commons-logging + 1.1.3 + + + org.apache.parquet + parquet-common + 1.7.0 + + + org.opencb.biodata + biodata-tools + 2.8.1-SNAPSHOT + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT + + + org.apache.logging.log4j + log4j-api + 2.17.2 + test + + + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + + + com.github.samtools + htsjdk + 2.23.0 + @@ -178,6 +302,26 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + commons-logging:commons-logging:jar:1.1.3 + + + + + + diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index a85387cf2cf..821db18b37a 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -40,10 +40,7 @@ org.eclipse.jetty jetty-server - - org.eclipse.jetty - jetty-webapp - + org.glassfish.jersey.containers jersey-container-servlet-core @@ -52,18 +49,95 @@ com.google.protobuf protobuf-java + + + + + org.slf4j + slf4j-api + 1.7.32 + - com.google.protobuf - protobuf-java-util + javax.servlet + javax.servlet-api + 3.1.0 + + + org.mortbay.jetty + servlet-api + 2.5-20081211 + + + com.fasterxml.jackson.core + jackson-core + 2.11.4 + + + org.eclipse.jetty + jetty-servlet + 9.4.17.v20190418 + + + io.grpc + grpc-api + 1.28.1 + + + com.google.guava + guava + 19.0 + + + org.opencb.opencga + opencga-core + 2.8.3-SNAPSHOT + + + org.apache.avro + avro + 1.7.7 + + + org.glassfish.jersey.core + jersey-server + 2.30.1 + + + io.grpc + grpc-protobuf + 1.28.1 + + + org.opencb.biodata + biodata-models + 2.8.1-SNAPSHOT io.grpc - grpc-all + grpc-stub + 1.28.1 + + + org.apache.commons + commons-lang3 + 3.12.0 + + + org.opencb.commons + commons-datastore-core + 4.8.1-SNAPSHOT + + + jakarta.ws.rs + jakarta.ws.rs-api + 2.1.6 - junit - junit + com.fasterxml.jackson.core + jackson-databind + 2.11.4 + @@ -106,6 +180,26 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + true + + org.mortbay.jetty:servlet-api:jar:2.5-20081211 + + + + + + \ No newline at end of file diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 21e6134eb06..eb952d61300 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -101,7 +101,7 @@ analyze-only - false + true From 41d579271c73f32ef13b30479667cbfd781ed038 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 30 Jun 2023 13:55:47 +0200 Subject: [PATCH 084/354] pom.xm opencga-storage-hadoop-deps maven-dependency-plugin failOnWarning false #TASK-2095 --- .../opencga-storage-hadoop-deps/pom.xml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8788d1547ac..8f416402b64 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -927,6 +927,32 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.5.0 + + + analyze + + analyze-only + + + false + + + + + + + + + + + + + + From d81b022946f533cf1714d9fc5831540b2c375c4f Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 30 Jun 2023 15:48:48 +0200 Subject: [PATCH 085/354] Pom: update the version to the same as develop #TASK-2095 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 4 ++-- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 4 ++-- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index a3949a3bf6c..ab1b4c71b3b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 48f9db977c2..eb8d3cfcafa 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 87930e3fa50..ba84d5e1bd6 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 4614858b3e0..89d5e0fd9b4 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index ce0df466e95..dca67d48e2c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 3da18692228..79dedecfa1c 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 02bed47538a..a493c70cd9d 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index c355b8501f3..5ca2d98a39f 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index c6e954cb904..d8b879350bf 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml @@ -90,7 +90,7 @@ org.opencb.opencga opencga-core - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT org.apache.logging.log4j diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 45250b7c749..5d75f97c1f2 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 20613eb8a77..40c9949b6c4 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 711dd991bf4..02f6782ab2b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index b3b9bcc68cc..001205ea43e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 185a923475d..e8ed3f367fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 4a1ed4cb963..19403f3054e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8f416402b64..20f574becf6 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 5f3b2235c63..d2c588dc56f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 821db18b37a..c131c7f1085 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml @@ -90,7 +90,7 @@ org.opencb.opencga opencga-core - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT org.apache.avro diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index eb952d61300..702aaa9499c 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 2db22d5a2d2..7fd0954ae9c 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index d310f720724..ef8c62756b6 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3-SNAPSHOT + 2.10.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From 17a7fbf3c0af4b6b42be9d9180089344c506aa8e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 30 Jun 2023 16:42:30 +0200 Subject: [PATCH 086/354] Fix Oskar version --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 1cb591b2c53..91d68798525 100644 --- a/pom.xml +++ b/pom.xml @@ -42,11 +42,13 @@ + 2.10.0_dev 2.10.0_dev 5.6.0-SNAPSHOT 2.10.0-SNAPSHOT 4.10.0-SNAPSHOT + 0.2.1 2.10.0-SNAPSHOT From 36d3eaeb87d4b8fbf2e4127b0b2fbff6b2ed7b6e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 3 Jul 2023 13:53:00 +0200 Subject: [PATCH 087/354] POM: opencga-storage-hadoop-core Adding some jars for tests #TASK-2095 --- .../opencga-storage-hadoop-core/pom.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 02f6782ab2b..bfb4332a48c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -96,6 +96,19 @@ test + + org.glassfish.jersey.containers + jersey-container-servlet + + + org.apache.solr + solr-solrj + + + org.apache.solr + solr-test-framework + + org.opencb.ga4gh @@ -317,6 +330,10 @@ commons-logging:commons-logging:jar:1.1.3 + org.glassfish.jersey.containers:jersey-container-servlet:jar:* + + org.apache.solr:solr* + From 9352ef304b14a62ce259d9224f523c24f8ab8f89 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 3 Jul 2023 16:01:56 +0200 Subject: [PATCH 088/354] pom.xml opencga-storage-hadoop-core Fix IllegalState InjectionManagerFactory not found. #TASK-2095 --- .../opencga-storage-hadoop-core/pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index bfb4332a48c..b1fe6c0ccca 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -65,6 +65,11 @@ 1.7.0 + + org.glassfish.jersey.inject + jersey-hk2 + + org.opencb.opencga @@ -334,6 +339,8 @@ org.apache.solr:solr* + org.glassfish.jersey.inject:jersey-hk2* + From e91a3fa0eca13bf587a451f9b03cbbcda4b61ec1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jul 2023 11:19:26 +0200 Subject: [PATCH 089/354] pom.xml javax servlet added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index ab1b4c71b3b..7c62074d1dc 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -65,6 +65,13 @@ test-jar test + + + javax.servlet + javax.servlet-api + 3.1.0 + test + org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} @@ -249,6 +256,9 @@ com.google.code.findbugs:annotations:jar:${findbugs-annotations.version} + + javax.servlet:javax.servlet-api* + From b11315d3d030df9f9e976fbea724165057c2a756 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jul 2023 14:04:33 +0200 Subject: [PATCH 090/354] pom.xml opencga-storage-hadoop-deps.artifactId test-jar added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 7c62074d1dc..390b567a432 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -69,8 +69,6 @@ javax.servlet javax.servlet-api - 3.1.0 - test org.opencb.opencga @@ -78,6 +76,14 @@ shaded test + + org.opencb.opencga + ${opencga-storage-hadoop-deps.artifactId} + ${project.parent.version} + tests + test-jar + test + org.opencb.commons commons-lib From bbb09c984bde8d84debfc8616086360b467d0f14 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jul 2023 14:44:34 +0200 Subject: [PATCH 091/354] pom.xml opencga-storage-hadoop-deps.artifactId test-jar added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 390b567a432..7e295f6143d 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -265,6 +265,9 @@ javax.servlet:javax.servlet-api* + + org.opencb.opencga:opencga-storage-hadoop-deps-* + From 37b2bfdc0c733e8d570f1d882bdccff4eb048f7b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jul 2023 18:37:38 +0200 Subject: [PATCH 092/354] pom.xml org.apache.solr added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 7e295f6143d..916b39e159b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -224,6 +224,16 @@ junit junit + + + org.apache.solr + solr-solrj + + + org.apache.solr + solr-test-framework + + @@ -268,6 +278,10 @@ org.opencb.opencga:opencga-storage-hadoop-deps-* + + org.apache.solr:* + + From 5dc0d2f799f509079ca266516436b9777290a6a4 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jul 2023 18:41:26 +0200 Subject: [PATCH 093/354] pom.xml org.apache.solr added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 916b39e159b..5e29fcc8716 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -225,10 +225,6 @@ junit - - org.apache.solr - solr-solrj - org.apache.solr solr-test-framework From db9b2b2d08f447f3626c6173e5d6012c5c76160c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 5 Jul 2023 10:42:53 +0200 Subject: [PATCH 094/354] pom.xml clinical and mockito added to opencga-analysis #TASK-2095 --- opencga-analysis/pom.xml | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 5e29fcc8716..04ca3249e71 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -32,12 +32,20 @@ org.opencb.opencga - opencga-core + opencga-storage-core org.opencb.opencga opencga-catalog + + org.opencb.commons + commons-datastore-core + + + org.opencb.opencga + opencga-core + org.opencb.opencga opencga-catalog @@ -84,6 +92,21 @@ test-jar test + + + org.mockito + mockito-core + + + junit + junit + + + org.opencb.opencga + opencga-clinical + ${project.parent.version} + compile + org.opencb.commons commons-lib @@ -277,7 +300,8 @@ org.apache.solr:* - + org.opencb.opencga:opencga-clinical* + From 9aa9345e4613f1eab9a7b029ec65a629613ea436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 6 Jul 2023 12:57:02 +0100 Subject: [PATCH 095/354] storage: Add exec command to HBaseMain #TASK-4372 --- .../storage/hadoop/app/AbstractMain.java | 48 ++++++-- .../opencga/storage/hadoop/app/HBaseMain.java | 115 ++++++++++++++++++ .../HadoopMRLoadVariantStoragePipeline.java | 23 +--- .../variant/executors/MRExecutorFactory.java | 5 +- 4 files changed, 159 insertions(+), 32 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/AbstractMain.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/AbstractMain.java index 7c51704a1a8..91d9b6f2388 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/AbstractMain.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/AbstractMain.java @@ -122,24 +122,52 @@ protected static ObjectMap getArgsMap(String[] args, int firstIdx, String... key ObjectMap argsMap; argsMap = new ObjectMap(); int i = firstIdx; + int offset; while (i < args.length) { - String key = args[i]; - while (key.startsWith("-")) { - key = key.substring(1); + String inputKey = args[i]; + offset = 1; + String key; + String value; + if (inputKey.startsWith("--")) { + key = inputKey.substring(2); + value = safeArg(args, i + 1); + offset++; // one extra value read + } else if (inputKey.startsWith("-")) { + key = inputKey.substring(1, 2); + value = inputKey.substring(2); + if (value.isEmpty()) { + value = safeArg(args, i + 1); + offset++; // one extra value read + } + } else { + throw new IllegalArgumentException("Unknown argument '" + inputKey + "'"); + } + if (value == null || value.startsWith("-")) { + value = "true"; + offset--; // extra value discarded } if (!acceptedKeys.isEmpty()) { if (!acceptedKeys.contains(key)) { - throw new IllegalArgumentException("Unknown argument '" + args[i] + "'"); + throw new IllegalArgumentException("Unknown argument '" + inputKey + "'"); } } - String value = safeArg(args, i + 1); - if (value == null || value.startsWith("-")) { - argsMap.put(key, true); - i += 1; + + if (key.equals("D")) { + ObjectMap dynamic = (ObjectMap) argsMap.computeIfAbsent(key, k -> new ObjectMap()); + String[] split = value.split("=", 2); + if (split.length != 2) { + throw new IllegalArgumentException("Expected '-D key=value'"); + } + if (dynamic.put(split[0], split[1]) != null) { + throw new IllegalArgumentException("Duplicated argument '-D " + value + "'"); + } } else { - argsMap.put(key, value); - i += 2; + if (argsMap.put(key, value) != null) { + throw new IllegalArgumentException("Duplicated param '" + inputKey + "'"); + } } + i += offset; + } return argsMap; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java index 004f4f8e2ff..f713fbc2e9e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java @@ -10,14 +10,21 @@ import org.apache.hadoop.hbase.client.SnapshotDescription; import org.apache.hadoop.hbase.client.TableState; import org.apache.hadoop.hbase.exceptions.IllegalArgumentIOException; +import org.apache.tools.ant.types.Commandline; import org.opencb.commons.ProgressLogger; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.opencga.core.common.TimeUtils; +import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.storage.hadoop.utils.HBaseManager; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine; +import org.opencb.opencga.storage.hadoop.variant.executors.MRExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.FileInputStream; import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -36,6 +43,8 @@ public class HBaseMain extends AbstractMain { public static final String SNAPSHOT_TABLE = "snapshot-table"; public static final String DELETE_SNAPSHOTS = "delete-snapshots"; public static final String CLONE_SNAPSHOTS = "clone-snapshots"; + public static final String EXPORT_SNAPSHOTS = "export-snapshots"; + public static final String EXEC = "exec"; public static final String DISABLE_TABLE = "disable-table"; public static final String DROP_TABLE = "drop-table"; public static final String ENABLE_TABLE = "enable-table"; @@ -137,6 +146,25 @@ public void run(String[] args) throws Exception { ); break; } + case EXPORT_SNAPSHOTS: { + ObjectMap argsMap = getArgsMap(args, 1, "dryRun", "snapshot", "copy-to", "copy-to-local", "copy-from", "target", + "mappers", "overwrite", "D"); + exportSnapshot(null, + argsMap.getString("snapshot"), + argsMap.getString("copy-to"), + argsMap.getBoolean("copy-to-local"), + argsMap.getString("copy-from"), + argsMap.getString("target"), + argsMap.getString("mappers"), + argsMap.getBoolean("overwrite"), + argsMap.getBoolean("dryRun"), + argsMap); + break; + } + case EXEC: { + exec(getArg(args, 1), Arrays.asList(args).subList(2, args.length)); + break; + } case DISABLE_TABLE: { ObjectMap argsMap = getArgsMap(args, 2, "dryRun"); disableTables(getArg(args, 1), argsMap.getBoolean("dryRun")); @@ -186,6 +214,25 @@ public void run(String[] args) throws Exception { + "[--onExistingTables [fail|skip|drop] ]"); System.out.println(" Clone all snapshots into tables matching the regex. " + "Generated tables can have a table prefix change."); +// System.out.println(" " + EXPORT_SNAPSHOTS + " \n" +// + " --dryRun Dry run.\n" +// + " --snapshot Snapshot to restore.\n" +// + " --copyTo Remote destination hdfs://\n" +// + " --copyFrom Input folder hdfs:// (default hbase.rootdir)\n" +// + " --target Target name for the snapshot.\n" +//// + " --no-checksum-verify Do not verify checksum, use name+length only.\n" +//// + " --no-target-verify Do not verify the integrity of the exported snapshot.\n" +// + " --overwrite Rewrite the snapshot manifest if already exists.\n" +//// + " --chuser Change the owner of the files to the specified one.\n" +//// + " --chgroup Change the group of the files to the specified one.\n" +//// + " --chmod Change the permission of the files to the specified one.\n" +//// + " --bandwidth Limit bandwidth to this value in MB/second.\n" +// + " --mappers Number of mappers to use during the copy (mapreduce.job.maps).\n" +// + " -Dkey=value Other key-value fields"); +// System.out.println(" Clone all snapshots into tables matching the regex. " +// + "Generated tables can have a table prefix change."); + System.out.println(" " + EXEC + "[hadoop|yarn|hbase|hdfs]"); + System.out.println(" Execute a MR job on the hadoop cluster. Use \"exec yarn jar ....\""); System.out.println(" " + DISABLE_TABLE + " [--dryRun]"); System.out.println(" Disable all tables matching the regex."); System.out.println(" " + DROP_TABLE + " [--dryRun]"); @@ -199,6 +246,74 @@ public void run(String[] args) throws Exception { } + private void exec(String tool, List args) throws Exception { + Path opencgaHome = Paths.get(System.getProperty("app.home")); + String storageConfigurationPath = opencgaHome.resolve("conf").resolve("storage-configuration.yml").toString(); + StorageConfiguration storageConfiguration; + try (FileInputStream is = new FileInputStream(storageConfigurationPath)) { + storageConfiguration = StorageConfiguration.load(is); + } + + HadoopVariantStorageEngine engine = new HadoopVariantStorageEngine(); + engine.setConfiguration(storageConfiguration, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, ""); + + MRExecutor mrExecutor = engine.getMRExecutor(); + mrExecutor.run(tool, args.toArray(new String[0])); + } + + private void exportSnapshot(String storageConfigurationPath, String snapshot, String copyTo, boolean copyToLocal, + String copyFrom, String target, + String mappers, boolean overwrite, boolean dryRun, ObjectMap options) throws Exception { + if (storageConfigurationPath == null) { + Path opencgaHome = Paths.get(System.getProperty("app.home")); + storageConfigurationPath = opencgaHome.resolve("conf").resolve("storage-configuration.yml").toString(); + } + StorageConfiguration storageConfiguration; + try (FileInputStream is = new FileInputStream(storageConfigurationPath)) { + storageConfiguration = StorageConfiguration.load(is); + } + + List args = new LinkedList<>(); + args.add(org.apache.hadoop.hbase.snapshot.ExportSnapshot.class.getName()); + for (Map.Entry entry : options.get("D", ObjectMap.class, new ObjectMap()).entrySet()) { + args.add("-D" + entry.getKey() + "=" + entry.getValue().toString()); + } + args.add("--snapshot"); + args.add(snapshot); + if (StringUtils.isNotEmpty(copyTo)) { + args.add("--copy-to"); + args.add(copyTo); + } else if (copyToLocal) { + args.add("--copy-to"); + args.add(hBaseManager.getConf().get(HConstants.HBASE_DIR)); + } + if (StringUtils.isNotEmpty(copyFrom)) { + args.add("--copy-from"); + args.add(copyFrom); + } + if (StringUtils.isNotEmpty(target)) { + args.add("--target"); + args.add(target); + } + if (overwrite) { + args.add("--overwrite"); + } + if (StringUtils.isNotEmpty(mappers)) { + args.add("--mappers"); + args.add(mappers); + } + + if (dryRun) { + System.out.println("hbase " + Commandline.toString(args.toArray(new String[0]))); + } else { + HadoopVariantStorageEngine engine = new HadoopVariantStorageEngine(); + engine.setConfiguration(storageConfiguration, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, ""); + + MRExecutor mrExecutor = engine.getMRExecutor(); + mrExecutor.run("hbase", args.toArray(new String[0])); + } + } + private void regionsPerTable(String tableNameStr) throws Exception { // TableName tableName = getTable(tableNameStr); // hBaseManager.act(tableName.getNameAsString(), (table, admin) -> { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopMRLoadVariantStoragePipeline.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopMRLoadVariantStoragePipeline.java index 06284118162..c508f42e848 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopMRLoadVariantStoragePipeline.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopMRLoadVariantStoragePipeline.java @@ -35,7 +35,6 @@ import java.io.IOException; import java.net.URI; -import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.MR_HADOOP_BIN; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.INTERMEDIATE_HDFS_DIRECTORY; /** @@ -96,29 +95,11 @@ public URI preLoad(URI input, URI output) throws StorageEngineException { protected void load(URI input, URI outdir, int studyId, int fileId) throws StorageEngineException { URI vcfMeta = URI.create(VariantReaderUtils.getMetaFromTransformedFile(input.toString())); - - String hadoopRoute = options.getString(MR_HADOOP_BIN.key(), MR_HADOOP_BIN.defaultValue()); - String jar = MRExecutor.getJarWithDependencies(getOptions()); - - Class execClass = ArchiveDriver.class; - String executable = hadoopRoute + " jar " + jar + " " + execClass.getName(); String args = ArchiveDriver.buildCommandLineArgs(input, vcfMeta, dbAdaptor.getVariantTable(), getArchiveTable(), studyId, fileId, options); - - long startTime = System.currentTimeMillis(); - logger.info("------------------------------------------------------"); - logger.info("Loading file {} into archive table '{}'", fileId, getArchiveTable()); - logger.debug(executable + " " + args); - logger.info("------------------------------------------------------"); - int exitValue = mrExecutor.run(executable, Commandline.translateCommandline(args)); - logger.info("------------------------------------------------------"); - logger.info("Exit value: {}", exitValue); - logger.info("Total time: {}s", (System.currentTimeMillis() - startTime) / 1000.0); - if (exitValue != 0) { - throw new StorageEngineException("Error loading file " + input + " into archive table \"" - + getArchiveTable() + "\""); - } + mrExecutor.run(ArchiveDriver.class, Commandline.translateCommandline(args), + "Loading file " + fileId + " into archive table '" + getArchiveTable() + "'"); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutorFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutorFactory.java index 14325ec42ed..29666831779 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutorFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/executors/MRExecutorFactory.java @@ -10,7 +10,10 @@ * * @author Jacobo Coll <jacobo167@gmail.com> */ -public class MRExecutorFactory { +public final class MRExecutorFactory { + + private MRExecutorFactory() { + } public static MRExecutor getMRExecutor(ObjectMap options) throws StorageEngineException { MRExecutor mrExecutor; From aee57983914db3c06771540a3d4c17f8d8eb37ad Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 11 Jul 2023 11:46:08 +0200 Subject: [PATCH 096/354] Fix for long test #TASK-2095 --- .../opencga/storage/core/metadata/models/ProjectMetadata.java | 4 ++-- .../storage/core/variant/annotation/DummyTestAnnotator.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/ProjectMetadata.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/ProjectMetadata.java index c27111d1c03..d2f22cb24d0 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/ProjectMetadata.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/ProjectMetadata.java @@ -85,10 +85,10 @@ public VariantAnnotationMetadata() { sourceVersion = new ArrayList<>(); } - public VariantAnnotationMetadata(int id, String name, Date creationDate, VariantAnnotatorProgram annotator, + /* public VariantAnnotationMetadata(int id, String name, Date creationDate, VariantAnnotatorProgram annotator, List sourceVersion, DataRelease dataRelease) { - } + }*/ public VariantAnnotationMetadata(int id, String name, Date creationDate, VariantAnnotatorProgram annotator, List sourceVersion, DataRelease dataRelease, List privateSources) { this.id = id; diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java index 71f5135e08c..b36e8fa90ad 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java @@ -59,7 +59,7 @@ public List annotate(List variants) throws VariantAn public ProjectMetadata.VariantAnnotationMetadata getVariantAnnotationMetadata() throws VariantAnnotatorException { return new ProjectMetadata.VariantAnnotationMetadata(-1, null, null, new ProjectMetadata.VariantAnnotatorProgram("MyAnnotator", key, null), - Collections.singletonList(new ObjectMap("data", "genes")), null); + Collections.singletonList(new ObjectMap("data", "genes")), null,null); } } From 0d335223287137bb4b9d3306076c024287a40b04 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 12 Jul 2023 17:26:13 +0200 Subject: [PATCH 097/354] Fix needs in release.yml --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0ed6340be1f..204f13d2b72 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,21 +14,21 @@ jobs: deploy-maven: uses: opencb/java-common-libs/.github/workflows/deploy-maven-repository-workflow.yml@develop - needs: test + needs: build with: maven_opts: -P storage-hadoop,hdp3.1 -Dopencga.war.name=opencga secrets: inherit deploy-docker: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop - needs: test + needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images base,init secrets: inherit deploy-python: uses: opencb/java-common-libs/.github/workflows/deploy-python-workflow.yml@develop - needs: test + needs: build with: cli: ./clients/python/python-build.sh push artifact: build-folder From 95ed1adf2d269b4715def60d0c3d3826093d04a4 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 13 Jul 2023 08:39:35 +0200 Subject: [PATCH 098/354] update version --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index ec07e770980..ddefa7d2618 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 487f8a79b70..c0bc97362b9 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index a477a10338c..c911504528d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 2253ab703c1..25c7042ce63 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 1f4081610ce..d7c383eec63 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 2d20981f882..b23641a3dbd 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index f1328ae8014..d1e079cf6a8 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index f31a834b58c..f16e51062b9 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index c880ba80e4d..209b780bb8c 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 1ffa40499d6..e43034af54f 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index e3680f726a9..95c37c68a8c 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 4952d05abfa..ca90d6fc622 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index ffa0a154cd5..001205ea43e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 1e5cc5980ab..e8ed3f367fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 44eb9fb37a9..19403f3054e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index b3d21b69d62..f46f425eede 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 44c89fd9b22..d2c588dc56f 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 3a7acd6082b..42703d7ee32 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 21edba58336..643cebae481 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 6210dc8d2b0..18c878e910c 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index a71ba63f9d8..778d57c8df0 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.2.1 + 2.10.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From 1319dca78325329eff09996d47169d24be609317 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 17 Jul 2023 01:33:54 +0100 Subject: [PATCH 099/354] Prepare release 2.10.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index ddefa7d2618..7844c61c782 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index c0bc97362b9..b25eb3d7e06 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index c911504528d..3e041c2a767 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 25c7042ce63..9ae20b273bf 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index d7c383eec63..2b909b97d2c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b23641a3dbd..52e0d9d9795 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index d1e079cf6a8..14e9ff88442 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index f16e51062b9..229956a4b60 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 209b780bb8c..9c06003c1e6 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index e43034af54f..08a6603cd59 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 95c37c68a8c..85c6321289e 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ca90d6fc622..ee34b8f5284 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 001205ea43e..30c0ceba8df 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index e8ed3f367fc..d9705a34f36 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 19403f3054e..6dcbbea5635 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index f46f425eede..7c5d8e9cc86 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index d2c588dc56f..39134f16293 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 42703d7ee32..ee14da290e4 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 643cebae481..288064b9406 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 18c878e910c..a34e79d3d87 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 ../pom.xml diff --git a/pom.xml b/pom.xml index 4d35b06f169..7469f82817d 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.10.0 pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.10.0_dev - 2.10.0_dev - 5.6.0-SNAPSHOT - 2.10.0-SNAPSHOT - 4.10.0-SNAPSHOT - 2.10.0-SNAPSHOT + 2.10.0 + 2.10.0 + 5.6.0 + 2.10.0 + 4.10.0 + 2.10.0 0.2.0 From a19ea40fb4c466b86df0a2b5714ffbe00b2173cb Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 17 Jul 2023 01:37:14 +0100 Subject: [PATCH 100/354] Prepare new development branch release-2.10.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 7844c61c782..adcb53e2d0e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index b25eb3d7e06..b787e5d11d2 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 3e041c2a767..fac7d8e548a 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 9ae20b273bf..22a563296b0 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 2b909b97d2c..de52a8ef4e1 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 52e0d9d9795..e2d8fc127e4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 14e9ff88442..2d6fd5a8da6 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 229956a4b60..65cebaebdda 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 9c06003c1e6..cafb6d1c2ac 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 08a6603cd59..aa79ec720fd 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 85c6321289e..b97d0472984 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ee34b8f5284..97db69b63b9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 30c0ceba8df..1c27bd10350 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index d9705a34f36..f1f99b70468 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 6dcbbea5635..03561e6c93d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 7c5d8e9cc86..c0e60a63db5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 39134f16293..1ea5e5a91d1 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index ee14da290e4..c9a6b5604a3 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 288064b9406..49b680170d0 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index a34e79d3d87..caa613c03e2 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 7469f82817d..c0b9f02fd71 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0 + 2.11.0-SNAPSHOT pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.10.0 - 2.10.0 - 5.6.0 - 2.10.0 - 4.10.0 - 2.10.0 + 2.11.0_dev + 2.11.0_dev + 5.7.0-SNAPSHOT + 2.11.0-SNAPSHOT + 4.11.0-SNAPSHOT + 2.11.0-SNAPSHOT 0.2.0 From 7d4ed6df4477d6e063fb5ef1c5b19de642c04122 Mon Sep 17 00:00:00 2001 From: imedina Date: Mon, 17 Jul 2023 01:41:02 +0100 Subject: [PATCH 101/354] cicd: fix develop.yml 'needs' variable --- .github/workflows/develop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 0e8f622a2b6..50c396dd7cc 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -15,7 +15,7 @@ jobs: test: uses: ./.github/workflows/test-analysis.yml - needs: deploy-docker-ext-tools + needs: build with: test_profile: runShortTests,runMediumTests secrets: inherit From e65f12950761b888173be62446b167bb76ba6184 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 21 Jul 2023 13:56:50 +0200 Subject: [PATCH 102/354] Fix weekend cicd syntax --- .github/workflows/long-test-analysis.yml | 4 ++-- .../storage/core/variant/annotation/DummyTestAnnotator.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/long-test-analysis.yml b/.github/workflows/long-test-analysis.yml index ef610d74bda..c898c4dfa0b 100644 --- a/.github/workflows/long-test-analysis.yml +++ b/.github/workflows/long-test-analysis.yml @@ -5,13 +5,13 @@ name: Long test for run only on weekend on: schedule: - cron: '10 1 * * 6' + workflow_dispatch: jobs: test: uses: ./.github/workflows/test-analysis.yml secrets: inherit with: - test_profile: runLongTests,runMediumTests,runShortTests - report_context: development + test_profile: runShortTests,runMediumTests,runLongTests, diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java index 71f5135e08c..b36e8fa90ad 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java @@ -59,7 +59,7 @@ public List annotate(List variants) throws VariantAn public ProjectMetadata.VariantAnnotationMetadata getVariantAnnotationMetadata() throws VariantAnnotatorException { return new ProjectMetadata.VariantAnnotationMetadata(-1, null, null, new ProjectMetadata.VariantAnnotatorProgram("MyAnnotator", key, null), - Collections.singletonList(new ObjectMap("data", "genes")), null); + Collections.singletonList(new ObjectMap("data", "genes")), null,null); } } From 026500f25a9c59c1bac60d1be8f1912e0d319ebc Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 24 Jul 2023 10:28:23 +0200 Subject: [PATCH 103/354] Prepare release 2.9.2 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index aec5669b12f..90785305aeb 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index a9fe3703f97..487a5db6a10 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 43fb05be14d..72f6826b01c 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index bed3ac24829..0fe70424e93 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 9f85a0ff7d0..4c2ca0fcc8f 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 8544e3bbd09..169f823dc73 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 898205375bc..588edea3bec 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 957eb127745..ce486179b63 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 45bd1dd22c1..c8b4d7baaab 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index cdd5e80590b..529f72d4704 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index ab277249b74..2fb5ee548ad 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 2ef22a0bf03..8e77648c007 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 6ed975a82d8..1184125129d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 422fa4f30c2..e0433aecf75 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index a2e8db3647b..6dfda56b33c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 246bdd0cc61..2a11460e046 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index e7302b47a65..1e3a6fe0ab7 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 580e03d7ebc..6ada960d62c 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index eff64556c36..5147b9ca3db 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 6b0e2013c39..83b52baf0c0 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 ../pom.xml diff --git a/pom.xml b/pom.xml index f36ef9ca58a..76c206990bb 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2-SNAPSHOT + 2.9.2 pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.9.2_dev - 2.9.2_dev - 5.5.1-SNAPSHOT - 2.9.1-SNAPSHOT - 4.9.1-SNAPSHOT - 2.9.2-SNAPSHOT + 2.9.2 + 2.9.2 + 5.5.0 + 2.9.0 + 4.9.0 + 2.9.2 0.2.0 2.11.4 From 0531651b3809695c77c6526e4fb7053e9e23de8b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 25 Jul 2023 10:17:51 +0200 Subject: [PATCH 104/354] Update version for Port Patch 1.7.2 -> 1.9.0 #TASK-4810 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 90785305aeb..adcb53e2d0e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 487a5db6a10..b787e5d11d2 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 72f6826b01c..fac7d8e548a 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 0fe70424e93..22a563296b0 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 4c2ca0fcc8f..de52a8ef4e1 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 169f823dc73..e2d8fc127e4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 588edea3bec..2d6fd5a8da6 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index ce486179b63..65cebaebdda 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index c8b4d7baaab..cafb6d1c2ac 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 529f72d4704..aa79ec720fd 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 2fb5ee548ad..b97d0472984 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 8e77648c007..97db69b63b9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 1184125129d..1c27bd10350 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index e0433aecf75..f1f99b70468 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 6dfda56b33c..03561e6c93d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 2a11460e046..c0e60a63db5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 1e3a6fe0ab7..1ea5e5a91d1 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 6ada960d62c..c9a6b5604a3 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 5147b9ca3db..49b680170d0 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 83b52baf0c0..caa613c03e2 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 76c206990bb..061edc3cead 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.9.2 + 2.11.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From cd665a651e6395b4714faf75fab96900ca445bec Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 26 Jul 2023 10:53:02 +0200 Subject: [PATCH 105/354] CICD: docker-ext tools deploy workflow --- .github/workflows/docker-ext-tools.yml | 48 +++++++++++++++++++++----- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker-ext-tools.yml b/.github/workflows/docker-ext-tools.yml index 07062f03278..8241c3c5d66 100644 --- a/.github/workflows/docker-ext-tools.yml +++ b/.github/workflows/docker-ext-tools.yml @@ -1,18 +1,48 @@ name: Deploy Docker Ext-Tools - on: - push: - branches: - - develop - - release-* - - TASK-* - paths: - - opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile workflow_dispatch: + inputs: + ref: + description: "The branch, tag or SHA to build docker. Otherwise, uses develop branch." + type: string + required: false + default: "" jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop + name: Build Java app + runs-on: ubuntu-22.04 + outputs: + version: ${{ steps.get_project_version.outputs.version }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: '10' + ref: "${{ inputs.ref }}" + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + fi + - name: Maven Build (skip tests) + run: mvn -T 2 clean install -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: build-folder + path: build + - id: get_project_version + uses: avides/actions-project-version-check@v1.3.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + file-to-check: pom.xml + only-return-version: true deploy-docker-ext-tools: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop From 84c1e0d8f5cd1961c90e908b17a45774ad037ce6 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 26 Jul 2023 22:38:57 +0200 Subject: [PATCH 106/354] Docker ext-tools manual deployer yml --- .github/workflows/docker-ext-tools.yml | 52 ++++--------------- .github/workflows/manual-deploy-ext-tools.yml | 51 ++++++++++++++++++ 2 files changed, 61 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/manual-deploy-ext-tools.yml diff --git a/.github/workflows/docker-ext-tools.yml b/.github/workflows/docker-ext-tools.yml index 8241c3c5d66..6ded6d96fbe 100644 --- a/.github/workflows/docker-ext-tools.yml +++ b/.github/workflows/docker-ext-tools.yml @@ -1,53 +1,21 @@ name: Deploy Docker Ext-Tools + on: - workflow_dispatch: - inputs: - ref: - description: "The branch, tag or SHA to build docker. Otherwise, uses develop branch." - type: string - required: false - default: "" + push: + branches: + - develop + - release-* + - TASK-* + paths: + - opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile jobs: build: - name: Build Java app - runs-on: ubuntu-22.04 - outputs: - version: ${{ steps.get_project_version.outputs.version }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: '10' - ref: "${{ inputs.ref }}" - - name: Set up JDK 8 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '8' - cache: 'maven' - - name: Install dependencies branches - run: | - if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then - chmod +x ./.github/workflows/scripts/get_same_branch.sh - ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} - fi - - name: Maven Build (skip tests) - run: mvn -T 2 clean install -DskipTests - - uses: actions/upload-artifact@v3 - with: - name: build-folder - path: build - - id: get_project_version - uses: avides/actions-project-version-check@v1.3.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - file-to-check: pom.xml - only-return-version: true + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop deploy-docker-ext-tools: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ needs.build.outputs.version }} - secrets: inherit - + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/manual-deploy-ext-tools.yml b/.github/workflows/manual-deploy-ext-tools.yml new file mode 100644 index 00000000000..7dbf4b5a104 --- /dev/null +++ b/.github/workflows/manual-deploy-ext-tools.yml @@ -0,0 +1,51 @@ +name: Deploy Docker Ext-Tools +on: + workflow_dispatch: + inputs: + branch: + description: "The branch, tag or SHA to build docker." + type: string + required: true + tag: + description: "The tag for the docker." + type: string + required: true + +jobs: + build: + name: Build Java app + runs-on: ubuntu-22.04 + outputs: + version: ${{ steps.get_project_version.outputs.version }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: '10' + ref: "${{ inputs.branch }}" + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + fi + - name: Maven Build (skip tests) + run: mvn -T 2 clean install -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: build-folder + path: build + + + deploy-docker-ext-tools: + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop + needs: build + with: + cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ inputs.tag }} + secrets: inherit + From 6d427175ada253076f632efe214627ce21703a15 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 26 Jul 2023 22:42:28 +0200 Subject: [PATCH 107/354] Docker ext-tools manual deployer yml --- .github/workflows/manual-deploy-ext-tools.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/manual-deploy-ext-tools.yml b/.github/workflows/manual-deploy-ext-tools.yml index 7dbf4b5a104..eb8d2347137 100644 --- a/.github/workflows/manual-deploy-ext-tools.yml +++ b/.github/workflows/manual-deploy-ext-tools.yml @@ -3,11 +3,11 @@ on: workflow_dispatch: inputs: branch: - description: "The branch, tag or SHA to build docker." + description: "The branch, tag or SHA of the source code to build docker." type: string required: true tag: - description: "The tag for the docker." + description: "The tag for the new docker." type: string required: true From a995463a69c4179ac5ecfb46996e869fe2f8dd8d Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 26 Jul 2023 22:44:52 +0200 Subject: [PATCH 108/354] Docker ext-tools manual deployer yml --- .github/workflows/manual-deploy-ext-tools.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/manual-deploy-ext-tools.yml b/.github/workflows/manual-deploy-ext-tools.yml index eb8d2347137..3f64fd392de 100644 --- a/.github/workflows/manual-deploy-ext-tools.yml +++ b/.github/workflows/manual-deploy-ext-tools.yml @@ -1,4 +1,4 @@ -name: Deploy Docker Ext-Tools +name: Manual deploy Docker Ext-Tools on: workflow_dispatch: inputs: @@ -47,5 +47,4 @@ jobs: needs: build with: cli: python3 ./build/cloud/docker/docker-build.py push --images ext-tools --tag ${{ inputs.tag }} - secrets: inherit - + secrets: inherit \ No newline at end of file From d19321295c4fd635cbcef1c6d9458970f0f3d71a Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 27 Jul 2023 16:15:57 +0200 Subject: [PATCH 109/354] Updated to release 1.9.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 4 ++-- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 4 ++-- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 04ca3249e71..b9c7f8694ea 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index eb8d3cfcafa..04d9aa478ba 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index ba84d5e1bd6..aa3f8f27880 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 89d5e0fd9b4..8fc3bad15be 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index dca67d48e2c..8927e6621df 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 79dedecfa1c..c572f719422 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index a493c70cd9d..df18e582d34 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 5ca2d98a39f..63512a8d1df 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index d8b879350bf..e4b5be97e14 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml @@ -90,7 +90,7 @@ org.opencb.opencga opencga-core - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT org.apache.logging.log4j diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 5d75f97c1f2..dcebf2cbd15 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 40c9949b6c4..ed60d0a9b61 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index b1fe6c0ccca..57a5c2185e8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 001205ea43e..1c27bd10350 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index e8ed3f367fc..f1f99b70468 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 19403f3054e..03561e6c93d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 20f574becf6..72963c4ee32 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index d2c588dc56f..1ea5e5a91d1 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index c131c7f1085..ee7508df93c 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml @@ -90,7 +90,7 @@ org.opencb.opencga opencga-core - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT org.apache.avro diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 702aaa9499c..9320c585f43 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 7fd0954ae9c..ad98fd4a48e 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 91d68798525..00455a53ffd 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.10.0-SNAPSHOT + 2.11.0-SNAPSHOT pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis From 94256b9effbd7f9f1347785bcb8cb7179ae02ac4 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 28 Jul 2023 16:56:02 +0200 Subject: [PATCH 110/354] Move all versions to parnt pom #TASK-2095 --- opencga-app/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 20 +- .../opencga-storage-benchmark/pom.xml | 76 ------- opencga-storage/opencga-storage-core/pom.xml | 57 ----- .../opencga-storage-hadoop-core/pom.xml | 34 +-- .../opencga-storage-server/pom.xml | 16 -- pom.xml | 214 ++++++++++++++++++ 7 files changed, 218 insertions(+), 201 deletions(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 04d9aa478ba..2a748dde1f1 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -34,6 +34,7 @@ ${project.basedir}/app true opencga-client-${project.parent.version} + @@ -128,7 +129,6 @@ javax.ws.rs javax.ws.rs-api - 2.0.1 org.apache.commons diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index e4b5be97e14..5452e074c93 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -60,27 +60,23 @@ javax.ws.rs javax.ws.rs-api - 2.0.1 org.slf4j slf4j-api - 1.7.32 + org.opencb.biodata biodata-formats - 2.8.1-SNAPSHOT com.fasterxml.jackson.core jackson-core - 2.11.4 org.apache.commons commons-collections4 - 4.4 io.grpc @@ -90,72 +86,58 @@ org.opencb.opencga opencga-core - 2.11.0-SNAPSHOT org.apache.logging.log4j log4j-core - 2.17.2 com.beust jcommander - 1.69 org.apache.avro avro - 1.7.7 org.apache.httpcomponents httpclient - 4.5.6 org.opencb.biodata biodata-tools - 2.8.1-SNAPSHOT org.opencb.biodata biodata-models - 2.8.1-SNAPSHOT org.opencb.commons commons-lib - 4.8.1-SNAPSHOT org.apache.commons commons-lang3 - 3.12.0 org.apache.logging.log4j log4j-api - 2.17.2 org.opencb.commons commons-datastore-core - 4.8.1-SNAPSHOT com.fasterxml.jackson.core jackson-databind - 2.11.4 jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 com.github.samtools htsjdk - 2.23.0 diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index dcebf2cbd15..476bf4d8c23 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -28,17 +28,11 @@ opencga-storage-benchmark jar - - - 5.0 - - org.opencb.opencga opencga-core - org.opencb.opencga opencga-storage-core @@ -47,122 +41,54 @@ org.apache.jmeter ApacheJMeter_core - ${jmeter.version} - - - mongo-java-driver - org.mongodb - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.logging.log4j - log4j-1.2-api - - - org.apache.logging.log4j - log4j-api - - - org.apache.logging.log4j - log4j-core - - - com.beust - jcommander - - org.apache.jmeter ApacheJMeter_http - ${jmeter.version} - - - mongo-java-driver - org.mongodb - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.logging.log4j - log4j-1.2-api - - org.apache.jmeter ApacheJMeter_java - ${jmeter.version} - - - mongo-java-driver - org.mongodb - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.logging.log4j - log4j-1.2-api - - - org.apache.jmeter jorphan - 5.0 com.fasterxml.jackson.dataformat jackson-dataformat-yaml - 2.11.4 org.slf4j slf4j-api - 1.7.32 org.apache.jmeter ApacheJMeter_components - 5.0 org.opencb.biodata biodata-models - 2.8.1-SNAPSHOT org.apache.commons commons-lang3 - 3.12.0 com.google.guava guava - 19.0 org.opencb.commons commons-datastore-core - 4.8.1-SNAPSHOT com.beust jcommander - 1.69 com.fasterxml.jackson.core jackson-databind - 2.11.4 @@ -176,7 +102,6 @@ com.googlecode.grep4j grep4j - 1.8.7 test @@ -216,7 +141,6 @@ junit junit - diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index ed60d0a9b61..5be633ff25b 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -19,9 +19,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - true - org.opencb.opencga opencga-storage @@ -58,31 +55,7 @@ org.redisson redisson - 2.2.0 - - - io.netty - netty-codec - - - io.netty - netty-common - - - io.netty - netty-handler - - - io.netty - netty-buffer - - - io.netty - netty-transport - - - org.apache.solr solr-solrj @@ -91,13 +64,11 @@ com.fasterxml.jackson.core jackson-annotations - ${jackson.version} com.microsoft.azure azure-storage-blob - 11.0.0 ${azure.optional} @@ -109,145 +80,117 @@ org.opencb.ga4gh ga4gh - 0.6.0a5 com.google.code.findbugs jsr305 - 3.0.2 commons-io commons-io - 2.5 org.slf4j slf4j-api - 1.7.32 com.google.protobuf protobuf-java - 3.11.4 org.opencb.biodata biodata-formats - 2.8.1-SNAPSHOT com.google.guava guava - 19.0 commons-codec commons-codec - 1.7 commons-lang commons-lang - 2.6 test org.apache.commons commons-compress - 1.4.1 io.reactivex.rxjava2 rxjava - 2.2.0 org.opencb.commons commons-lib - 4.8.1-SNAPSHOT org.apache.commons commons-lang3 - 3.12.0 org.opencb.commons commons-datastore-core - 4.8.1-SNAPSHOT com.microsoft.rest.v2 client-runtime - 2.1.0 com.fasterxml.jackson.core jackson-core - 2.11.4 org.reactivestreams reactive-streams - 1.0.0 org.hamcrest hamcrest-core - 1.3 test org.apache.commons commons-collections4 - 4.4 org.opencb.cellbase cellbase-core - 5.4.1-SNAPSHOT org.xerial.snappy snappy-java - 1.1.7.6 org.apache.avro avro - 1.7.7 org.opencb.biodata biodata-tools - 2.8.1-SNAPSHOT org.opencb.biodata biodata-models - 2.8.1-SNAPSHOT org.apache.logging.log4j log4j-api - 2.17.2 org.apache.solr solr-core - 8.8.2 test com.fasterxml.jackson.core jackson-databind - 2.11.4 com.github.samtools htsjdk - 2.23.0 diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 57a5c2185e8..7dfaadf2f8a 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -62,7 +62,6 @@ org.apache.parquet parquet-avro - 1.7.0 @@ -118,158 +117,129 @@ org.opencb.ga4gh ga4gh - 0.6.0a5 com.google.code.findbugs jsr305 - 3.0.2 commons-io commons-io - 2.5 org.slf4j slf4j-api - 1.7.32 org.slf4j jcl-over-slf4j - 1.7.24 com.google.protobuf protobuf-java - 3.11.4 org.opencb.biodata biodata-formats - 2.8.1-SNAPSHOT com.fasterxml.jackson.core jackson-annotations - 2.11.4 org.opencb.cellbase cellbase-client - 5.4.1-SNAPSHOT test org.apache.logging.log4j log4j-core - 2.17.2 test org.apache.parquet parquet-hadoop - 1.7.0 commons-lang commons-lang - 2.6 org.apache.ant ant - 1.10.12 org.apache.zookeeper zookeeper - 3.4.6 test org.opencb.commons commons-lib - 4.8.1-SNAPSHOT org.apache.commons commons-lang3 - 3.12.0 org.opencb.commons commons-datastore-core - 4.8.1-SNAPSHOT org.opencb.oskar oskar-analysis - 0.2.1 com.fasterxml.jackson.core jackson-core - 2.11.4 org.hamcrest hamcrest-core - 1.3 test org.apache.commons commons-collections4 - 4.4 org.apache.avro avro - 1.7.7 org.apache.avro avro-mapred hadoop2 - 1.7.7 + commons-logging commons-logging - 1.1.3 org.apache.parquet parquet-common - 1.7.0 org.opencb.biodata biodata-tools - 2.8.1-SNAPSHOT org.opencb.biodata biodata-models - 2.8.1-SNAPSHOT org.apache.logging.log4j log4j-api - 2.17.2 test com.fasterxml.jackson.core jackson-databind - 2.11.4 com.github.samtools htsjdk - 2.23.0 @@ -333,7 +303,7 @@ true - commons-logging:commons-logging:jar:1.1.3 + commons-logging:commons-logging:jar:${commons-logging.version} org.glassfish.jersey.containers:jersey-container-servlet:jar:* diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index ee7508df93c..703482490e4 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -55,12 +55,10 @@ org.slf4j slf4j-api - 1.7.32 javax.servlet javax.servlet-api - 3.1.0 org.mortbay.jetty @@ -70,72 +68,58 @@ com.fasterxml.jackson.core jackson-core - 2.11.4 org.eclipse.jetty jetty-servlet - 9.4.17.v20190418 io.grpc grpc-api - 1.28.1 com.google.guava guava - 19.0 org.opencb.opencga opencga-core - 2.11.0-SNAPSHOT org.apache.avro avro - 1.7.7 org.glassfish.jersey.core jersey-server - 2.30.1 io.grpc grpc-protobuf - 1.28.1 org.opencb.biodata biodata-models - 2.8.1-SNAPSHOT io.grpc grpc-stub - 1.28.1 org.apache.commons commons-lang3 - 3.12.0 org.opencb.commons commons-datastore-core - 4.8.1-SNAPSHOT jakarta.ws.rs jakarta.ws.rs-api - 2.1.6 com.fasterxml.jackson.core jackson-databind - 2.11.4 diff --git a/pom.xml b/pom.xml index 7d69711bdb2..9bcc3b3e965 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,22 @@ 1.10.12 4.4.13 1.2.17 + 2.0.1 + 5.0 + true + 5.0 + 1.8.7 + 2.2.0 + 11.0.0 + 3.0.2 + 1.4.1 + 2.2.0 + 2.1.0 + 1.0.0 + 1.1.7.6 + ${parquet-common.version} + + opencga @@ -111,6 +127,7 @@ opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} + 5.0 opencb https://sonarcloud.io @@ -123,6 +140,13 @@ false false 3.1.0 + + ${parquet-common.version} + 1.7.0 + 1.1.3 + 3.4.6 + 1.7.24 + 2.5-20081211 @@ -325,6 +349,11 @@ + + org.mortbay.jetty + servlet-api + ${servlet-api.version} + org.opencb.biodata biodata-tools @@ -440,6 +469,11 @@ jackson-dataformat-cbor ${jackson.version} + + org.apache.jmeter + ApacheJMeter_components + ${ApacheJMeter_components.version} + org.apache.solr solr-solrj @@ -478,6 +512,85 @@ + + org.apache.jmeter + ApacheJMeter_core + ${jmeter.version} + + + mongo-java-driver + org.mongodb + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + com.beust + jcommander + + + + + org.apache.jmeter + ApacheJMeter_http + ${jmeter.version} + + + mongo-java-driver + org.mongodb + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + + + org.apache.jmeter + ApacheJMeter_java + ${jmeter.version} + + + mongo-java-driver + org.mongodb + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + + + org.apache.jmeter + jorphan + ${jorphan.version} + + + javax.ws.rs + javax.ws.rs-api + ${javax.ws.rs-api.version} + org.jline jline-reader @@ -650,11 +763,32 @@ mongodb-driver-sync ${mongodb-driver.version} + + org.apache.parquet + parquet-common + ${parquet-common.version} + + + org.slf4j + jcl-over-slf4j + ${jcl-over-slf4j.version} + org.mongodb bson ${mongodb-driver.version} + + org.apache.zookeeper + zookeeper + ${zookeeper.version} + test + + + commons-logging + commons-logging + ${commons-logging.version} + javax.mail mail @@ -670,6 +804,11 @@ htsjdk ${htsjdk.version} + + org.apache.parquet + parquet-avro + ${parquet-avro.version} + com.google.guava guava @@ -811,6 +950,81 @@ ${maven-surefire-plugin.version} maven-plugin + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + + + + org.redisson + redisson + ${redisson.version} + + + io.netty + netty-codec + + + io.netty + netty-common + + + io.netty + netty-handler + + + io.netty + netty-buffer + + + io.netty + netty-transport + + + + + org.reactivestreams + reactive-streams + ${reactive-streams.version} + + + com.microsoft.rest.v2 + client-runtime + ${client-runtime.version} + + + com.microsoft.azure + azure-storage-blob + ${azure-storage-blob.version} + ${azure.optional} + + + com.google.code.findbugs + jsr305 + ${jsr305.version} + + + org.apache.commons + commons-compress + ${commons-compress.version} + + + io.reactivex.rxjava2 + rxjava + ${rxjava.version} + + + org.xerial.snappy + snappy-java + ${snappy-java.version} + + + org.apache.parquet + parquet-hadoop + ${parquet-hadoop.version} + From 15fb895c88cad3db4cac61f03c2553f469fdb28a Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 8 Aug 2023 17:40:02 +0200 Subject: [PATCH 111/354] Annotation for pharmacogenomics --- .../opencga/storage/core/variant/adaptors/VariantField.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java index d0eb0a335e6..8c208b1cd30 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java @@ -71,6 +71,7 @@ public enum VariantField { ANNOTATION_CONSERVATION(ANNOTATION, "annotation.conservation"), ANNOTATION_CANCER_HOTSPOTS(ANNOTATION, "annotation.cancerHotspots"), ANNOTATION_GENE_EXPRESSION(ANNOTATION, "annotation.geneExpression"), + ANNOTATION_PHARMACOGENOMICS(ANNOTATION, "annotation.pharmacogenomics"), ANNOTATION_GENE_TRAIT_ASSOCIATION(ANNOTATION, "annotation.geneTraitAssociation"), ANNOTATION_GENE_DRUG_INTERACTION(ANNOTATION, "annotation.geneDrugInteraction"), ANNOTATION_GENE_CANCER_ASSOCIATIONS(ANNOTATION, "annotation.geneCancerAssociations"), From 4c5614b333a2420855c74a50aa0c2506bcd945b6 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 9 Aug 2023 11:19:38 +0200 Subject: [PATCH 112/354] RGAManager exclude pharmacogenomics --- .../main/java/org/opencb/opencga/analysis/rga/RgaManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java index 5acff933d6e..879bdd4ae9e 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java @@ -1446,6 +1446,9 @@ private VariantDBIterator variantStorageQuery(String study, List sampleI excludeList.add(VariantField.ANNOTATION_DRUGS); excludeList.add(VariantField.ANNOTATION_GENE_EXPRESSION); + //Try to test + excludeList.add(VariantField.ANNOTATION_PHARMACOGENOMICS); + if (!sampleIds.isEmpty()) { variantQuery.append(VariantQueryParam.INCLUDE_SAMPLE.key(), sampleIds) .append(VariantQueryParam.INCLUDE_SAMPLE_DATA.key(), "GT,DP"); From 7dc807bc854ba13079752e5fd049e11c9add297d Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 9 Aug 2023 14:29:12 +0200 Subject: [PATCH 113/354] Undo last RGAManager change --- .../main/java/org/opencb/opencga/analysis/rga/RgaManager.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java index 879bdd4ae9e..5acff933d6e 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/rga/RgaManager.java @@ -1446,9 +1446,6 @@ private VariantDBIterator variantStorageQuery(String study, List sampleI excludeList.add(VariantField.ANNOTATION_DRUGS); excludeList.add(VariantField.ANNOTATION_GENE_EXPRESSION); - //Try to test - excludeList.add(VariantField.ANNOTATION_PHARMACOGENOMICS); - if (!sampleIds.isEmpty()) { variantQuery.append(VariantQueryParam.INCLUDE_SAMPLE.key(), sampleIds) .append(VariantQueryParam.INCLUDE_SAMPLE_DATA.key(), "GT,DP"); From 889c7f752fae14d7e446c517acfc5d8d10aa9595 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 9 Aug 2023 15:00:05 +0200 Subject: [PATCH 114/354] Add STUDY_NAME_5 to sampleNames to prevent NullPointer --- .../storage/hadoop/variant/index/sample/SampleIndexTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java index 7693fc1a53e..aa6d25f0c14 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java @@ -91,6 +91,7 @@ public class SampleIndexTest extends VariantStorageBaseTest implements HadoopVar put(STUDY_NAME_2, Arrays.asList("NA19600", "NA19660", "NA19661", "NA19685")); put(STUDY_NAME_3, Arrays.asList("NA12877", "NA12878")); put(STUDY_NAME_4, Arrays.asList("NA19600", "NA19660", "NA19661", "NA19685")); + put(STUDY_NAME_5, Arrays.asList("NA19600", "NA19660", "NA19661", "NA19685")); }}; // private static List> trios = Arrays.asList( // Arrays.asList("NA19600", "NA19660", "NA19661"), From 13899a0062e067cb0f09bcd5c1e0c902a00f8c13 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 9 Aug 2023 15:54:04 +0200 Subject: [PATCH 115/354] Manual docker generate --- .github/workflows/manual-deploy-docker.yml | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflows/manual-deploy-docker.yml diff --git a/.github/workflows/manual-deploy-docker.yml b/.github/workflows/manual-deploy-docker.yml new file mode 100644 index 00000000000..a22f4dd4563 --- /dev/null +++ b/.github/workflows/manual-deploy-docker.yml @@ -0,0 +1,50 @@ +name: Manual deploy Docker base +on: + workflow_dispatch: + inputs: + branch: + description: "The branch, tag or SHA of the source code to build docker." + type: string + required: true + tag: + description: "The tag for the new docker." + type: string + required: true + +jobs: + build: + name: Build Java app + runs-on: ubuntu-22.04 + outputs: + version: ${{ steps.get_project_version.outputs.version }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: '10' + ref: "${{ inputs.branch }}" + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '8' + cache: 'maven' + - name: Install dependencies branches + run: | + if [ -f "./.github/workflows/scripts/get_same_branch.sh" ]; then + chmod +x ./.github/workflows/scripts/get_same_branch.sh + ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} + fi + - name: Maven Build (skip tests) + run: mvn -T 2 clean install -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: build-folder + path: build + + + deploy-docker-ext-tools: + uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop + needs: build + with: + cli: python3 ./build/cloud/docker/docker-build.py push --images base,init --tag ${{ inputs.tag }} + secrets: inherit \ No newline at end of file From 3e42c2e7e0787c3a4c1617789f7c9b897601c0a8 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 10 Aug 2023 13:37:33 +0200 Subject: [PATCH 116/354] rename step deploy-docker --- .github/workflows/manual-deploy-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/manual-deploy-docker.yml b/.github/workflows/manual-deploy-docker.yml index a22f4dd4563..3c9660bbb2c 100644 --- a/.github/workflows/manual-deploy-docker.yml +++ b/.github/workflows/manual-deploy-docker.yml @@ -42,7 +42,7 @@ jobs: path: build - deploy-docker-ext-tools: + deploy-docker: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: From 3213ffeb3966d03f35eac210caa469a4fc806fb9 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 11 Aug 2023 12:26:59 +0200 Subject: [PATCH 117/354] storage-core: Added ANNOTATION_PHARMACOGENOMICS to VariantField.java #TASK-4848 --- .../opencga/storage/core/variant/adaptors/VariantField.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java index d0eb0a335e6..8c208b1cd30 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantField.java @@ -71,6 +71,7 @@ public enum VariantField { ANNOTATION_CONSERVATION(ANNOTATION, "annotation.conservation"), ANNOTATION_CANCER_HOTSPOTS(ANNOTATION, "annotation.cancerHotspots"), ANNOTATION_GENE_EXPRESSION(ANNOTATION, "annotation.geneExpression"), + ANNOTATION_PHARMACOGENOMICS(ANNOTATION, "annotation.pharmacogenomics"), ANNOTATION_GENE_TRAIT_ASSOCIATION(ANNOTATION, "annotation.geneTraitAssociation"), ANNOTATION_GENE_DRUG_INTERACTION(ANNOTATION, "annotation.geneDrugInteraction"), ANNOTATION_GENE_CANCER_ASSOCIATIONS(ANNOTATION, "annotation.geneCancerAssociations"), From aed710fdd2ab13f3bd4d81754717133689a547bb Mon Sep 17 00:00:00 2001 From: pfurio Date: Mon, 28 Aug 2023 10:52:08 +0200 Subject: [PATCH 118/354] core: add REGEX comment to /search and /distinct, #TASK-4248 --- .../opencga/core/api/ParamConstants.java | 65 ++++++++++--------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index b65214a9ba4..6a42182cf34 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -38,6 +38,7 @@ public class ParamConstants { public static final String RELEASE_DESCRIPTION = "Release when it was created"; public static final String INTERNAL_STATUS_PARAM = "internalStatus"; public static final String INTERNAL_STATUS_DESCRIPTION = "Filter by internal status"; + private static final String REGEX_SUPPORT = ". Also admits basic regular expressions like '~/^value/i'"; @Deprecated // Use INTERNAL_VARIANT_INDEX_STATUS_PARAM public static final String INTERNAL_INDEX_STATUS_PARAM = "internalIndexStatus"; public static final String INTERNAL_VARIANT_INDEX_STATUS_PARAM = "internalVariantIndexStatus"; @@ -169,12 +170,12 @@ public class ParamConstants { + "exception whenever one of the entries looked for cannot be shown for whichever reason"; public static final String FILE_ID_DESCRIPTION = "File ID"; public static final String FILE_NAME_DESCRIPTION = "File name"; - public static final String FILE_NAMES_DESCRIPTION = "Comma separated list of file names"; + public static final String FILE_NAMES_DESCRIPTION = "Comma separated list of file names" + REGEX_SUPPORT; // --------------------------------------------- public static final String FILE_PATH_PARAM = "path"; public static final String FILE_PATH_DESCRIPTION = "File path"; - public static final String FILE_PATHS_DESCRIPTION = "Comma separated list of paths"; - public static final String FILE_URIS_DESCRIPTION = "Comma separated list of uris"; + public static final String FILE_PATHS_DESCRIPTION = "Comma separated list of paths" + REGEX_SUPPORT; + public static final String FILE_URIS_DESCRIPTION = "Comma separated list of uris" + REGEX_SUPPORT; public static final String FILE_TYPE_DESCRIPTION = "File type, either FILE or DIRECTORY"; public static final String FILE_FORMAT_DESCRIPTION = "Comma separated Format values. For existing Formats see files/formats"; public static final String FILE_EXTERNAL_DESCRIPTION = "Boolean field indicating whether to filter by external or non external files"; @@ -182,7 +183,7 @@ public class ParamConstants { "files/bioformats"; public static final String FILE_STATUS_DESCRIPTION = "File status"; public static final String FILE_DESCRIPTION_DESCRIPTION = "Description"; - public static final String FILE_TAGS_DESCRIPTION = "Tags"; + public static final String FILE_TAGS_DESCRIPTION = "Tags" + REGEX_SUPPORT; public static final String FILE_SOFTWARE_NAME_PARAM = "softwareName"; public static final String FILE_SOFTWARE_NAME_DESCRIPTION = "Software name"; public static final String FILE_JOB_ID_DESCRIPTION = "Job ID that created the file(s) or folder(s)"; @@ -316,12 +317,12 @@ public class ParamConstants { public static final String INDIVIDUAL_MOTHER_DESCRIPTION = "Mother ID, name or UUID"; public static final String INDIVIDUAL_SAMPLES_DESCRIPTION = "Sample ID, name or UUID"; public static final String INDIVIDUAL_SEX_DESCRIPTION = "Individual sex"; - public static final String INDIVIDUAL_ETHNICITY_DESCRIPTION = "Individual ethnicity"; + public static final String INDIVIDUAL_ETHNICITY_DESCRIPTION = "Individual ethnicity" + REGEX_SUPPORT; public static final String INDIVIDUAL_DATE_OF_BIRTH_DESCRIPTION = "Individual date of birth"; - public static final String INDIVIDUAL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION; - public static final String INDIVIDUAL_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION; - public static final String INDIVIDUAL_POPULATION_NAME_DESCRIPTION = "Population name"; - public static final String INDIVIDUAL_POPULATION_SUBPOPULATION_DESCRIPTION = "Subpopulation name"; + public static final String INDIVIDUAL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION + REGEX_SUPPORT; + public static final String INDIVIDUAL_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION + REGEX_SUPPORT; + public static final String INDIVIDUAL_POPULATION_NAME_DESCRIPTION = "Population name" + REGEX_SUPPORT; + public static final String INDIVIDUAL_POPULATION_SUBPOPULATION_DESCRIPTION = "Subpopulation name" + REGEX_SUPPORT; public static final String INDIVIDUAL_KARYOTYPIC_SEX_DESCRIPTION = "Individual karyotypic sex"; public static final String INDIVIDUAL_LIFE_STATUS_DESCRIPTION = "Individual life status"; public static final String INDIVIDUAL_DELETED_DESCRIPTION = DELETED_DESCRIPTION; @@ -358,8 +359,8 @@ public class ParamConstants { public static final String FAMILY_MEMBERS_DESCRIPTION = "Comma separated list of family members"; public static final String FAMILY_SAMPLES_DESCRIPTION = "Comma separated list of member's samples"; public static final String FAMILY_EXPECTED_SIZE_DESCRIPTION = "Expected size of the family (number of members)"; - public static final String FAMILY_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION; - public static final String FAMILY_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION; + public static final String FAMILY_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION + REGEX_SUPPORT; + public static final String FAMILY_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION + REGEX_SUPPORT; public static final String FAMILY_CREATION_DATE_DESCRIPTION = CREATION_DATE_DESCRIPTION; public static final String FAMILY_MODIFICATION_DATE_DESCRIPTION = MODIFICATION_DATE_DESCRIPTION; public static final String FAMILY_DELETED_DESCRIPTION = DELETED_DESCRIPTION; @@ -422,7 +423,7 @@ public class ParamConstants { public static final String CLINICAL_STATUS_PARAM = STATUS_PARAM; public static final String CLINICAL_INTERNAL_STATUS_PARAM = INTERNAL_STATUS_PARAM; public static final String CLINICAL_TYPE_DESCRIPTION = "Clinical Analysis type"; - public static final String CLINICAL_DISORDER_DESCRIPTION = "Clinical Analysis disorder"; + public static final String CLINICAL_DISORDER_DESCRIPTION = "Clinical Analysis disorder" + REGEX_SUPPORT; public static final String CLINICAL_FILES_DESCRIPTION = "Clinical Analysis files"; public static final String CLINICAL_SAMPLE_DESCRIPTION = "Sample associated to the proband or any member of a family"; public static final String CLINICAL_INDIVIDUAL_DESCRIPTION = "Proband or any member of a family"; @@ -466,7 +467,7 @@ public class ParamConstants { public static final String INTERPRETATION_LOCKED_PARAM = "locked"; public static final String INTERPRETATION_CLINICAL_ANALYSIS_ID_DESCRIPTION = "Clinical Analysis id"; public static final String INTERPRETATION_ANALYST_ID_DESCRIPTION = "Analyst ID"; - public static final String INTERPRETATION_METHOD_NAME_DESCRIPTION = "Interpretation method name"; + public static final String INTERPRETATION_METHOD_NAME_DESCRIPTION = "Interpretation method name" + REGEX_SUPPORT; public static final String INTERPRETATION_PANELS_DESCRIPTION = "Interpretation panels"; public static final String INTERPRETATION_PRIMARY_FINDINGS_IDS_DESCRIPTION = "Interpretation primary findings"; public static final String INTERPRETATION_SECONDARY_FINDINGS_IDS_DESCRIPTION = "Interpretation secondary findings"; @@ -498,12 +499,12 @@ public class ParamConstants { public static final String PANEL_ACL_PARAM = ACL_PARAM; public static final String PANEL_RELEASE_PARAM = RELEASE_PARAM; public static final String PANEL_SNAPSHOT_PARAM = SNAPSHOT_PARAM; - public static final String PANEL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION; - public static final String PANEL_VARIANTS_DESCRIPTION = "Comma separated list of variant ids"; - public static final String PANEL_GENES_DESCRIPTION = "Comma separated list of gene ids"; - public static final String PANEL_REGIONS_DESCRIPTION = "Comma separated list of regions"; - public static final String PANEL_CATEGORIES_DESCRIPTION = "Comma separated list of category names"; - public static final String PANEL_TAGS_DESCRIPTION = "Panel tags"; + public static final String PANEL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION + REGEX_SUPPORT; + public static final String PANEL_VARIANTS_DESCRIPTION = "Comma separated list of variant ids" + REGEX_SUPPORT; + public static final String PANEL_GENES_DESCRIPTION = "Comma separated list of gene ids" + REGEX_SUPPORT; + public static final String PANEL_REGIONS_DESCRIPTION = "Comma separated list of regions" + REGEX_SUPPORT; + public static final String PANEL_CATEGORIES_DESCRIPTION = "Comma separated list of category names" + REGEX_SUPPORT; + public static final String PANEL_TAGS_DESCRIPTION = "Panel tags" + REGEX_SUPPORT; public static final String PANEL_DELETED_DESCRIPTION = DELETED_DESCRIPTION; public static final String PANEL_STATUS_DESCRIPTION = STATUS_DESCRIPTION; @@ -539,7 +540,7 @@ public class ParamConstants { public static final String JOB_DEPENDS_ON_DESCRIPTION = "Comma separated list of existing job IDs the job will depend on."; public static final String JOB_TOOL_ID_PARAM = "toolId"; public static final String JOB_TOOL_TYPE_PARAM = "toolType"; - public static final String JOB_TOOL_ID_DESCRIPTION = "Tool ID executed by the job"; + public static final String JOB_TOOL_ID_DESCRIPTION = "Tool ID executed by the job" + REGEX_SUPPORT; public static final String JOB_TOOL_TYPE_DESCRIPTION = "Tool type executed by the job [OPERATION, ANALYSIS]"; public static final String JOB_USER_PARAM = "userId"; public static final String JOB_USER_DESCRIPTION = "User that created the job"; @@ -1475,34 +1476,34 @@ public class ParamConstants { public static final String ADMIN_CATALOG_JWT_SECRETKEY = "The body web service secretKey parameter"; private static final String UP_TO_100 = " up to a maximum of 100"; public static final String FILES_DESCRIPTION = "Comma separated list of file IDs or names" + UP_TO_100; - public static final String FILES_ID_DESCRIPTION = "Comma separated list of file IDs" + UP_TO_100; + public static final String FILES_ID_DESCRIPTION = "Comma separated list of file IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String FILES_UUID_DESCRIPTION = "Comma separated list file UUIDs" + UP_TO_100; public static final String SAMPLES_DESCRIPTION = "Comma separated list sample IDs or UUIDs" + UP_TO_100; public static final String SAMPLES_ID_DESCRIPTION = "Comma separated list sample IDs" + UP_TO_100; public static final String SAMPLES_UUID_DESCRIPTION = "Comma separated list sample UUIDs" + UP_TO_100; public static final String INDIVIDUALS_DESCRIPTION = "Comma separated list of individual IDs, names or UUIDs" + UP_TO_100; - public static final String INDIVIDUALS_ID_DESCRIPTION = "Comma separated list individual IDs" + UP_TO_100; - public static final String INDIVIDUAL_NAME_DESCRIPTION = "Comma separated list individual names" + UP_TO_100; + public static final String INDIVIDUALS_ID_DESCRIPTION = "Comma separated list individual IDs" + UP_TO_100 + REGEX_SUPPORT; + public static final String INDIVIDUAL_NAME_DESCRIPTION = "Comma separated list individual names" + UP_TO_100 + REGEX_SUPPORT; public static final String INDIVIDUAL_UUID_DESCRIPTION = "Comma separated list individual UUIDs" + UP_TO_100; public static final String FAMILIES_DESCRIPTION = "Comma separated list of family IDs or names" + UP_TO_100; - public static final String FAMILY_ID_DESCRIPTION = "Comma separated list family IDs" + UP_TO_100; - public static final String FAMILY_NAME_DESCRIPTION = "Comma separated list family names" + UP_TO_100; + public static final String FAMILY_ID_DESCRIPTION = "Comma separated list family IDs" + UP_TO_100 + REGEX_SUPPORT; + public static final String FAMILY_NAME_DESCRIPTION = "Comma separated list family names" + UP_TO_100 + REGEX_SUPPORT; public static final String FAMILY_UUID_DESCRIPTION = "Comma separated list family UUIDs" + UP_TO_100; public static final String COHORTS_DESCRIPTION = "Comma separated list of cohort IDs or UUIDs" + UP_TO_100; - public static final String COHORT_IDS_DESCRIPTION = "Comma separated list of cohort IDs" + UP_TO_100; - public static final String COHORT_NAMES_DESCRIPTION = "Comma separated list of cohort names" + UP_TO_100; + public static final String COHORT_IDS_DESCRIPTION = "Comma separated list of cohort IDs" + UP_TO_100 + REGEX_SUPPORT; + public static final String COHORT_NAMES_DESCRIPTION = "Comma separated list of cohort names" + UP_TO_100 + REGEX_SUPPORT; public static final String COHORT_UUIDS_DESCRIPTION = "Comma separated list of cohort IDs" + UP_TO_100; - public static final String CLINICAL_ID_DESCRIPTION = "Comma separated list of Clinical Analysis IDs" + UP_TO_100; + public static final String CLINICAL_ID_DESCRIPTION = "Comma separated list of Clinical Analysis IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String CLINICAL_UUID_DESCRIPTION = "Comma separated list of Clinical Analysis UUIDs" + UP_TO_100; public static final String CLINICAL_ANALYSES_DESCRIPTION = "Comma separated list of clinical analysis IDs or names" + UP_TO_100; - public static final String INTERPRETATION_ID_DESCRIPTION = "Comma separated list of Interpretation IDs" + UP_TO_100; + public static final String INTERPRETATION_ID_DESCRIPTION = "Comma separated list of Interpretation IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String INTERPRETATION_UUID_DESCRIPTION = "Comma separated list of Interpretation UUIDs" + UP_TO_100; public static final String INTERPRETATION_DESCRIPTION = "Comma separated list of clinical interpretation IDs " + UP_TO_100; - public static final String PANEL_ID_DESCRIPTION = "Comma separated list of panel IDs " + UP_TO_100; + public static final String PANEL_ID_DESCRIPTION = "Comma separated list of panel IDs " + UP_TO_100 + REGEX_SUPPORT; public static final String PANEL_UUID_DESCRIPTION = "Comma separated list of panel UUIDs " + UP_TO_100; - public static final String PANEL_NAME_DESCRIPTION = "Comma separated list of panel names " + UP_TO_100; + public static final String PANEL_NAME_DESCRIPTION = "Comma separated list of panel names " + UP_TO_100 + REGEX_SUPPORT; public static final String JOBS_DESCRIPTION = "Comma separated list of job IDs or UUIDs" + UP_TO_100; - public static final String JOB_IDS_DESCRIPTION = "Comma separated list of job IDs" + UP_TO_100; + public static final String JOB_IDS_DESCRIPTION = "Comma separated list of job IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String JOB_UUIDS_DESCRIPTION = "Comma separated list of job UUIDs" + UP_TO_100; // --------------------------------------------- public static final String PROJECTS_DESCRIPTION = "Comma separated list of projects [user@]project" + UP_TO_100; From b677b547a00bb4c30a49e33a3f30f2af45780379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 28 Aug 2023 11:22:00 +0200 Subject: [PATCH 119/354] core: update according to CellBase changes, #TASK-4898, #TASK-4641 --- .../alignment/AlignmentStorageManager.java | 4 +-- .../manager/VariantStorageManager.java | 4 +-- .../opencga/core/api/ParamConstants.java | 2 +- .../core/cellbase/CellBaseValidator.java | 17 +++++------ .../config/storage/CellBaseConfiguration.java | 29 +++++++++++++----- .../core/variant/VariantStorageEngine.java | 2 +- .../AbstractCellBaseVariantAnnotator.java | 2 +- .../CellBaseRestVariantAnnotator.java | 4 +-- ...java => VariantAnnotatorByApiKeyTest.java} | 30 +++++++++---------- .../annotators/VariantAnnotatorTest.java | 11 ++----- 10 files changed, 57 insertions(+), 48 deletions(-) rename opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/{VariantAnnotatorByTokenTest.java => VariantAnnotatorByApiKeyTest.java} (87%) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java index 38953f5ff7f..fd8a0cebad5 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java @@ -230,7 +230,7 @@ public OpenCGAResult coverageStats(String studyIdStr, String String species = projectQueryResult.first().getOrganism().getScientificName(); String assembly = projectQueryResult.first().getOrganism().getAssembly(); String dataRelease = projectQueryResult.first().getCellbase().getDataRelease(); - String cellbaseToken = projectQueryResult.first().getCellbase().getToken(); + String cellbaseToken = projectQueryResult.first().getCellbase().getApiKey(); for (String geneName : geneNames) { @@ -451,7 +451,7 @@ public List mergeRegions(List regions, List genes, boole String species = projectQueryResult.first().getOrganism().getScientificName(); String assembly = projectQueryResult.first().getOrganism().getAssembly(); String dataRelease = projectQueryResult.first().getCellbase().getDataRelease(); - String cellbaseToken = projectQueryResult.first().getCellbase().getToken(); + String cellbaseToken = projectQueryResult.first().getCellbase().getApiKey(); CellBaseClient cellBaseClient = new CellBaseClient(species, assembly, dataRelease, cellbaseToken, projectQueryResult.first().getCellbase().toClientConfiguration()); GeneClient geneClient = cellBaseClient.getGeneClient(); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java index 806fbb6d818..b017ec0698c 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java @@ -1017,8 +1017,8 @@ private void setCellbaseConfiguration(VariantStorageEngine engine, String projec .get(project, new QueryOptions(INCLUDE, ProjectDBAdaptor.QueryParams.CELLBASE.key()), token) .first().getCellbase(); if (cellbase != null) { - if (StringUtils.isEmpty(cellbase.getToken()) || storageConfiguration.getCellbase() != null) { - cellbase.setToken(storageConfiguration.getCellbase().getToken()); + if (StringUtils.isEmpty(cellbase.getApiKey()) || storageConfiguration.getCellbase() != null) { + cellbase.setApiKey(storageConfiguration.getCellbase().getApiKey()); } engine.getConfiguration().setCellbase(cellbase); engine.reloadCellbaseConfiguration(); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index b65214a9ba4..b1e57dbc24a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -76,7 +76,7 @@ public class ParamConstants { public static final String CELLBASE_URL = "https://ws.zettagenomics.com/cellbase"; public static final String CELLBASE_VERSION = "v5.1"; public static final String CELLBASE_DATA_RELEASE = "2"; - public static final String CELLBASE_TOKEN = ""; + public static final String CELLBASE_APIKEY = ""; public static final String POP_FREQ_1000G_CB_V4 = "1kG_phase3"; public static final String POP_FREQ_1000G_CB_V5 = "1000G"; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 21f5c79fecd..83f1bd9e311 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -2,12 +2,11 @@ import org.apache.commons.lang3.StringUtils; import org.opencb.cellbase.client.rest.CellBaseClient; +import org.opencb.cellbase.core.api.key.ApiKeyManager; import org.opencb.cellbase.core.config.SpeciesConfiguration; import org.opencb.cellbase.core.config.SpeciesProperties; import org.opencb.cellbase.core.models.DataRelease; import org.opencb.cellbase.core.result.CellBaseDataResponse; -import org.opencb.cellbase.core.token.DataAccessTokenManager; -import org.opencb.cellbase.core.token.DataAccessTokenSources; import org.opencb.opencga.core.common.VersionUtils; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.slf4j.Logger; @@ -69,13 +68,13 @@ public String getDataRelease() { return cellBaseClient.getDataRelease(); } - public String getToken() { - return cellBaseClient.getToken(); + public String getApiKey() { + return cellBaseClient.getApiKey(); } - public DataAccessTokenSources getTokenSources() { - DataAccessTokenManager tokenManager = new DataAccessTokenManager(); - return tokenManager.decode(cellBaseClient.getToken()); + public List getApiKeyDataSources() { + ApiKeyManager apiKeyManager = new ApiKeyManager(); + return new ArrayList<>(apiKeyManager.getValidSources(cellBaseClient.getApiKey())); } public String getURL() { @@ -91,7 +90,7 @@ public CellBaseClient getCellBaseClient() { } public CellBaseConfiguration getCellBaseConfiguration() { - return new CellBaseConfiguration(getURL(), getVersion(), getDataRelease(), getToken()); + return new CellBaseConfiguration(getURL(), getVersion(), getDataRelease(), getApiKey()); } public String getDefaultDataRelease() throws IOException { @@ -281,7 +280,7 @@ public String toString() { + "species '" + getSpecies() + "', " + "assembly '" + getAssembly() + "', " + "dataRelease '" + getDataRelease() + "', " - + "token '" + getToken() + "'"; + + "token '" + getApiKey() + "'"; } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java index 9a392c88168..1818beb363c 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java @@ -42,9 +42,13 @@ public class CellBaseConfiguration { @DataField(id = "dataRelease", description = "CellBase data release version to be used. If empty, will use the active one") private String dataRelease; - @DataField(id = "token", description = "CellBase token to access to the licensed/restricted data sources such as COSMIC, HGMD,...") + @Deprecated + @DataField(id = "token", deprecated = true, description = "CellBase token to access to the licensed/restricted data sources such as COSMIC, HGMD,...") private String token; + @DataField(id = "apiKey", description = "API key to access to the licensed/restricted data sources (COSMIC, HGMD,...) and to manage quota.") + private String apiKey; + public CellBaseConfiguration() { this(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION); } @@ -54,11 +58,12 @@ public CellBaseConfiguration(String url, String version) { this.version = version; } - public CellBaseConfiguration(String url, String version, String dataRelease, String token) { + public CellBaseConfiguration(String url, String version, String dataRelease, String apiKey) { this.url = url; this.version = version; this.dataRelease = dataRelease; - this.token = token; + this.token = apiKey; + this.apiKey = apiKey; } @Override @@ -68,6 +73,7 @@ public String toString() { sb.append(", version='").append(version).append('\''); sb.append(", dataRelease='").append(dataRelease).append('\''); sb.append(", token='").append(token).append('\''); + sb.append(", apiKey='").append(apiKey).append('\''); sb.append('}'); return sb.toString(); } @@ -99,12 +105,21 @@ public CellBaseConfiguration setDataRelease(String dataRelease) { return this; } - public String getToken() { - return token; +// public String getToken() { +// return apiKey; +// } +// +// public CellBaseConfiguration setToken(String token) { +// this.apiKey = token; +// return this; +// } + + public String getApiKey() { + return apiKey; } - public CellBaseConfiguration setToken(String token) { - this.token = token; + public CellBaseConfiguration setApiKey(String apiKey) { + this.apiKey = apiKey; return this; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index c3c27c26c35..a4f560e49f2 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -1117,7 +1117,7 @@ public CellBaseUtils getCellBaseUtils() throws StorageEngineException { } species = toCellBaseSpeciesName(species); cellBaseUtils = new CellBaseUtils(new CellBaseClient(species, assembly, configuration.getCellbase().getDataRelease(), - configuration.getCellbase().getToken(), clientConfiguration)); + configuration.getCellbase().getApiKey(), clientConfiguration)); } return cellBaseUtils; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java index 320c909c33a..fc743b13a76 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java @@ -72,7 +72,7 @@ public AbstractCellBaseVariantAnnotator(StorageConfiguration storageConfiguratio assembly = projectMetadata.getAssembly(); cellbaseVersion = storageConfiguration.getCellbase().getVersion(); cellbaseDataRelease = storageConfiguration.getCellbase().getDataRelease(); - cellbaseToken = storageConfiguration.getCellbase().getToken(); + cellbaseToken = storageConfiguration.getCellbase().getApiKey(); queryOptions = new QueryOptions(); if (StringUtils.isNotEmpty(params.getString(VariantStorageOptions.ANNOTATOR_CELLBASE_INCLUDE.key()))) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java index 889cba2f42a..85ee3b0810c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java @@ -113,8 +113,8 @@ public ProjectMetadata.VariantAnnotationMetadata getVariantAnnotationMetadata() + getDebugInfo("/meta/" + species + "/dataReleases") + ". "); } List privateSources; - if (StringUtils.isNotEmpty(cellBaseUtils.getToken())) { - privateSources = new ArrayList<>(cellBaseUtils.getTokenSources().getSources().keySet()); + if (StringUtils.isNotEmpty(cellBaseUtils.getApiKey())) { + privateSources = cellBaseUtils.getApiKeyDataSources(); } else { privateSources = new ArrayList<>(); } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByTokenTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java similarity index 87% rename from opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByTokenTest.java rename to opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java index 0faf42d6cb7..806a75df2fb 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByTokenTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java @@ -21,7 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.ANNOTATOR_CELLBASE_INCLUDE; -public class VariantAnnotatorByTokenTest { +public class VariantAnnotatorByApiKeyTest { private StorageConfiguration storageConfiguration; @@ -36,7 +36,7 @@ public void setUp() throws Exception { storageConfiguration.getCellbase().setUrl(url); storageConfiguration.getCellbase().setDataRelease("1"); storageConfiguration.getCellbase().setVersion("v5.3"); - storageConfiguration.getCellbase().setToken(null); + storageConfiguration.getCellbase().setApiKey(null); CellBaseUtils cellBaseUtils = new CellBaseUtils(new CellBaseClient(storageConfiguration.getCellbase().toClientConfiguration())); try { @@ -47,7 +47,7 @@ public void setUp() throws Exception { } @Test - public void testNoToken() throws Exception { + public void testNoApiKey() throws Exception { projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); @@ -61,11 +61,11 @@ public void testNoToken() throws Exception { } @Test - public void testCOSMICToken() throws Exception { - String cosmicToken = System.getenv("CELLBASE_COSMIC_TOKEN"); - Assume.assumeTrue(StringUtils.isNotEmpty(cosmicToken)); + public void testCOSMICApiKey() throws Exception { + String apiKey = System.getenv("CELLBASE_COSMIC_APIKEY"); + Assume.assumeTrue(StringUtils.isNotEmpty(apiKey)); - storageConfiguration.getCellbase().setToken(cosmicToken); + storageConfiguration.getCellbase().setApiKey(apiKey); projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); @@ -80,11 +80,11 @@ public void testCOSMICToken() throws Exception { } @Test - public void testHGMDToken() throws Exception { - String hgmdToken = System.getenv("CELLBASE_HGMD_TOKEN"); - Assume.assumeTrue(StringUtils.isNotEmpty(hgmdToken)); + public void testHGMDApiKey() throws Exception { + String apiKey = System.getenv("CELLBASE_HGMD_APIKEY"); + Assume.assumeTrue(StringUtils.isNotEmpty(apiKey)); - storageConfiguration.getCellbase().setToken(hgmdToken); + storageConfiguration.getCellbase().setApiKey(apiKey); projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); @@ -99,11 +99,11 @@ public void testHGMDToken() throws Exception { } @Test - public void testCOSMICandHGMDToken() throws Exception { - String token = System.getenv("CELLBASE_TOKEN"); - Assume.assumeTrue(StringUtils.isNotEmpty(token)); + public void testCOSMICandHGMDApiKey() throws Exception { + String apiKey = System.getenv("CELLBASE_COSMIC_HGMD_APIKEY"); + Assume.assumeTrue(StringUtils.isNotEmpty(apiKey)); - storageConfiguration.getCellbase().setToken(token); + storageConfiguration.getCellbase().setApiKey(apiKey); projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java index cf2b4201b5f..260e1840dba 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java @@ -9,20 +9,15 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.EvidenceEntry; import org.opencb.biodata.models.variant.avro.VariantAnnotation; -import org.opencb.cellbase.client.config.ClientConfiguration; -import org.opencb.cellbase.client.config.RestConfig; -import org.opencb.cellbase.client.rest.CellBaseClient; import org.opencb.cellbase.core.result.CellBaseDataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.opencga.core.testclassification.duration.ShortTests; import org.opencb.opencga.storage.core.StorageEngine; import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; -import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotatorException; -import java.io.IOException; import java.util.*; import static org.hamcrest.CoreMatchers.instanceOf; @@ -139,7 +134,7 @@ public void useCellBaseTokens() throws VariantAnnotatorException { assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); // Using COSMIC token - storageConfiguration.getCellbase().setToken("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjQ2Nn0.ByfPJn8Lkh5Sow4suRZcOqVxvWZRmTBBNLDzHEIZQ5U"); + storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjQ2Nn0.ByfPJn8Lkh5Sow4suRZcOqVxvWZRmTBBNLDzHEIZQ5U"); variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); assertEquals(1, results.size()); @@ -148,7 +143,7 @@ public void useCellBaseTokens() throws VariantAnnotatorException { assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); // Using HGMD token - storageConfiguration.getCellbase().setToken("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImhnbWQiOjkyMjMzNzIwMzY4NTQ3NzU4MDd9LCJ2ZXJzaW9uIjoiMS4wIiwic3ViIjoiWkVUVEEiLCJpYXQiOjE2NzU4NzI1MDd9.f3JgVRt7_VrifNWTaRMW3aQfrKbtDbIxlzoenJRYJo0"); + storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImhnbWQiOjkyMjMzNzIwMzY4NTQ3NzU4MDd9LCJ2ZXJzaW9uIjoiMS4wIiwic3ViIjoiWkVUVEEiLCJpYXQiOjE2NzU4NzI1MDd9.f3JgVRt7_VrifNWTaRMW3aQfrKbtDbIxlzoenJRYJo0"); variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); assertEquals(1, results.size()); @@ -157,7 +152,7 @@ public void useCellBaseTokens() throws VariantAnnotatorException { assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); // Using COSMIC = HGMD token - storageConfiguration.getCellbase().setToken("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwNywiaGdtZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjUyN30.NCCFc4SAhjUsN5UU0wXGY6nCZx8jLglvaO1cNZYI0u4"); + storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwNywiaGdtZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjUyN30.NCCFc4SAhjUsN5UU0wXGY6nCZx8jLglvaO1cNZYI0u4"); variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); assertEquals(1, results.size()); From cb2e78bf8c06caac1facf09114920d4f923bb244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 29 Aug 2023 12:02:59 +0200 Subject: [PATCH 120/354] tests: remove VersionUtils and use it from java-commons-lib, and fix some tests using CellBase API keys, #TASK-4898, #TASK-4641 --- .../core/cellbase/CellBaseValidator.java | 2 +- .../opencga/core/common/VersionUtils.java | 123 ------------------ .../opencga/core/common/VersionUtilsTest.java | 35 ----- .../storage/core/utils/CellBaseUtilsTest.java | 20 +-- .../VariantAnnotatorByApiKeyTest.java | 18 +-- .../annotators/VariantAnnotatorTest.java | 68 +++++----- 6 files changed, 53 insertions(+), 213 deletions(-) delete mode 100644 opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java delete mode 100644 opencga-core/src/test/java/org/opencb/opencga/core/common/VersionUtilsTest.java diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 83f1bd9e311..dd8988e761b 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -7,7 +7,7 @@ import org.opencb.cellbase.core.config.SpeciesProperties; import org.opencb.cellbase.core.models.DataRelease; import org.opencb.cellbase.core.result.CellBaseDataResponse; -import org.opencb.opencga.core.common.VersionUtils; +import org.opencb.commons.utils.VersionUtils; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java deleted file mode 100644 index 4e32c6ada32..00000000000 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/VersionUtils.java +++ /dev/null @@ -1,123 +0,0 @@ -package org.opencb.opencga.core.common; - -import org.apache.commons.lang3.StringUtils; - -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -public class VersionUtils { - - public static List order(List versions) { - return versions.stream().map(Version::new).sorted().map(Version::toString).collect(Collectors.toList()); - } - - public static boolean isMinVersion(String minVersion, String version) { - return isMinVersion(minVersion, version, false); - } - - public static boolean isMinVersion(String minVersion, String version, boolean ignorePreReleaseVersioning) { - return new Version(minVersion).compareTo(new Version(version), ignorePreReleaseVersioning) <= 0; - } - - public static class Version implements Comparable { - - private final int major; - private final int minor; - private final int patch; - private final int repatch; - private final String other; - - public static final Comparator COMPARATOR = Comparator - .comparingInt(Version::getMajor) - .thenComparingInt(Version::getMinor) - .thenComparingInt(Version::getPatch) - .thenComparingInt(Version::getRepatch) - .thenComparing((o1, o2) -> { - if (o1.other.equals(o2.other)) { - return 0; - } - if (o1.other.isEmpty()) { - return +1; - } - if (o2.other.isEmpty()) { - return -1; - } - if (o1.other.equals("-SNAPSHOT")) { - return -1; - } - if (o2.other.equals("-SNAPSHOT")) { - return +1; - } - return o1.other.compareTo(o2.other); - }); - - public static final Comparator COMPARATOR_NO_PR = Comparator - .comparingInt(Version::getMajor) - .thenComparingInt(Version::getMinor) - .thenComparingInt(Version::getPatch) - .thenComparingInt(Version::getRepatch); - - public Version(String version) { - String[] split = StringUtils.split(version, ".", 4); - major = Integer.parseInt(split[0]); - minor = Integer.parseInt(split[1]); - if (split.length == 4) { - patch = Integer.parseInt(split[2]); - String last = split[3]; - String[] split2 = StringUtils.split(last, "-+", 3); - repatch = Integer.parseInt(split2[0]); - other = last.substring(split2[0].length()); - } else { - String last = split[2]; - String[] split2 = StringUtils.split(last, "-+", 2); - patch = Integer.parseInt(split2[0]); - repatch = 0; - other = last.substring(split2[0].length()); - } - } - - @Override - public String toString() { - if (repatch > 0) { - return major + "." + minor + "." + patch + "." + repatch + other; - } else { - return major + "." + minor + "." + patch + other; - } - } - - @Override - public int compareTo(Version o) { - return COMPARATOR.compare(this, o); - } - - public int compareTo(Version o, boolean ignorePreReleaseVersioning) { - if (ignorePreReleaseVersioning) { - return COMPARATOR_NO_PR.compare(this, o); - } else { - return COMPARATOR.compare(this, o); - } - } - - public int getMajor() { - return major; - } - - public int getMinor() { - return minor; - } - - public int getPatch() { - return patch; - } - - public int getRepatch() { - return repatch; - } - - public String getOther() { - return other; - } - } - -} diff --git a/opencga-core/src/test/java/org/opencb/opencga/core/common/VersionUtilsTest.java b/opencga-core/src/test/java/org/opencb/opencga/core/common/VersionUtilsTest.java deleted file mode 100644 index a6b0dce858f..00000000000 --- a/opencga-core/src/test/java/org/opencb/opencga/core/common/VersionUtilsTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.opencb.opencga.core.common; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.opencb.opencga.core.testclassification.duration.ShortTests; - -@Category(ShortTests.class) -public class VersionUtilsTest { - public static String getComparation(String minVersion, String version) { - int c = new VersionUtils.Version(minVersion).compareTo(new VersionUtils.Version(version)); - String comp; - if (c == 0) { - comp = "="; - } else if (c < 0) { - comp = "<"; - } else { - comp = ">"; - } - System.out.println(minVersion + "\t" + comp + "\t" + version); - return comp; - } - - @Test - public void testOrder() { - Assert.assertEquals("<", getComparation("5.2.7", "5.2.8")); - Assert.assertEquals("=", getComparation("5.2.7", "5.2.7")); - Assert.assertEquals(">", getComparation("5.2.7.1", "5.2.7.1-alpha")); - Assert.assertEquals(">", getComparation("5.2.7", "5.2.7-SNAPSHOT")); - Assert.assertEquals("<", getComparation("5.2.7-alpha", "5.2.7")); - Assert.assertEquals("<", getComparation("5.2.7-alpha", "5.2.7-beta")); - Assert.assertEquals(">", getComparation("5.2.7", "5.2.6")); - Assert.assertEquals("=", getComparation("5.2.7", "5.2.7.0")); - } -} \ No newline at end of file diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java index 1f679ace47e..93cb92e8899 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/utils/CellBaseUtilsTest.java @@ -21,7 +21,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.common.VersionUtils; +import org.opencb.commons.utils.VersionUtils; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; @@ -255,10 +255,10 @@ public void testGetTranscriptFlags() throws IOException { } @Test - public void testAnnotationWithHGMDToken() throws IOException { - Assume.assumeTrue(cellBaseUtils.isMinVersion("5.3.0")); - Assume.assumeThat(assembly, CoreMatchers.equalTo("grch37")); - String hgmdToken = System.getenv("CELLBASE_HGMD_TOKEN"); + public void testAnnotationWithHGMDApiKey() throws IOException { + Assume.assumeTrue(cellBaseUtils.isMinVersion("5.4.0")); + Assume.assumeThat(assembly, CoreMatchers.equalTo("grch38")); + String hgmdToken = System.getenv("CELLBASE_HGMD_APIKEY"); Assume.assumeTrue(StringUtils.isNotEmpty(hgmdToken)); cellBaseClient = new CellBaseClient("hsapiens", assembly, dataRelease, hgmdToken, @@ -271,14 +271,14 @@ public void testAnnotationWithHGMDToken() throws IOException { .getAnnotationByVariantIds(Collections.singletonList("10:113588287:G:A"), queryOptions); VariantAnnotation variantAnnotation = v.firstResult(); assertEquals(2, variantAnnotation.getTraitAssociation().size()); - assertEquals("clinvar", variantAnnotation.getTraitAssociation().get(0).getSource().getName()); - assertEquals("hgmd", variantAnnotation.getTraitAssociation().get(1).getSource().getName()); + assertTrue(variantAnnotation.getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); + assertTrue(variantAnnotation.getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); } @Test - public void testAnnotationWithoutHGMDToken() throws IOException { - Assume.assumeTrue(cellBaseUtils.isMinVersion("5.3.0")); - Assume.assumeThat(assembly, CoreMatchers.equalTo("grch37")); + public void testAnnotationWithoutHGMDAPiKey() throws IOException { + Assume.assumeTrue(cellBaseUtils.isMinVersion("5.4.0")); + Assume.assumeThat(assembly, CoreMatchers.equalTo("grch38")); cellBaseClient = new CellBaseClient("hsapiens", assembly, dataRelease, "", new ClientConfiguration().setVersion(version) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java index 806a75df2fb..02ae9aded18 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorByApiKeyTest.java @@ -34,21 +34,18 @@ public void setUp() throws Exception { storageConfiguration = StorageConfiguration.load(StorageEngine.class.getClassLoader().getResourceAsStream("storage-configuration.yml"), "yml"); String url = "https://uk.ws.zettagenomics.com/cellbase/"; storageConfiguration.getCellbase().setUrl(url); - storageConfiguration.getCellbase().setDataRelease("1"); - storageConfiguration.getCellbase().setVersion("v5.3"); + storageConfiguration.getCellbase().setDataRelease("3"); + storageConfiguration.getCellbase().setVersion("v5.4"); storageConfiguration.getCellbase().setApiKey(null); CellBaseUtils cellBaseUtils = new CellBaseUtils(new CellBaseClient(storageConfiguration.getCellbase().toClientConfiguration())); - try { - Assume.assumeTrue(cellBaseUtils.isMinVersion("5.3.0")); - } catch (RuntimeException e) { - Assume.assumeNoException("Cellbase '" + url + "' not available", e); - } + Assume.assumeTrue(cellBaseUtils.isMinVersion("v5.4")); + + projectMetadata = new ProjectMetadata("hsapiens", "grch38", "3", 1, null, null, null); } @Test public void testNoApiKey() throws Exception { - projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); @@ -66,7 +63,7 @@ public void testCOSMICApiKey() throws Exception { Assume.assumeTrue(StringUtils.isNotEmpty(apiKey)); storageConfiguration.getCellbase().setApiKey(apiKey); - projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); + ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); assertEquals(Collections.singletonList("cosmic"), annotator.getVariantAnnotationMetadata().getPrivateSources()); @@ -85,7 +82,7 @@ public void testHGMDApiKey() throws Exception { Assume.assumeTrue(StringUtils.isNotEmpty(apiKey)); storageConfiguration.getCellbase().setApiKey(apiKey); - projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); + ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); assertEquals(Collections.singletonList("hgmd"), annotator.getVariantAnnotationMetadata().getPrivateSources()); @@ -105,7 +102,6 @@ public void testCOSMICandHGMDApiKey() throws Exception { storageConfiguration.getCellbase().setApiKey(apiKey); - projectMetadata = new ProjectMetadata("hsapiens", "grch37", "1", 1, null, null, null); ObjectMap options = new ObjectMap(VariantStorageOptions.ANNOTATOR.key(), "cellbase"); options.put(ANNOTATOR_CELLBASE_INCLUDE.key(), "clinical"); CellBaseRestVariantAnnotator annotator = new CellBaseRestVariantAnnotator(storageConfiguration, projectMetadata, options); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java index 260e1840dba..02b84fc38a9 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.core.variant.annotation.annotators; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -111,9 +112,9 @@ public void testErrorVariant() throws VariantAnnotatorException { } @Test - public void useCellBaseTokens() throws VariantAnnotatorException { + public void useCellBaseApiKeys() throws VariantAnnotatorException { storageConfiguration.getCellbase().setUrl("https://uk.ws.zettagenomics.com/cellbase/"); - storageConfiguration.getCellbase().setVersion("task-3808"); + storageConfiguration.getCellbase().setVersion("v5.4"); storageConfiguration.getCellbase().setDataRelease("3"); VariantAnnotator variantAnnotator = null; @@ -126,6 +127,8 @@ public void useCellBaseTokens() throws VariantAnnotatorException { } assumeTrue(variantAnnotator != null); + String apiKey; + // No token List results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); assertEquals(1, results.size()); @@ -134,41 +137,40 @@ public void useCellBaseTokens() throws VariantAnnotatorException { assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); // Using COSMIC token - storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjQ2Nn0.ByfPJn8Lkh5Sow4suRZcOqVxvWZRmTBBNLDzHEIZQ5U"); - variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); - results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); - assertEquals(1, results.size()); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); - assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); + apiKey = System.getenv("CELLBASE_COSMIC_APIKEY"); + if (StringUtils.isNotEmpty(apiKey)) { + storageConfiguration.getCellbase().setApiKey(apiKey); + variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); + results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); + assertEquals(1, results.size()); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); + assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); + } // Using HGMD token - storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImhnbWQiOjkyMjMzNzIwMzY4NTQ3NzU4MDd9LCJ2ZXJzaW9uIjoiMS4wIiwic3ViIjoiWkVUVEEiLCJpYXQiOjE2NzU4NzI1MDd9.f3JgVRt7_VrifNWTaRMW3aQfrKbtDbIxlzoenJRYJo0"); - variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); - results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); - assertEquals(1, results.size()); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); - assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); - - // Using COSMIC = HGMD token - storageConfiguration.getCellbase().setApiKey("eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImNvc21pYyI6OTIyMzM3MjAzNjg1NDc3NTgwNywiaGdtZCI6OTIyMzM3MjAzNjg1NDc3NTgwN30sInZlcnNpb24iOiIxLjAiLCJzdWIiOiJaRVRUQSIsImlhdCI6MTY3NTg3MjUyN30.NCCFc4SAhjUsN5UU0wXGY6nCZx8jLglvaO1cNZYI0u4"); - variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); - results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); - assertEquals(1, results.size()); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); - assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); - } + apiKey = System.getenv("CELLBASE_HGMD_APIKEY"); + if (StringUtils.isNotEmpty(apiKey)) { + storageConfiguration.getCellbase().setApiKey(apiKey); + variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); + results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); + assertEquals(1, results.size()); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); + assertFalse(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); + } - private Set getSources(VariantAnnotation variantAnnotation) { - Set sources = new HashSet<>(); - if (variantAnnotation != null && CollectionUtils.isNotEmpty(variantAnnotation.getTraitAssociation())) { - for (EvidenceEntry entry : variantAnnotation.getTraitAssociation()) { - sources.add(entry.getSource().getName()); - } + // Using COSMIC + HGMD token + apiKey = System.getenv("CELLBASE_COSMIC_HGMD_APIKEY"); + if (StringUtils.isNotEmpty(apiKey)) { + storageConfiguration.getCellbase().setApiKey(apiKey); + variantAnnotator = VariantAnnotatorFactory.buildVariantAnnotator(storageConfiguration, projectMetadata, options); + results = variantAnnotator.annotate(Collections.singletonList(new Variant("10:113588287:G:A"))); + assertEquals(1, results.size()); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("clinvar"))); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("cosmic"))); + assertTrue(results.get(0).getTraitAssociation().stream().anyMatch(e -> e.getSource().getName().equals("hgmd"))); } - return sources; } public static class TestCellBaseRestVariantAnnotator extends CellBaseRestVariantAnnotator { From 061730a7e45b5af2230fc9f113f235d18faf5a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 29 Aug 2023 15:26:31 +0100 Subject: [PATCH 121/354] app: Add migration for renaming cellbase.token to cellbase.apiKey #TASK-4898 --- .../catalog/RenameCellBaseToken2ApiKey.java | 50 +++++++++++++++++++ .../config/storage/CellBaseConfiguration.java | 15 ------ 2 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_9_0/catalog/RenameCellBaseToken2ApiKey.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_9_0/catalog/RenameCellBaseToken2ApiKey.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_9_0/catalog/RenameCellBaseToken2ApiKey.java new file mode 100644 index 00000000000..72fe8e6499e --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_9_0/catalog/RenameCellBaseToken2ApiKey.java @@ -0,0 +1,50 @@ +package org.opencb.opencga.app.migrations.v2_9_0.catalog; + +import com.mongodb.client.model.Projections; +import com.mongodb.client.model.UpdateOneModel; +import com.mongodb.client.model.Updates; +import org.bson.Document; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.catalog.migration.MigrationTool; + +import java.util.List; + +import static com.mongodb.client.model.Filters.eq; + +@Migration(id = "rename_cellbase_token_2_api_key" , + description = "Rename CellBase Token to ApiKey", + version = "2.9.0", + domain = Migration.MigrationDomain.CATALOG, + language = Migration.MigrationLanguage.JAVA, + date = 20230829 +) +public class RenameCellBaseToken2ApiKey extends MigrationTool { + + @Override + protected void run() throws Exception { + + migrateCollection(MongoDBAdaptorFactory.USER_COLLECTION, + new Document("projects.id", new Document("$exists", true)), + Projections.include("_id", "projects"), + (userDocument, bulk) -> { + List projects = userDocument.getList("projects", Document.class); + for (int i = 0; i < projects.size(); i++) { + Document project = projects.get(i); + Document cellbase = project.get("cellbase", Document.class); + if (cellbase != null) { + String token = cellbase.getString("token"); + if (token != null) { + bulk.add(new UpdateOneModel<>( + eq("_id", userDocument.get("_id")), + Updates.combine( + Updates.set("projects." + i + ".cellbase.apiKey", token), + Updates.unset("projects." + i + ".cellbase.token") + ))); + } + } + } + }); + } + +} diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java index 1818beb363c..2ef6a77cca4 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java @@ -42,10 +42,6 @@ public class CellBaseConfiguration { @DataField(id = "dataRelease", description = "CellBase data release version to be used. If empty, will use the active one") private String dataRelease; - @Deprecated - @DataField(id = "token", deprecated = true, description = "CellBase token to access to the licensed/restricted data sources such as COSMIC, HGMD,...") - private String token; - @DataField(id = "apiKey", description = "API key to access to the licensed/restricted data sources (COSMIC, HGMD,...) and to manage quota.") private String apiKey; @@ -62,7 +58,6 @@ public CellBaseConfiguration(String url, String version, String dataRelease, Str this.url = url; this.version = version; this.dataRelease = dataRelease; - this.token = apiKey; this.apiKey = apiKey; } @@ -72,7 +67,6 @@ public String toString() { sb.append("url='").append(url).append('\''); sb.append(", version='").append(version).append('\''); sb.append(", dataRelease='").append(dataRelease).append('\''); - sb.append(", token='").append(token).append('\''); sb.append(", apiKey='").append(apiKey).append('\''); sb.append('}'); return sb.toString(); @@ -105,15 +99,6 @@ public CellBaseConfiguration setDataRelease(String dataRelease) { return this; } -// public String getToken() { -// return apiKey; -// } -// -// public CellBaseConfiguration setToken(String token) { -// this.apiKey = token; -// return this; -// } - public String getApiKey() { return apiKey; } From 88ed0ea4ef071c2257b2fa5e6c3e1422f48cdb49 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 30 Aug 2023 09:40:17 +0200 Subject: [PATCH 122/354] core: improve regex description, #TASK-4906 --- .../main/java/org/opencb/opencga/core/api/ParamConstants.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index 6a42182cf34..a34b818924a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -38,7 +38,8 @@ public class ParamConstants { public static final String RELEASE_DESCRIPTION = "Release when it was created"; public static final String INTERNAL_STATUS_PARAM = "internalStatus"; public static final String INTERNAL_STATUS_DESCRIPTION = "Filter by internal status"; - private static final String REGEX_SUPPORT = ". Also admits basic regular expressions like '~/^value/i'"; + private static final String REGEX_SUPPORT = ". Also admits basic regular expressions using the operator '~', " + + "i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search."; @Deprecated // Use INTERNAL_VARIANT_INDEX_STATUS_PARAM public static final String INTERNAL_INDEX_STATUS_PARAM = "internalIndexStatus"; public static final String INTERNAL_VARIANT_INDEX_STATUS_PARAM = "internalVariantIndexStatus"; From c34d02549b6d595a38a33591d59beae764b419a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 30 Aug 2023 11:38:46 +0100 Subject: [PATCH 123/354] core: Fix cellbase validator to acknowledge tokens. #TASK-4913 --- .../core/cellbase/CellBaseValidator.java | 44 ++++++++++++++++++- .../core/cellbase/CellBaseValidatorTest.java | 35 +++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 21f5c79fecd..43da58f396a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -1,6 +1,8 @@ package org.opencb.opencga.core.cellbase; +import io.jsonwebtoken.JwtException; import org.apache.commons.lang3.StringUtils; +import org.opencb.biodata.models.variant.avro.VariantAnnotation; import org.opencb.cellbase.client.rest.CellBaseClient; import org.opencb.cellbase.core.config.SpeciesConfiguration; import org.opencb.cellbase.core.config.SpeciesProperties; @@ -8,6 +10,7 @@ import org.opencb.cellbase.core.result.CellBaseDataResponse; import org.opencb.cellbase.core.token.DataAccessTokenManager; import org.opencb.cellbase.core.token.DataAccessTokenSources; +import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.common.VersionUtils; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.slf4j.Logger; @@ -15,6 +18,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -46,6 +50,7 @@ private CellBaseClient newCellBaseClient(CellBaseConfiguration cellBaseConfigura toCellBaseSpeciesName(species), assembly, cellBaseConfiguration.getDataRelease(), + cellBaseConfiguration.getToken(), cellBaseConfiguration.toClientConfiguration()); } @@ -136,7 +141,7 @@ public void validate() throws IOException { validate(false); } - public CellBaseConfiguration validate(boolean autoComplete) throws IOException { + private CellBaseConfiguration validate(boolean autoComplete) throws IOException { CellBaseConfiguration cellBaseConfiguration = getCellBaseConfiguration(); String inputVersion = getVersion(); CellBaseDataResponse species; @@ -189,6 +194,38 @@ public CellBaseConfiguration validate(boolean autoComplete) throws IOException { } } } + if (getToken() != null) { + // Check it's supported + if (!supportsToken(serverVersion)) { + throw new IllegalArgumentException("Token not supported for cellbase " + + "url: '" + getURL() + "'" + + ", version: '" + inputVersion + "'"); + } + + // Check it's an actual token + DataAccessTokenManager tokenManager = new DataAccessTokenManager(); + try { + tokenManager.decode(getToken()); + } catch (JwtException e) { + throw new IllegalArgumentException("Malformed token for cellbase " + + "url: '" + getURL() + "'" + + ", version: '" + inputVersion + + "', species: '" + getSpecies() + + "', assembly: '" + getAssembly() + "'"); + } + + // Check it's a valid token + CellBaseDataResponse response = cellBaseClient.getVariantClient() + .getAnnotationByVariantIds(Collections.singletonList("1:1:N:C"), new QueryOptions(), true); + if (response.firstResult() == null) { + throw new IllegalArgumentException("Invalid token for cellbase " + + "url: '" + getURL() + "'" + + ", version: '" + inputVersion + + "', species: '" + getSpecies() + + "', assembly: '" + getAssembly() + "'"); + } + } + return cellBaseConfiguration; } @@ -231,6 +268,11 @@ public static boolean supportsDataReleaseActiveByDefaultIn(String serverVersion) return VersionUtils.isMinVersion("5.5.0", serverVersion, true); } + public static boolean supportsToken(String serverVersion) { + // Tokens support starts at version 5.4.0 + return VersionUtils.isMinVersion("5.4.0", serverVersion); + } + public String getVersionFromServerMajor() throws IOException { return major(getVersionFromServer()); } diff --git a/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java b/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java index 36db80985f0..38d91dd0fc8 100644 --- a/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java +++ b/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java @@ -1,6 +1,8 @@ package org.opencb.opencga.core.cellbase; +import org.apache.commons.lang3.StringUtils; import org.junit.Assert; +import org.junit.Assume; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -70,4 +72,37 @@ public void testNoActiveReleases() throws IOException { thrown.expectMessage("No active data releases found on cellbase"); CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.1", null, null), "mmusculus", "GRCm38", true); } + + @Test + public void testToken() throws IOException { + String token = System.getenv("CELLBASE_HGMD_TOKEN"); + Assume.assumeTrue(StringUtils.isNotEmpty(token)); + CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.4", null, token), "hsapiens", "grch38", true); + Assert.assertNotNull(validated.getToken()); + } + + @Test + public void testTokenNotSupported() throws IOException { + String token = System.getenv("CELLBASE_HGMD_TOKEN"); + Assume.assumeTrue(StringUtils.isNotEmpty(token)); + CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.1", null, token), "hsapiens", "grch38", true); + Assert.assertNotNull(validated.getToken()); + } + + @Test + public void testMalformedToken() throws IOException { + thrown.expectMessage("Malformed token for cellbase"); + String token = "MALFORMED_TOKEN"; + CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.4", null, token), "hsapiens", "grch38", true); + Assert.assertNotNull(validated.getToken()); + } + + @Test + public void testUnsignedToken() throws IOException { + thrown.expectMessage("Invalid token for cellbase"); + String token = "eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VzIjp7ImhnbWQiOjkyMjMzNzIwMzY4NTQ3NzU4MDd9LCJ2ZXJzaW9uIjoiMS4wIiwic3ViIjoiWkVUVEEiLCJpYXQiOjE2OTMyMTY5MDd9.invalidsignature"; + CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.4", null, token), "hsapiens", "grch38", true); + Assert.assertNotNull(validated.getToken()); + } + } \ No newline at end of file From 24e51ea1d9848cfa8e32f396412fd3b8058fcc78 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 30 Aug 2023 15:02:16 +0200 Subject: [PATCH 124/354] app: fix client and cli generator, #TASK-4917 --- opencga-app/app/misc/clients/rest_client_generator.py | 3 +++ .../server/generator/writers/ParentClientRestApiWriter.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/opencga-app/app/misc/clients/rest_client_generator.py b/opencga-app/app/misc/clients/rest_client_generator.py index 8239fa55709..bfb3b78489f 100644 --- a/opencga-app/app/misc/clients/rest_client_generator.py +++ b/opencga-app/app/misc/clients/rest_client_generator.py @@ -198,6 +198,9 @@ def get_method_name(self, endpoint, category): # /{apiVersion}/analysis/clinical/{clinicalAnalysis}/interpretation/{interpretationId}/merge elif self.all_arg([items[0], items[2]]) and not self.any_arg([items[1], items[3]]): method_name = '_'.join([items[3], items[1]]) + # /{apiVersion}/admin/users/{user}/groups/update + elif self.all_arg([items[1]]) and not self.any_arg([items[0], items[2], items[3]]): + method_name = '_'.join([items[0], items[3], items[2]]) elif len(items) == 5: # e.g. /{apiVersion}/files/{file}/annotationSets/{annotationSet}/annotations/update if self.all_arg([items[0], items[2]]) and not self.any_arg([items[1], items[3], items[4]]): diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java index 2ac80dfd288..72857bc2aec 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java @@ -218,6 +218,8 @@ protected static String getMethodName(String subpath) { // methodName = items[3] + "_" + items[1] + "_" + items[2]; } else if (items[0].contains("}") && items[2].contains("}") && (!items[1].contains("}")) && (!items[3].contains("}"))) { methodName = items[3] + "_" + items[1]; + } else if (items[1].contains("}") && (!items[0].contains("}") && !items[2].contains("}") && !items[3].contains("}"))) { + methodName = items[0] + "_" + items[3] + "_" + items[2]; } } else if (items.length == 5) { if (items[0].contains("}") && items[2].contains("}") && (!items[1].contains("}")) && (!items[3].contains("}")) From 4722e48728dbb6761c4a65643a52c0f339080866 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 30 Aug 2023 15:04:32 +0200 Subject: [PATCH 125/354] app: generate new clients and cli, #TASK-4917 --- .../app/cli/main/OpenCgaCompleter.java | 4 +-- .../app/cli/main/OpencgaCliOptionsParser.java | 3 +- .../main/executors/AdminCommandExecutor.java | 36 +++++++++++++++++++ .../cli/main/options/AdminCommandOptions.java | 28 +++++++++++++++ .../AnalysisVariantCommandOptions.java | 4 +-- opencga-client/src/main/R/R/Admin-methods.R | 13 +++++-- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++++----- .../src/main/R/R/Clinical-methods.R | 4 +-- opencga-client/src/main/R/R/Cohort-methods.R | 4 +-- opencga-client/src/main/R/R/Family-methods.R | 4 +-- opencga-client/src/main/R/R/File-methods.R | 4 +-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 4 +-- opencga-client/src/main/R/R/Job-methods.R | 4 +-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 2 +- opencga-client/src/main/R/R/Study-methods.R | 4 +-- opencga-client/src/main/R/R/User-methods.R | 4 +-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 20 +++++++++-- .../client/rest/clients/AlignmentClient.java | 4 +-- .../rest/clients/ClinicalAnalysisClient.java | 4 +-- .../client/rest/clients/CohortClient.java | 4 +-- .../rest/clients/DiseasePanelClient.java | 4 +-- .../client/rest/clients/FamilyClient.java | 4 +-- .../client/rest/clients/FileClient.java | 4 +-- .../client/rest/clients/GA4GHClient.java | 4 +-- .../client/rest/clients/IndividualClient.java | 4 +-- .../client/rest/clients/JobClient.java | 4 +-- .../client/rest/clients/MetaClient.java | 4 +-- .../client/rest/clients/ProjectClient.java | 4 +-- .../client/rest/clients/SampleClient.java | 4 +-- .../client/rest/clients/StudyClient.java | 4 +-- .../client/rest/clients/UserClient.java | 4 +-- .../client/rest/clients/VariantClient.java | 4 +-- .../rest/clients/VariantOperationClient.java | 4 +-- opencga-client/src/main/javascript/Admin.js | 13 ++++++- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 17 +++++++-- .../rest_clients/alignment_client.py | 4 +-- .../rest_clients/clinical_analysis_client.py | 4 +-- .../pyopencga/rest_clients/cohort_client.py | 4 +-- .../rest_clients/disease_panel_client.py | 4 +-- .../pyopencga/rest_clients/family_client.py | 4 +-- .../pyopencga/rest_clients/file_client.py | 4 +-- .../pyopencga/rest_clients/ga4gh_client.py | 4 +-- .../rest_clients/individual_client.py | 4 +-- .../pyopencga/rest_clients/job_client.py | 4 +-- .../pyopencga/rest_clients/meta_client.py | 4 +-- .../pyopencga/rest_clients/project_client.py | 4 +-- .../pyopencga/rest_clients/sample_client.py | 4 +-- .../pyopencga/rest_clients/study_client.py | 4 +-- .../pyopencga/rest_clients/user_client.py | 4 +-- .../pyopencga/rest_clients/variant_client.py | 4 +-- .../rest_clients/variant_operation_client.py | 4 +-- 74 files changed, 239 insertions(+), 125 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index fa69afab38d..6627d4d82f1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-04-18 OpenCB +* Copyright 2015-2023-08-30 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,7 +70,7 @@ public abstract class OpenCgaCompleter implements Completer { .map(Candidate::new) .collect(toList()); - private List adminList = asList( "audit-group-by","catalog-index-stats","catalog-install","catalog-jwt","users-create","users-import","users-search","users-sync") + private List adminList = asList( "audit-group-by","catalog-index-stats","catalog-install","catalog-jwt","users-create","users-import","users-search","users-sync","update-groups-users") .stream() .map(Candidate::new) .collect(toList()); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index c18998aabcc..b619c612c32 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-04-18 OpenCB +* Copyright 2015-2023-08-30 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -188,6 +188,7 @@ public OpencgaCliOptionsParser() { adminSubCommands.addCommand("users-import", adminCommandOptions.importUsersCommandOptions); adminSubCommands.addCommand("users-search", adminCommandOptions.searchUsersCommandOptions); adminSubCommands.addCommand("users-sync", adminCommandOptions.syncUsersCommandOptions); + adminSubCommands.addCommand("update-groups-users", adminCommandOptions.usersUpdateGroupsCommandOptions); individualsCommandOptions = new IndividualsCommandOptions(commonCommandOptions, jCommander); jCommander.addCommand("individuals", individualsCommandOptions); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java index 9ab6c51ed00..a16efb4df47 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java @@ -19,11 +19,13 @@ import org.opencb.opencga.app.cli.main.options.AdminCommandOptions; import java.util.Map; +import org.opencb.opencga.catalog.utils.ParamUtils.AddRemoveAction; import org.opencb.opencga.core.models.admin.GroupSyncParams; import org.opencb.opencga.core.models.admin.InstallationParams; import org.opencb.opencga.core.models.admin.JWTParams; import org.opencb.opencga.core.models.admin.UserCreateParams; import org.opencb.opencga.core.models.admin.UserImportParams; +import org.opencb.opencga.core.models.admin.UserUpdateGroup; import org.opencb.opencga.core.models.common.Enums.Resource; import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Group; @@ -87,6 +89,9 @@ public void execute() throws Exception { case "users-sync": queryResponse = syncUsers(); break; + case "update-groups-users": + queryResponse = usersUpdateGroups(); + break; default: logger.error("Subcommand not valid"); break; @@ -288,4 +293,35 @@ private RestResponse syncUsers() throws Exception { } return openCGAClient.getAdminClient().syncUsers(groupSyncParams); } + + private RestResponse usersUpdateGroups() throws Exception { + logger.debug("Executing usersUpdateGroups in Admin command line"); + + AdminCommandOptions.UsersUpdateGroupsCommandOptions commandOptions = adminCommandOptions.usersUpdateGroupsCommandOptions; + + ObjectMap queryParams = new ObjectMap(); + queryParams.putIfNotNull("action", commandOptions.action); + + + UserUpdateGroup userUpdateGroup = null; + if (commandOptions.jsonDataModel) { + userUpdateGroup = new UserUpdateGroup(); + RestResponse res = new RestResponse<>(); + res.setType(QueryType.VOID); + PrintUtils.println(getObjectAsJSON(userUpdateGroup)); + return res; + } else if (commandOptions.jsonFile != null) { + userUpdateGroup = JacksonUtils.getDefaultObjectMapper() + .readValue(new java.io.File(commandOptions.jsonFile), UserUpdateGroup.class); + } else { + ObjectMap beanParams = new ObjectMap(); + putNestedIfNotNull(beanParams, "studyIds",commandOptions.studyIds, true); + putNestedIfNotNull(beanParams, "groupIds",commandOptions.groupIds, true); + + userUpdateGroup = JacksonUtils.getDefaultObjectMapper().copy() + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) + .readValue(beanParams.toJson(), UserUpdateGroup.class); + } + return openCGAClient.getAdminClient().usersUpdateGroups(commandOptions.user, userUpdateGroup, queryParams); + } } \ No newline at end of file diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AdminCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AdminCommandOptions.java index ae9c1397750..f246d8a36d8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AdminCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AdminCommandOptions.java @@ -41,6 +41,7 @@ public class AdminCommandOptions { public ImportUsersCommandOptions importUsersCommandOptions; public SearchUsersCommandOptions searchUsersCommandOptions; public SyncUsersCommandOptions syncUsersCommandOptions; + public UsersUpdateGroupsCommandOptions usersUpdateGroupsCommandOptions; public AdminCommandOptions(CommonCommandOptions commonCommandOptions, JCommander jCommander) { @@ -55,6 +56,7 @@ public AdminCommandOptions(CommonCommandOptions commonCommandOptions, JCommander this.importUsersCommandOptions = new ImportUsersCommandOptions(); this.searchUsersCommandOptions = new SearchUsersCommandOptions(); this.syncUsersCommandOptions = new SyncUsersCommandOptions(); + this.usersUpdateGroupsCommandOptions = new UsersUpdateGroupsCommandOptions(); } @@ -278,4 +280,30 @@ public class SyncUsersCommandOptions { } + @Parameters(commandNames = {"update-groups-users"}, commandDescription ="Add or remove users from existing groups") + public class UsersUpdateGroupsCommandOptions { + + @ParametersDelegate + public CommonCommandOptions commonOptions = commonCommandOptions; + + @Parameter(names = {"--json-file"}, description = "File with the body data in JSON format. Note, that using this parameter will ignore all the other parameters.", required = false, arity = 1) + public String jsonFile; + + @Parameter(names = {"--json-data-model"}, description = "Show example of file structure for body data.", help = true, arity = 0) + public Boolean jsonDataModel = false; + + @Parameter(names = {"--user", "-u"}, description = "User ID", required = true, arity = 1) + public String user; + + @Parameter(names = {"--action"}, description = "Action to be performed: ADD or REMOVE user to/from groups", required = false, arity = 1) + public String action = "ADD"; + + @Parameter(names = {"--study-ids"}, description = "The body web service studyIds parameter", required = false, arity = 1) + public String studyIds; + + @Parameter(names = {"--group-ids"}, description = "The body web service groupIds parameter", required = false, arity = 1) + public String groupIds; + + } + } \ No newline at end of file diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java index fc752daaf98..0b37bec1c1c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java @@ -925,8 +925,8 @@ public class RunGwasCommandOptions { @Parameter(names = {"--phenotype"}, description = "The body web service phenotype parameter", required = false, arity = 1) public String phenotype; - @Parameter(names = {"--index"}, description = "The body web service index parameter", required = false, arity = 1) - public Boolean index; + @Parameter(names = {"--index"}, description = "The body web service index parameter", required = false, help = true, arity = 0) + public boolean index = false; @Parameter(names = {"--index-score-id"}, description = "The body web service indexScoreId parameter", required = false, arity = 1) public String indexScoreId; diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 11b7d569372..5d46536451d 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -28,6 +28,7 @@ #' | importUsers | /{apiVersion}/admin/users/import | body[*] | #' | searchUsers | /{apiVersion}/admin/users/search | include, exclude, limit, skip, count, user, account, authenticationId | #' | syncUsers | /{apiVersion}/admin/users/sync | body[*] | +#' | usersUpdateGroups | /{apiVersion}/admin/users/{user}/groups/update | user[*], action, body[*] | #' #' @md #' @seealso \url{http://docs.opencb.org/display/opencga/Using+OpenCGA} and the RESTful API documentation @@ -35,7 +36,7 @@ #' [*]: Required parameter #' @export -setMethod("adminClient", "OpencgaR", function(OpencgaR, endpointName, params=NULL, ...) { +setMethod("adminClient", "OpencgaR", function(OpencgaR, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/admin/audit/groupBy: @@ -100,5 +101,13 @@ setMethod("adminClient", "OpencgaR", function(OpencgaR, endpointName, params=NUL #' @param data JSON containing the parameters. syncUsers=fetchOpenCGA(object=OpencgaR, category="admin", categoryId=NULL, subcategory="users", subcategoryId=NULL, action="sync", params=params, httpMethod="POST", as.queryParam=NULL, ...), + + #' @section Endpoint /{apiVersion}/admin/users/{user}/groups/update: + #' Add or remove users from existing groups. + #' @param user User ID. + #' @param action Action to be performed: ADD or REMOVE user to/from groups. Allowed values: ['ADD REMOVE'] + #' @param data JSON containing the parameters. + usersUpdateGroups=fetchOpenCGA(object=OpencgaR, category="admin/users", categoryId=user, subcategory="groups", + subcategoryId=NULL, action="update", params=params, httpMethod="POST", as.queryParam=NULL, ...), ) }) \ No newline at end of file diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 00be80c77b7..206b0aa2646 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 7c9d2230cf6..8e9baedd284 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,17 +10,17 @@ setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, members, templateId, studies, variableSet, group, study, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, file, members, files, annotationSet, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## @@ -30,17 +30,17 @@ setGeneric("sampleClient", function(OpencgaR, members, sample, samples, annotati # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, members, individual, annotationSet, individuals, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, members, individuals, annotationSet, individual, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, members, families, family, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, members, interpretation, clinicalAnalyses, interpretations, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -80,6 +80,6 @@ setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=N # ############################################################################## ## AdminClient -setGeneric("adminClient", function(OpencgaR, endpointName, params=NULL, ...) +setGeneric("adminClient", function(OpencgaR, user, endpointName, params=NULL, ...) standardGeneric("adminClient")) diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index c590dab0b25..f0652ba64dd 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, members, interpretation, clinicalAnalyses, interpretations, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 3d1c6034484..2bcb87bbbbc 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index b4bdd82fbc5..5993bbe8de9 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, members, families, family, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index d97412f4788..0ef0d2c83d8 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, file, members, files, annotationSet, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index defcc45b18f..534e75260ad 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 1ded4cea574..019acd410c2 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individual, annotationSet, individuals, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individuals, annotationSet, individual, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index 9a6319a293c..f85fe4840f7 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index cfd47fb4f17..d4de1c866b8 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 8869d0ff5a3..902a0403f47 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index ea88beb1bfa..e7d661d3a2c 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 88420d4beb6..b4ab8a5b98e 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index fa8bc1e707a..89b2d7b5876 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 425059d2d03..754fa677dea 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, members, templateId, studies, variableSet, group, study, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 9faadad0488..7fb54a32ff1 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index e9e2f67edeb..0b7a706cb8f 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-04-18 +# Autogenerated on: 2023-08-30 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 4baf9a8229e..2a375bb7b83 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -25,6 +25,7 @@ import org.opencb.opencga.core.models.admin.JWTParams; import org.opencb.opencga.core.models.admin.UserCreateParams; import org.opencb.opencga.core.models.admin.UserImportParams; +import org.opencb.opencga.core.models.admin.UserUpdateGroup; import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Group; import org.opencb.opencga.core.models.user.User; @@ -35,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { @@ -165,4 +166,19 @@ public RestResponse syncUsers(GroupSyncParams data) throws ClientExceptio params.put("body", data); return execute("admin", null, "users", null, "sync", params, POST, Group.class); } + + /** + * Add or remove users from existing groups. + * @param user User ID. + * @param data JSON containing the parameters. + * @param params Map containing any of the following optional parameters. + * action: Action to be performed: ADD or REMOVE user to/from groups. + * @return a RestResponse object. + * @throws ClientException ClientException if there is any server error. + */ + public RestResponse usersUpdateGroups(String user, UserUpdateGroup data, ObjectMap params) throws ClientException { + params = params != null ? params : new ObjectMap(); + params.put("body", data); + return execute("admin/users", user, "groups", null, "update", params, POST, Group.class); + } } diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index c153146ca4e..08257cc1a1a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 9da4bc7e24c..32ab712003e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -60,7 +60,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 11bfc04c972..547601b9329 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index fc47e555d99..ad5ea1a7047 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 072933ac1e2..d113cbdaf09 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 553e0983a27..72be6ed305b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index a4bc5b7f11c..fbb84f972a4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 3b41baf7ae6..5803d125e54 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 334c154ae53..27245d4011c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index ac4c311a0bb..c2c015b670d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 9a3094cb554..47aeec33622 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index efeca3bd4b3..d2dd71bc2f3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 47f1ce2dbc9..53502e91c7e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index bdf3eb4f232..eda89cb9228 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 5b135d4d38e..0d25391978a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index e15498be36d..ae6bef9d18d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-04-18 +* Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.8.0-SNAPSHOT + * Client version: 2.11.0-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 53c4f4e9c41..26d6d454012 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -116,4 +116,15 @@ export default class Admin extends OpenCGAParentClass { return this._post("admin", null, "users", null, "sync", data); } + /** Add or remove users from existing groups + * @param {String} user - User ID. + * @param {Object} data - JSON containing the parameters. + * @param {Object} [params] - The Object containing the following optional parameters: + * @param {"ADD REMOVE"} [params.action = "ADD"] - Action to be performed: ADD or REMOVE user to/from groups. The default value is ADD. + * @returns {Promise} Promise object in the form of RestResponse instance. + */ + usersUpdateGroups(user, data, params) { + return this._post("admin/users", user, "groups", null, "update", data, params); + } + } \ No newline at end of file diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index bc3b7eb2c02..33aa92db017 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 30c195691ca..4434d811346 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 56f11ab10fa..cb53c5278a3 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index c8a18d38ab6..a4bc253c0bd 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index eef6b77e11e..e971b3b2e81 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 66ca23ddf1e..b3219c4f08a 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index e6fb38143ac..ec01beb21de 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 2487febccf8..71eb45dbafd 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index e76d111f0b5..1e1cc91bc52 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index b0208dd1cfd..24dfe87c63d 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index 06abda04b57..e240c25cb46 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 2c4fdd8956a..03c6a5b8d8f 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 029d4133c82..e99e8c7606b 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index fd3b9adaf52..bfed2a7bfec 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index f5f8b2e09a1..ae9365d5448 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 604e09d9ccf..f9837f69e25 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-04-18 + * Autogenerated on: 2023-08-30 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 7048467edf6..e982694d126 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/admin """ @@ -128,3 +128,16 @@ def sync_users(self, data=None, **options): return self._post(category='admin', resource='sync', subcategory='users', data=data, **options) + def users_update_groups(self, user, data=None, **options): + """ + Add or remove users from existing groups. + PATH: /{apiVersion}/admin/users/{user}/groups/update + + :param dict data: JSON containing the parameters. (REQUIRED) + :param str user: User ID. (REQUIRED) + :param str action: Action to be performed: ADD or REMOVE user to/from + groups. Allowed values: ['ADD REMOVE'] + """ + + return self._post(category='admin/users', resource='update', query_id=user, subcategory='groups', data=data, **options) + diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 826ae8b6957..b94f350449a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index e6ced9ecbf3..ca4e1438978 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 6c685b9772a..fef4cafa48d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 4ec0b95c8fa..8382900c307 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index ab94612b324..0637f728a08 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 0db45804764..816cdf83c0b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 0b1c0df4afa..6f62ec62786 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index e4830dbe5ab..3982f010208 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index fe0a9ec74d3..313cf0df796 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 96982cc0e3d..189a5ab62ea 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index d28ecf4d846..0784b20594c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index dca81d4e863..258189685ef 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 53849f904d7..3726c1e0a3a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 0a446be7d9a..80ac433566b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index cc233157566..32dfa804648 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 80eb4b8c973..4070484d219 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-04-18 + Autogenerated on: 2023-08-30 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.8.0-SNAPSHOT + Client version: 2.11.0-SNAPSHOT PATH: /{apiVersion}/operation """ From af38b8bd620c9b0dce5c7f885d08fcb34fbdcf62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 31 Aug 2023 16:23:38 +0200 Subject: [PATCH 126/354] client: generate OpenCGA clients to take into account the parameter API key, #TASK-4898, #TASK-4641 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- ...erationsVariantStorageCommandExecutor.java | 2 +- .../executors/ProjectsCommandExecutor.java | 2 +- ...perationsVariantStorageCommandOptions.java | 4 ++-- .../main/options/ProjectsCommandOptions.java | 4 ++-- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 20 +++++++++---------- .../src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 2 +- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 4 ++-- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- 75 files changed, 96 insertions(+), 96 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 6627d4d82f1..8b3fc6bbc51 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-08-30 OpenCB +* Copyright 2015-2023-08-31 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index b619c612c32..471a564c487 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-08-30 OpenCB +* Copyright 2015-2023-08-31 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 408f28841f3..78ed32b92dc 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -197,7 +197,7 @@ private RestResponse configureCellbase() throws Exception { putNestedIfNotEmpty(beanParams, "url",commandOptions.url, true); putNestedIfNotEmpty(beanParams, "version",commandOptions.version, true); putNestedIfNotEmpty(beanParams, "dataRelease",commandOptions.dataRelease, true); - putNestedIfNotEmpty(beanParams, "token",commandOptions.token, true); + putNestedIfNotEmpty(beanParams, "apiKey",commandOptions.apiKey, true); cellBaseConfiguration = JacksonUtils.getDefaultObjectMapper().copy() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java index 7facd50d4d6..2ed3593e612 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java @@ -123,7 +123,7 @@ private RestResponse create() throws Exception { putNestedIfNotEmpty(beanParams, "cellbase.url",commandOptions.cellbaseUrl, true); putNestedIfNotEmpty(beanParams, "cellbase.version",commandOptions.cellbaseVersion, true); putNestedIfNotEmpty(beanParams, "cellbase.dataRelease",commandOptions.cellbaseDataRelease, true); - putNestedIfNotEmpty(beanParams, "cellbase.token",commandOptions.cellbaseToken, true); + putNestedIfNotEmpty(beanParams, "cellbase.apiKey",commandOptions.cellbaseApiKey, true); putNestedIfNotNull(beanParams, "attributes",commandOptions.attributes, true); projectCreateParams = JacksonUtils.getDefaultObjectMapper().copy() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java index c3c89bf4b1a..d0b8a26d019 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java @@ -128,8 +128,8 @@ public class ConfigureCellbaseCommandOptions { @Parameter(names = {"--data-release"}, description = "CellBase data release version to be used. If empty, will use the active one", required = false, arity = 1) public String dataRelease; - @Parameter(names = {"--token"}, description = "CellBase token to access to the licensed/restricted data sources such as COSMIC, HGMD,...", required = false, arity = 1) - public String token; + @Parameter(names = {"--api-key"}, description = "API key to access to the licensed/restricted data sources (COSMIC, HGMD,...) and to manage quota.", required = false, arity = 1) + public String apiKey; } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/ProjectsCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/ProjectsCommandOptions.java index 1f7a3782e45..a2eca8cb958 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/ProjectsCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/ProjectsCommandOptions.java @@ -110,8 +110,8 @@ public class CreateCommandOptions { @Parameter(names = {"--cellbase-data-release"}, description = "CellBase data release version to be used. If empty, will use the active one", required = false, arity = 1) public String cellbaseDataRelease; - @Parameter(names = {"--cellbase-token"}, description = "CellBase token to access to the licensed/restricted data sources such as COSMIC, HGMD,...", required = false, arity = 1) - public String cellbaseToken; + @Parameter(names = {"--cellbase-api-key"}, description = "API key to access to the licensed/restricted data sources (COSMIC, HGMD,...) and to manage quota.", required = false, arity = 1) + public String cellbaseApiKey; @DynamicParameter(names = {"--attributes"}, description = "The body web service attributes parameter. Use: --attributes key=value", required = false) public java.util.Map attributes = new HashMap<>(); //Dynamic parameters must be initialized; diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 5d46536451d..683aadd80e1 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 206b0aa2646..175943692f6 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 8e9baedd284..088e6976532 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,31 +1,31 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## ## ProjectClient -setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, params=NULL, ...) +setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, params=NULL, ...) standardGeneric("projectClient")) # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, members, variableSet, studies, study, templateId, group, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, members, annotationSet, file, files, folder, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, members, sample, samples, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## @@ -35,12 +35,12 @@ setGeneric("individualClient", function(OpencgaR, members, individuals, annotati # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretation, members, interpretations, clinicalAnalyses, clinicalAnalysis, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index f0652ba64dd..b87af69bca9 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, members, interpretations, clinicalAnalyses, clinicalAnalysis, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 2bcb87bbbbc..4aafeeb7609 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 5993bbe8de9..069bac92a64 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 0ef0d2c83d8..1db2de2c791 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, members, annotationSet, file, files, folder, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 534e75260ad..3d4b5de60c2 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 019acd410c2..348b34679a1 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index f85fe4840f7..59955bac486 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index d4de1c866b8..386dc6d24da 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 902a0403f47..f143297e89e 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index e7d661d3a2c..1a7bf7bdbca 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index b4ab8a5b98e..3e68f49bfe5 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -34,7 +34,7 @@ #' [*]: Required parameter #' @export -setMethod("projectClient", "OpencgaR", function(OpencgaR, projects, project, endpointName, params=NULL, ...) { +setMethod("projectClient", "OpencgaR", function(OpencgaR, project, projects, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/projects/create: diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 89b2d7b5876..a78d57987f3 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, samples, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 754fa677dea..682812a7583 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, members, variableSet, studies, study, templateId, group, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 7fb54a32ff1..71089917286 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 0b7a706cb8f..1925f53cf1d 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-08-31 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 2a375bb7b83..71bae1378cd 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 08257cc1a1a..e902d0d6454 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 32ab712003e..012238a332a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 547601b9329..024ddc75a4c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index ad5ea1a7047..ba7055998a1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index d113cbdaf09..9b7142415e4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 72be6ed305b..c40f63da5d7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index fbb84f972a4..a4afee831af 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 5803d125e54..2b291285857 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 27245d4011c..35e20d6ea8d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index c2c015b670d..2a4c2afb9b8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 47aeec33622..b1dd2d4757b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index d2dd71bc2f3..31b281cccd2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 53502e91c7e..6e4fb4a9495 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index eda89cb9228..3443565c6a3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 0d25391978a..fe1f4de3e99 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index ae6bef9d18d..e2b9052903e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 26d6d454012..60a9d5b1c9e 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 33aa92db017..10a7da5bad2 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 4434d811346..687447b8005 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index cb53c5278a3..f121ff941f5 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index a4bc253c0bd..1216496f705 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index e971b3b2e81..ea150256018 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index b3219c4f08a..80d2eac1817 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index ec01beb21de..41810680d69 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 71eb45dbafd..c611dbc3d20 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 1e1cc91bc52..e751db7fb46 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 24dfe87c63d..f49c2c01b37 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index e240c25cb46..0e5880626c3 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 03c6a5b8d8f..21a7247620e 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index e99e8c7606b..c9e4deb0aac 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index bfed2a7bfec..904b617010a 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index ae9365d5448..3430052c798 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index f9837f69e25..5582f9cfd53 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-08-31 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index e982694d126..98954f3e971 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index b94f350449a..7a9da2b0a02 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index ca4e1438978..7c5b60dc1a3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index fef4cafa48d..0a3b30eab24 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 8382900c307..e5176a346f7 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 0637f728a08..198bccd8143 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 816cdf83c0b..8ef5f6a3cee 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 6f62ec62786..4ed3b96720b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 3982f010208..34ec70ec784 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 313cf0df796..d12fbfa375a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 189a5ab62ea..c334170020b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 0784b20594c..f9c91a6177f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 258189685ef..d9afbca66d7 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 3726c1e0a3a..5698145ea79 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 80ac433566b..36018f0560f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 32dfa804648..c6143f58c4d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 4070484d219..10e74c335a6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-08-31 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From 48889d0218db3d0c3779fa15ee956e4d72d2e350 Mon Sep 17 00:00:00 2001 From: pfurio Date: Fri, 1 Sep 2023 10:43:15 +0200 Subject: [PATCH 127/354] app: generate cli automatically, #TASK-4248 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisClinicalCommandOptions.java | 16 ++-- .../main/options/CohortsCommandOptions.java | 10 +-- .../options/DiseasePanelsCommandOptions.java | 32 ++++---- .../main/options/FamiliesCommandOptions.java | 16 ++-- .../cli/main/options/FilesCommandOptions.java | 20 ++--- .../options/IndividualsCommandOptions.java | 28 +++---- .../cli/main/options/JobsCommandOptions.java | 8 +- .../main/options/SamplesCommandOptions.java | 8 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 20 ++--- .../src/main/R/R/Clinical-methods.R | 20 ++--- opencga-client/src/main/R/R/Cohort-methods.R | 14 ++-- opencga-client/src/main/R/R/Family-methods.R | 20 ++--- opencga-client/src/main/R/R/File-methods.R | 24 +++--- opencga-client/src/main/R/R/GA4GH-methods.R | 4 +- .../src/main/R/R/Individual-methods.R | 32 ++++---- opencga-client/src/main/R/R/Job-methods.R | 14 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 34 ++++----- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 12 +-- opencga-client/src/main/R/R/Study-methods.R | 4 +- opencga-client/src/main/R/R/User-methods.R | 4 +- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 26 ++++--- .../client/rest/clients/CohortClient.java | 17 +++-- .../rest/clients/DiseasePanelClient.java | 54 ++++++++----- .../client/rest/clients/FamilyClient.java | 26 ++++--- .../client/rest/clients/FileClient.java | 32 +++++--- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 44 +++++++---- .../client/rest/clients/JobClient.java | 17 +++-- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 14 ++-- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 26 ++++--- opencga-client/src/main/javascript/Cohort.js | 17 +++-- .../src/main/javascript/DiseasePanel.js | 54 ++++++++----- opencga-client/src/main/javascript/Family.js | 26 ++++--- opencga-client/src/main/javascript/File.js | 32 +++++--- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 44 +++++++---- opencga-client/src/main/javascript/Job.js | 17 +++-- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 14 ++-- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 38 +++++++--- .../pyopencga/rest_clients/cohort_client.py | 21 +++-- .../rest_clients/disease_panel_client.py | 76 +++++++++++++++---- .../pyopencga/rest_clients/family_client.py | 28 ++++++- .../pyopencga/rest_clients/file_client.py | 48 +++++++++--- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 60 ++++++++++++--- .../pyopencga/rest_clients/job_client.py | 23 +++++- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 14 +++- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- .../opencga/core/api/ParamConstants.java | 14 ++-- 80 files changed, 765 insertions(+), 427 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 6627d4d82f1..07cb922d522 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-08-30 OpenCB +* Copyright 2015-2023-09-01 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index b619c612c32..4e3e7ed1c1f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-08-30 OpenCB +* Copyright 2015-2023-09-01 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java index 48261ca8a3c..95636ad4c3f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java @@ -275,7 +275,7 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of Clinical Analysis IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of Clinical Analysis UUIDs up to a maximum of 100", required = false, arity = 1) @@ -284,7 +284,7 @@ public class DistinctCommandOptions { @Parameter(names = {"--type"}, description = "Clinical Analysis type", required = false, arity = 1) public String type; - @Parameter(names = {"--disorder"}, description = "Clinical Analysis disorder", required = false, arity = 1) + @Parameter(names = {"--disorder"}, description = "Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorder; @Parameter(names = {"--files"}, description = "Clinical Analysis files", required = false, arity = 1) @@ -364,7 +364,7 @@ public class DistinctInterpretationCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of Interpretation IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of Interpretation UUIDs up to a maximum of 100", required = false, arity = 1) @@ -376,7 +376,7 @@ public class DistinctInterpretationCommandOptions { @Parameter(names = {"--analyst-id"}, description = "Analyst ID", required = false, arity = 1) public String analystId; - @Parameter(names = {"--method-name"}, description = "Interpretation method name", required = false, arity = 1) + @Parameter(names = {"--method-name"}, description = "Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String methodName; @Parameter(names = {"--panels"}, description = "Interpretation panels", required = false, arity = 1) @@ -432,7 +432,7 @@ public class SearchInterpretationCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of Interpretation IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of Interpretation UUIDs up to a maximum of 100", required = false, arity = 1) @@ -444,7 +444,7 @@ public class SearchInterpretationCommandOptions { @Parameter(names = {"--analyst-id"}, description = "Analyst ID", required = false, arity = 1) public String analystId; - @Parameter(names = {"--method-name"}, description = "Interpretation method name", required = false, arity = 1) + @Parameter(names = {"--method-name"}, description = "Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String methodName; @Parameter(names = {"--panels"}, description = "Interpretation panels", required = false, arity = 1) @@ -1488,7 +1488,7 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of Clinical Analysis IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of Clinical Analysis UUIDs up to a maximum of 100", required = false, arity = 1) @@ -1497,7 +1497,7 @@ public class SearchCommandOptions { @Parameter(names = {"--type"}, description = "Clinical Analysis type", required = false, arity = 1) public String type; - @Parameter(names = {"--disorder"}, description = "Clinical Analysis disorder", required = false, arity = 1) + @Parameter(names = {"--disorder"}, description = "Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorder; @Parameter(names = {"--files"}, description = "Clinical Analysis files", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/CohortsCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/CohortsCommandOptions.java index 13373914df4..03f08e58c9e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/CohortsCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/CohortsCommandOptions.java @@ -242,10 +242,10 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of cohort IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of cohort names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--uuid"}, description = "Comma separated list of cohort IDs up to a maximum of 100", required = false, arity = 1) @@ -334,7 +334,7 @@ public class GenerateCommandOptions { @Parameter(names = {"--status"}, description = "Filter by status", required = false, arity = 1) public String status; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; @Parameter(names = {"--annotation"}, description = "Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0", required = false, arity = 1) @@ -411,10 +411,10 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of cohort IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of cohort names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--uuid"}, description = "Comma separated list of cohort IDs up to a maximum of 100", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/DiseasePanelsCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/DiseasePanelsCommandOptions.java index c6e353a7dca..1f0f1cbb9bc 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/DiseasePanelsCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/DiseasePanelsCommandOptions.java @@ -157,37 +157,37 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of panel IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of panel UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of panel names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--internal-status"}, description = "Filter by internal status", required = false, arity = 1) public String internalStatus; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; - @Parameter(names = {"--variants"}, description = "Comma separated list of variant ids", required = false, arity = 1) + @Parameter(names = {"--variants"}, description = "Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String variants; - @Parameter(names = {"--genes"}, description = "Comma separated list of gene ids", required = false, arity = 1) + @Parameter(names = {"--genes"}, description = "Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String genes; @Parameter(names = {"--source"}, description = "Comma separated list of source ids or names.", required = false, arity = 1) public String source; - @Parameter(names = {"--regions"}, description = "Comma separated list of regions", required = false, arity = 1) + @Parameter(names = {"--regions"}, description = "Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String regions; - @Parameter(names = {"--categories"}, description = "Comma separated list of category names", required = false, arity = 1) + @Parameter(names = {"--categories"}, description = "Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String categories; - @Parameter(names = {"--tags"}, description = "Panel tags", required = false, arity = 1) + @Parameter(names = {"--tags"}, description = "Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String tags; @Parameter(names = {"--deleted"}, description = "Boolean to retrieve deleted entries", required = false, help = true, arity = 0) @@ -275,37 +275,37 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of panel IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of panel UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of panel names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--internal-status"}, description = "Filter by internal status", required = false, arity = 1) public String internalStatus; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; - @Parameter(names = {"--variants"}, description = "Comma separated list of variant ids", required = false, arity = 1) + @Parameter(names = {"--variants"}, description = "Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String variants; - @Parameter(names = {"--genes"}, description = "Comma separated list of gene ids", required = false, arity = 1) + @Parameter(names = {"--genes"}, description = "Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String genes; @Parameter(names = {"--source"}, description = "Comma separated list of source ids or names.", required = false, arity = 1) public String source; - @Parameter(names = {"--regions"}, description = "Comma separated list of regions", required = false, arity = 1) + @Parameter(names = {"--regions"}, description = "Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String regions; - @Parameter(names = {"--categories"}, description = "Comma separated list of category names", required = false, arity = 1) + @Parameter(names = {"--categories"}, description = "Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String categories; - @Parameter(names = {"--tags"}, description = "Panel tags", required = false, arity = 1) + @Parameter(names = {"--tags"}, description = "Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String tags; @Parameter(names = {"--deleted"}, description = "Boolean to retrieve deleted entries", required = false, help = true, arity = 0) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FamiliesCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FamiliesCommandOptions.java index 9530f60074d..3c57ef335ba 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FamiliesCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FamiliesCommandOptions.java @@ -252,10 +252,10 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list family IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list family names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--uuid"}, description = "Comma separated list family UUIDs up to a maximum of 100", required = false, arity = 1) @@ -270,10 +270,10 @@ public class DistinctCommandOptions { @Parameter(names = {"--samples"}, description = "Comma separated list of member's samples", required = false, arity = 1) public String samples; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; @Parameter(names = {"--creation-date", "--cd"}, description = "Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805", required = false, arity = 1) @@ -335,10 +335,10 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list family IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list family names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--uuid"}, description = "Comma separated list family UUIDs up to a maximum of 100", required = false, arity = 1) @@ -353,10 +353,10 @@ public class SearchCommandOptions { @Parameter(names = {"--samples"}, description = "Comma separated list of member's samples", required = false, arity = 1) public String samples; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; @Parameter(names = {"--creation-date", "--cd"}, description = "Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FilesCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FilesCommandOptions.java index d1d4e0bf0a8..5ea18955f58 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FilesCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/FilesCommandOptions.java @@ -327,19 +327,19 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of file IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list file UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of file names", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; - @Parameter(names = {"--path"}, description = "Comma separated list of paths", required = false, arity = 1) + @Parameter(names = {"--path"}, description = "Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String path; - @Parameter(names = {"--uri", "--input", "-i"}, description = "Comma separated list of uris", required = false, arity = 1) + @Parameter(names = {"--uri", "--input", "-i"}, description = "Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String uri; @Parameter(names = {"--type"}, description = "File type, either FILE or DIRECTORY", required = false, arity = 1) @@ -378,7 +378,7 @@ public class DistinctCommandOptions { @Parameter(names = {"--description"}, description = "Description", required = false, arity = 1) public String description; - @Parameter(names = {"--tags"}, description = "Tags", required = false, arity = 1) + @Parameter(names = {"--tags"}, description = "Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String tags; @Parameter(names = {"--size"}, description = "File size", required = false, arity = 1) @@ -609,19 +609,19 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list of file IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list file UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list of file names", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; - @Parameter(names = {"--path"}, description = "Comma separated list of paths", required = false, arity = 1) + @Parameter(names = {"--path"}, description = "Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String path; - @Parameter(names = {"--uri", "--input", "-i"}, description = "Comma separated list of uris", required = false, arity = 1) + @Parameter(names = {"--uri", "--input", "-i"}, description = "Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String uri; @Parameter(names = {"--type"}, description = "File type, either FILE or DIRECTORY", required = false, arity = 1) @@ -660,7 +660,7 @@ public class SearchCommandOptions { @Parameter(names = {"--description"}, description = "Description", required = false, arity = 1) public String description; - @Parameter(names = {"--tags"}, description = "Tags", required = false, arity = 1) + @Parameter(names = {"--tags"}, description = "Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String tags; @Parameter(names = {"--size"}, description = "File size", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/IndividualsCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/IndividualsCommandOptions.java index a9e20c70232..d0238597f52 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/IndividualsCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/IndividualsCommandOptions.java @@ -350,13 +350,13 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list individual IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list individual UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list individual names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--family-ids"}, description = "Comma separated list of family ids the individuals may belong to.", required = false, arity = 1) @@ -374,22 +374,22 @@ public class DistinctCommandOptions { @Parameter(names = {"--sex"}, description = "Individual sex", required = false, arity = 1) public String sex; - @Parameter(names = {"--ethnicity"}, description = "Individual ethnicity", required = false, arity = 1) + @Parameter(names = {"--ethnicity"}, description = "Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String ethnicity; @Parameter(names = {"--date-of-birth"}, description = "Individual date of birth", required = false, arity = 1) public String dateOfBirth; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; - @Parameter(names = {"--population-name"}, description = "Population name", required = false, arity = 1) + @Parameter(names = {"--population-name"}, description = "Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String populationName; - @Parameter(names = {"--population-subpopulation"}, description = "Subpopulation name", required = false, arity = 1) + @Parameter(names = {"--population-subpopulation"}, description = "Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String populationSubpopulation; @Parameter(names = {"--karyotypic-sex"}, description = "Individual karyotypic sex", required = false, arity = 1) @@ -457,13 +457,13 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list individual IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list individual UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--name", "-n"}, description = "Comma separated list individual names up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--name", "-n"}, description = "Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String name; @Parameter(names = {"--father"}, description = "Father ID, name or UUID", required = false, arity = 1) @@ -484,19 +484,19 @@ public class SearchCommandOptions { @Parameter(names = {"--date-of-birth"}, description = "Individual date of birth", required = false, arity = 1) public String dateOfBirth; - @Parameter(names = {"--ethnicity"}, description = "Individual ethnicity", required = false, arity = 1) + @Parameter(names = {"--ethnicity"}, description = "Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String ethnicity; - @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names", required = false, arity = 1) + @Parameter(names = {"--disorders"}, description = "Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String disorders; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; - @Parameter(names = {"--population-name"}, description = "Population name", required = false, arity = 1) + @Parameter(names = {"--population-name"}, description = "Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String populationName; - @Parameter(names = {"--population-subpopulation"}, description = "Subpopulation name", required = false, arity = 1) + @Parameter(names = {"--population-subpopulation"}, description = "Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String populationSubpopulation; @Parameter(names = {"--karyotypic-sex"}, description = "Individual karyotypic sex", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/JobsCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/JobsCommandOptions.java index 44eac65bf28..04b6caae03c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/JobsCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/JobsCommandOptions.java @@ -241,13 +241,13 @@ public class DistinctCommandOptions { @Parameter(names = {"--other-studies"}, description = "Flag indicating the entries being queried can belong to any related study, not just the primary one.", required = false, help = true, arity = 0) public boolean otherStudies = false; - @Parameter(names = {"--id"}, description = "Comma separated list of job IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of job UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--tool-id"}, description = "Tool ID executed by the job", required = false, arity = 1) + @Parameter(names = {"--tool-id"}, description = "Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String toolId; @Parameter(names = {"--tool-type"}, description = "Tool type executed by the job [OPERATION, ANALYSIS]", required = false, arity = 1) @@ -362,13 +362,13 @@ public class SearchCommandOptions { @Parameter(names = {"--other-studies"}, description = "Flag indicating the entries being queried can belong to any related study, not just the primary one.", required = false, help = true, arity = 0) public boolean otherStudies = false; - @Parameter(names = {"--id"}, description = "Comma separated list of job IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list of job UUIDs up to a maximum of 100", required = false, arity = 1) public String uuid; - @Parameter(names = {"--tool-id"}, description = "Tool ID executed by the job", required = false, arity = 1) + @Parameter(names = {"--tool-id"}, description = "Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String toolId; @Parameter(names = {"--tool-type"}, description = "Tool type executed by the job [OPERATION, ANALYSIS]", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/SamplesCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/SamplesCommandOptions.java index 0099fbf2a90..8cfc8fed346 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/SamplesCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/SamplesCommandOptions.java @@ -305,7 +305,7 @@ public class DistinctCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list sample IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list sample UUIDs up to a maximum of 100", required = false, arity = 1) @@ -356,7 +356,7 @@ public class DistinctCommandOptions { @Parameter(names = {"--collection-method"}, description = "Collection method", required = false, arity = 1) public String collectionMethod; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; @Parameter(names = {"--annotation"}, description = "Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0", required = false, arity = 1) @@ -468,7 +468,7 @@ public class SearchCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--id"}, description = "Comma separated list sample IDs up to a maximum of 100", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String id; @Parameter(names = {"--uuid"}, description = "Comma separated list sample UUIDs up to a maximum of 100", required = false, arity = 1) @@ -519,7 +519,7 @@ public class SearchCommandOptions { @Parameter(names = {"--collection-method"}, description = "Collection method", required = false, arity = 1) public String collectionMethod; - @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names", required = false, arity = 1) + @Parameter(names = {"--phenotypes"}, description = "Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.", required = false, arity = 1) public String phenotypes; @Parameter(names = {"--annotation"}, description = "Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0", required = false, arity = 1) diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 5d46536451d..da576e61ed5 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 206b0aa2646..e8d0ded651f 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 8e9baedd284..64aa34c799c 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, variableSet, studies, members, group, study, templateId, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, members, folder, annotationSet, files, file, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, members, sample, samples, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, sample, samples, members, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, members, individuals, annotationSet, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, individual, individuals, annotationSet, members, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, families, family, annotationSet, members, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, cohorts, members, cohort, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretation, members, interpretations, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index f0652ba64dd..ae64c192aeb 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, members, interpretations, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: @@ -94,10 +94,10 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, memb #' @section Endpoint /{apiVersion}/analysis/clinical/distinct: #' Clinical Analysis distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of Clinical Analysis IDs up to a maximum of 100. + #' @param id Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. #' @param type Clinical Analysis type. - #' @param disorder Clinical Analysis disorder. + #' @param disorder Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param files Clinical Analysis files. #' @param sample Sample associated to the proband or any member of a family. #' @param individual Proband or any member of a family. @@ -126,11 +126,11 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, memb #' @section Endpoint /{apiVersion}/analysis/clinical/interpretation/distinct: #' Interpretation distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of Interpretation IDs up to a maximum of 100. + #' @param id Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of Interpretation UUIDs up to a maximum of 100. #' @param clinicalAnalysisId Clinical Analysis id. #' @param analystId Analyst ID. - #' @param methodName Interpretation method name. + #' @param methodName Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param panels Interpretation panels. #' @param primaryFindings Interpretation primary findings. #' @param secondaryFindings Interpretation secondary findings. @@ -152,11 +152,11 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, memb #' @param skip Number of results to skip. #' @param sort Sort the results. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of Interpretation IDs up to a maximum of 100. + #' @param id Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of Interpretation UUIDs up to a maximum of 100. #' @param clinicalAnalysisId Clinical Analysis id. #' @param analystId Analyst ID. - #' @param methodName Interpretation method name. + #' @param methodName Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param panels Interpretation panels. #' @param primaryFindings Interpretation primary findings. #' @param secondaryFindings Interpretation secondary findings. @@ -484,10 +484,10 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, memb #' @param skip Number of results to skip. #' @param count Get the total number of results matching the query. Deactivated by default. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of Clinical Analysis IDs up to a maximum of 100. + #' @param id Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. #' @param type Clinical Analysis type. - #' @param disorder Clinical Analysis disorder. + #' @param disorder Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param files Clinical Analysis files. #' @param sample Sample associated to the proband or any member of a family. #' @param individual Proband or any member of a family. diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 2bcb87bbbbc..3dbf84870e5 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, cohorts, members, cohort, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: @@ -97,8 +97,8 @@ setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, #' @section Endpoint /{apiVersion}/cohorts/distinct: #' Cohort distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of cohort IDs up to a maximum of 100. - #' @param name Comma separated list of cohort names up to a maximum of 100. + #' @param id Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param name Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of cohort IDs up to a maximum of 100. #' @param type Cohort type. #' @param creationDate creationDate. @@ -128,7 +128,7 @@ setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, #' @param modificationDate Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param internalStatus Filter by internal status. #' @param status Filter by status. - #' @param phenotypes Comma separated list of phenotype ids or names. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param annotation Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. #' @param acl Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which user john has both WRITE and WRITE_ANNOTATIONS permissions. Only study owners or administrators can query by this field. . #' @param release Release when it was created. @@ -147,8 +147,8 @@ setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, #' @param count Get the total number of results matching the query. Deactivated by default. #' @param flattenAnnotations Flatten the annotations?. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of cohort IDs up to a maximum of 100. - #' @param name Comma separated list of cohort names up to a maximum of 100. + #' @param id Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param name Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of cohort IDs up to a maximum of 100. #' @param type Cohort type. #' @param creationDate creationDate. diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 5993bbe8de9..c5d4cbc0485 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, annotationSet, families, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, families, family, annotationSet, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: @@ -98,14 +98,14 @@ setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, annota #' @section Endpoint /{apiVersion}/families/distinct: #' Family distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list family IDs up to a maximum of 100. - #' @param name Comma separated list family names up to a maximum of 100. + #' @param id Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param name Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list family UUIDs up to a maximum of 100. #' @param members Comma separated list of family members. #' @param expectedSize Expected size of the family (number of members). #' @param samples Comma separated list of member's samples. - #' @param phenotypes Comma separated list of phenotype ids or names. - #' @param disorders Comma separated list of disorder ids or names. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param modificationDate Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param deleted Boolean to retrieve deleted entries. @@ -128,14 +128,14 @@ setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, annota #' @param count Get the total number of results matching the query. Deactivated by default. #' @param flattenAnnotations Flatten the annotations?. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list family IDs up to a maximum of 100. - #' @param name Comma separated list family names up to a maximum of 100. + #' @param id Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param name Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list family UUIDs up to a maximum of 100. #' @param members Comma separated list of family members. #' @param expectedSize Expected size of the family (number of members). #' @param samples Comma separated list of member's samples. - #' @param phenotypes Comma separated list of phenotype ids or names. - #' @param disorders Comma separated list of disorder ids or names. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param modificationDate Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param deleted Boolean to retrieve deleted entries. diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 0ef0d2c83d8..3145654d92d 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, annotationSet, folder, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, members, folder, annotationSet, files, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: @@ -122,11 +122,11 @@ setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, ann #' @section Endpoint /{apiVersion}/files/distinct: #' File distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of file IDs up to a maximum of 100. + #' @param id Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list file UUIDs up to a maximum of 100. - #' @param name Comma separated list of file names. - #' @param path Comma separated list of paths. - #' @param uri Comma separated list of uris. + #' @param name Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param path Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param uri Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param type File type, either FILE or DIRECTORY. #' @param bioformat Comma separated Bioformat values. For existing Bioformats see files/bioformats. #' @param format Comma separated Format values. For existing Formats see files/formats. @@ -139,7 +139,7 @@ setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, ann #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param modificationDate Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param description Description. - #' @param tags Tags. + #' @param tags Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param size File size. #' @param sampleIds Comma separated list sample IDs or UUIDs up to a maximum of 100. #' @param jobId Job ID that created the file(s) or folder(s). @@ -207,11 +207,11 @@ setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, ann #' @param count Get the total number of results matching the query. Deactivated by default. #' @param flattenAnnotations Boolean indicating to flatten the annotations. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of file IDs up to a maximum of 100. + #' @param id Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list file UUIDs up to a maximum of 100. - #' @param name Comma separated list of file names. - #' @param path Comma separated list of paths. - #' @param uri Comma separated list of uris. + #' @param name Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param path Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param uri Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param type File type, either FILE or DIRECTORY. #' @param bioformat Comma separated Bioformat values. For existing Bioformats see files/bioformats. #' @param format Comma separated Format values. For existing Formats see files/formats. @@ -224,7 +224,7 @@ setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, file, ann #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param modificationDate Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. #' @param description Description. - #' @param tags Tags. + #' @param tags Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param size File size. #' @param sampleIds Comma separated list sample IDs or UUIDs up to a maximum of 100. #' @param jobId Job ID that created the file(s) or folder(s). diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 534e75260ad..7ec25d1cb31 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 019acd410c2..fa208ff5bf2 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individuals, annotationSet, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, individuals, annotationSet, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: @@ -106,20 +106,20 @@ setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individual #' @section Endpoint /{apiVersion}/individuals/distinct: #' Individual distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list individual IDs up to a maximum of 100. + #' @param id Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list individual UUIDs up to a maximum of 100. - #' @param name Comma separated list individual names up to a maximum of 100. + #' @param name Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param familyIds Comma separated list of family ids the individuals may belong to. #' @param father Father ID, name or UUID. #' @param mother Mother ID, name or UUID. #' @param samples Sample ID, name or UUID. #' @param sex Individual sex. - #' @param ethnicity Individual ethnicity. + #' @param ethnicity Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param dateOfBirth Individual date of birth. - #' @param disorders Comma separated list of disorder ids or names. - #' @param phenotypes Comma separated list of phenotype ids or names. - #' @param populationName Population name. - #' @param populationSubpopulation Subpopulation name. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param populationName Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param populationSubpopulation Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param karyotypicSex Individual karyotypic sex. #' @param lifeStatus Individual life status. #' @param internalStatus Filter by internal status. @@ -144,20 +144,20 @@ setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individual #' @param count Get the total number of results matching the query. Deactivated by default. #' @param flattenAnnotations Flatten the annotations?. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list individual IDs up to a maximum of 100. + #' @param id Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list individual UUIDs up to a maximum of 100. - #' @param name Comma separated list individual names up to a maximum of 100. + #' @param name Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param father Father ID, name or UUID. #' @param mother Mother ID, name or UUID. #' @param samples Sample ID, name or UUID. #' @param familyIds Comma separated list of family ids the individuals may belong to. #' @param sex Individual sex. #' @param dateOfBirth Individual date of birth. - #' @param ethnicity Individual ethnicity. - #' @param disorders Comma separated list of disorder ids or names. - #' @param phenotypes Comma separated list of phenotype ids or names. - #' @param populationName Population name. - #' @param populationSubpopulation Subpopulation name. + #' @param ethnicity Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param populationName Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param populationSubpopulation Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param karyotypicSex Individual karyotypic sex. #' @param lifeStatus Individual life status. #' @param internalStatus Filter by internal status. diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index f85fe4840f7..00c06ed1483 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: @@ -87,9 +87,9 @@ setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpoi #' Job distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. #' @param otherStudies Flag indicating the entries being queried can belong to any related study, not just the primary one. - #' @param id Comma separated list of job IDs up to a maximum of 100. + #' @param id Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of job UUIDs up to a maximum of 100. - #' @param toolId Tool ID executed by the job. + #' @param toolId Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param toolType Tool type executed by the job [OPERATION, ANALYSIS]. #' @param userId User that created the job. #' @param priority Priority of the job. @@ -128,9 +128,9 @@ setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpoi #' @param count Get the total number of results matching the query. Deactivated by default. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. #' @param otherStudies Flag indicating the entries being queried can belong to any related study, not just the primary one. - #' @param id Comma separated list of job IDs up to a maximum of 100. + #' @param id Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of job UUIDs up to a maximum of 100. - #' @param toolId Tool ID executed by the job. + #' @param toolId Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param toolType Tool type executed by the job [OPERATION, ANALYSIS]. #' @param userId User that created the job. #' @param priority Priority of the job. @@ -155,7 +155,7 @@ setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpoi #' @param internalStatus Filter by internal status. #' @param priority Priority of the job. #' @param userId User that created the job. - #' @param toolId Tool ID executed by the job. + #' @param toolId Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. top=fetchOpenCGA(object=OpencgaR, category="jobs", categoryId=NULL, subcategory=NULL, subcategoryId=NULL, action="top", params=params, httpMethod="GET", as.queryParam=NULL, ...), diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index d4de1c866b8..360a9dacb50 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 902a0403f47..f95d93bc801 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index e7d661d3a2c..fe01d294f0b 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -62,17 +62,17 @@ setMethod("panelClient", "OpencgaR", function(OpencgaR, members, panels, endpoin #' @section Endpoint /{apiVersion}/panels/distinct: #' Panel distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of panel IDs up to a maximum of 100. + #' @param id Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of panel UUIDs up to a maximum of 100. - #' @param name Comma separated list of panel names up to a maximum of 100. + #' @param name Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param internalStatus Filter by internal status. - #' @param disorders Comma separated list of disorder ids or names. - #' @param variants Comma separated list of variant ids. - #' @param genes Comma separated list of gene ids. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param variants Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param genes Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param source Comma separated list of source ids or names. - #' @param regions Comma separated list of regions. - #' @param categories Comma separated list of category names. - #' @param tags Panel tags. + #' @param regions Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param categories Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param tags Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param deleted Boolean to retrieve deleted entries. #' @param status Filter by status. #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. @@ -103,17 +103,17 @@ setMethod("panelClient", "OpencgaR", function(OpencgaR, members, panels, endpoin #' @param skip Number of results to skip. #' @param count Get the total number of results matching the query. Deactivated by default. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list of panel IDs up to a maximum of 100. + #' @param id Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list of panel UUIDs up to a maximum of 100. - #' @param name Comma separated list of panel names up to a maximum of 100. + #' @param name Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param internalStatus Filter by internal status. - #' @param disorders Comma separated list of disorder ids or names. - #' @param variants Comma separated list of variant ids. - #' @param genes Comma separated list of gene ids. + #' @param disorders Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param variants Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param genes Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param source Comma separated list of source ids or names. - #' @param regions Comma separated list of regions. - #' @param categories Comma separated list of category names. - #' @param tags Panel tags. + #' @param regions Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param categories Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + #' @param tags Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param deleted Boolean to retrieve deleted entries. #' @param status Filter by status. #' @param creationDate Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index b4ab8a5b98e..d9cb522a4e2 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 89b2d7b5876..8a8d00d9796 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, samples, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, sample, samples, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: @@ -98,7 +98,7 @@ setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, sample #' @section Endpoint /{apiVersion}/samples/distinct: #' Sample distinct method. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list sample IDs up to a maximum of 100. + #' @param id Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list sample UUIDs up to a maximum of 100. #' @param somatic Somatic sample. #' @param individualId Individual ID or UUID. @@ -115,7 +115,7 @@ setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, sample #' @param collectionFrom Collection from. #' @param collectionType Collection type. #' @param collectionMethod Collection method. - #' @param phenotypes Comma separated list of phenotype ids or names. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param annotation Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. #' @param acl Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which user john has both WRITE and WRITE_ANNOTATIONS permissions. Only study owners or administrators can query by this field. . #' @param internalRgaStatus Index status of the sample for the Recessive Gene Analysis. Allowed values: ['NOT_INDEXED INDEXED INVALID_PERMISSIONS INVALID_METADATA INVALID'] @@ -157,7 +157,7 @@ setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, sample #' @param includeIndividual Include Individual object as an attribute. #' @param flattenAnnotations Flatten the annotations?. #' @param study Study [[user@]project:]study where study and project can be either the ID or UUID. - #' @param id Comma separated list sample IDs up to a maximum of 100. + #' @param id Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param uuid Comma separated list sample UUIDs up to a maximum of 100. #' @param somatic Somatic sample. #' @param individualId Individual ID or UUID. @@ -174,7 +174,7 @@ setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, sample, sample #' @param collectionFrom Collection from. #' @param collectionType Collection type. #' @param collectionMethod Collection method. - #' @param phenotypes Comma separated list of phenotype ids or names. + #' @param phenotypes Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. #' @param annotation Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. #' @param acl Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: acl=john:WRITE,WRITE_ANNOTATIONS will return all entries for which user john has both WRITE and WRITE_ANNOTATIONS permissions. Only study owners or administrators can query by this field. . #' @param internalRgaStatus Index status of the sample for the Recessive Gene Analysis. Allowed values: ['NOT_INDEXED INDEXED INVALID_PERMISSIONS INVALID_METADATA INVALID'] diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 754fa677dea..84227b71b68 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, members, variableSet, studies, group, study, templateId, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, variableSet, studies, members, group, study, templateId, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 7fb54a32ff1..51b6157fe7a 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 0b7a706cb8f..6d17848726b 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-08-30 +# Autogenerated on: 2023-09-01 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 2a375bb7b83..df137812b2f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 08257cc1a1a..759e68f1b90 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 32ab712003e..22eeeca0ccd 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -127,10 +127,12 @@ public RestResponse create(ClinicalAnalysisCreateParams data, * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. + * id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. * type: Clinical Analysis type. - * disorder: Clinical Analysis disorder. + * disorder: Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * files: Clinical Analysis files. * sample: Sample associated to the proband or any member of a family. * individual: Proband or any member of a family. @@ -166,11 +168,13 @@ public RestResponse distinct(String field, ObjectMap params) throws C * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of Interpretation IDs up to a maximum of 100. + * id: Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100. * clinicalAnalysisId: Clinical Analysis id. * analystId: Analyst ID. - * methodName: Interpretation method name. + * methodName: Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * panels: Interpretation panels. * primaryFindings: Interpretation primary findings. * secondaryFindings: Interpretation secondary findings. @@ -197,11 +201,13 @@ public RestResponse distinctInterpretation(String field, ObjectMap pa * skip: Number of results to skip. * sort: Sort the results. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of Interpretation IDs up to a maximum of 100. + * id: Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100. * clinicalAnalysisId: Clinical Analysis id. * analystId: Analyst ID. - * methodName: Interpretation method name. + * methodName: Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * panels: Interpretation panels. * primaryFindings: Interpretation primary findings. * secondaryFindings: Interpretation secondary findings. @@ -614,10 +620,12 @@ public RestResponse summaryRgaVariant(ObjectMap params * skip: Number of results to skip. * count: Get the total number of results matching the query. Deactivated by default. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. + * id: Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. * type: Clinical Analysis type. - * disorder: Clinical Analysis disorder. + * disorder: Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * files: Clinical Analysis files. * sample: Sample associated to the proband or any member of a family. * individual: Proband or any member of a family. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 547601b9329..4afa30f7993 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -144,8 +144,10 @@ public RestResponse create(CohortCreateParams data, ObjectMap params) th * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of cohort IDs up to a maximum of 100. - * name: Comma separated list of cohort names up to a maximum of 100. + * id: Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * name: Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of cohort IDs up to a maximum of 100. * type: Cohort type. * creationDate: creationDate. @@ -182,7 +184,8 @@ public RestResponse distinct(String field, ObjectMap params) throws Clie * modificationDate: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * internalStatus: Filter by internal status. * status: Filter by status. - * phenotypes: Comma separated list of phenotype ids or names. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * acl: Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: @@ -210,8 +213,10 @@ public RestResponse generate(CohortGenerateParams data, ObjectMap params * count: Get the total number of results matching the query. Deactivated by default. * flattenAnnotations: Flatten the annotations?. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of cohort IDs up to a maximum of 100. - * name: Comma separated list of cohort names up to a maximum of 100. + * id: Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * name: Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of cohort IDs up to a maximum of 100. * type: Cohort type. * creationDate: creationDate. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index ad5ea1a7047..ec146dbae49 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -93,17 +93,27 @@ public RestResponse create(PanelCreateParams data, ObjectMap params) thro * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of panel IDs up to a maximum of 100. + * id: Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of panel UUIDs up to a maximum of 100. - * name: Comma separated list of panel names up to a maximum of 100. + * name: Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * internalStatus: Filter by internal status. - * disorders: Comma separated list of disorder ids or names. - * variants: Comma separated list of variant ids. - * genes: Comma separated list of gene ids. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular + * expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case + * insensitive search. + * variants: Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * genes: Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * source: Comma separated list of source ids or names. - * regions: Comma separated list of regions. - * categories: Comma separated list of category names. - * tags: Panel tags. + * regions: Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * categories: Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * tags: Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + * sensitive, '~/value/i' for case insensitive search. * deleted: Boolean to retrieve deleted entries. * status: Filter by status. * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. @@ -149,17 +159,27 @@ public RestResponse importPanels(PanelImportParams data, ObjectMap params) * skip: Number of results to skip. * count: Get the total number of results matching the query. Deactivated by default. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of panel IDs up to a maximum of 100. + * id: Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of panel UUIDs up to a maximum of 100. - * name: Comma separated list of panel names up to a maximum of 100. + * name: Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * internalStatus: Filter by internal status. - * disorders: Comma separated list of disorder ids or names. - * variants: Comma separated list of variant ids. - * genes: Comma separated list of gene ids. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic regular + * expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case + * insensitive search. + * variants: Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * genes: Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * source: Comma separated list of source ids or names. - * regions: Comma separated list of regions. - * categories: Comma separated list of category names. - * tags: Panel tags. + * regions: Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * categories: Comma separated list of category names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * tags: Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + * sensitive, '~/value/i' for case insensitive search. * deleted: Boolean to retrieve deleted entries. * status: Filter by status. * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index d113cbdaf09..cbd554fe8d4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -145,14 +145,18 @@ public RestResponse create(FamilyCreateParams data, ObjectMap params) th * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list family IDs up to a maximum of 100. - * name: Comma separated list family names up to a maximum of 100. + * id: Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * name: Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list family UUIDs up to a maximum of 100. * members: Comma separated list of family members. * expectedSize: Expected size of the family (number of members). * samples: Comma separated list of member's samples. - * phenotypes: Comma separated list of phenotype ids or names. - * disorders: Comma separated list of disorder ids or names. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * modificationDate: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * deleted: Boolean to retrieve deleted entries. @@ -184,14 +188,18 @@ public RestResponse distinct(String field, ObjectMap params) throws Clie * count: Get the total number of results matching the query. Deactivated by default. * flattenAnnotations: Flatten the annotations?. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list family IDs up to a maximum of 100. - * name: Comma separated list family names up to a maximum of 100. + * id: Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * name: Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list family UUIDs up to a maximum of 100. * members: Comma separated list of family members. * expectedSize: Expected size of the family (number of members). * samples: Comma separated list of member's samples. - * phenotypes: Comma separated list of phenotype ids or names. - * disorders: Comma separated list of disorder ids or names. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * modificationDate: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * deleted: Boolean to retrieve deleted entries. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 72be6ed305b..fc31ad2bec2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -164,11 +164,15 @@ public RestResponse create(FileCreateParams data, ObjectMap params) throws * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of file IDs up to a maximum of 100. + * id: Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list file UUIDs up to a maximum of 100. - * name: Comma separated list of file names. - * path: Comma separated list of paths. - * uri: Comma separated list of uris. + * name: Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * path: Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. + * uri: Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * type: File type, either FILE or DIRECTORY. * bioformat: Comma separated Bioformat values. For existing Bioformats see files/bioformats. * format: Comma separated Format values. For existing Formats see files/formats. @@ -181,7 +185,8 @@ public RestResponse create(FileCreateParams data, ObjectMap params) throws * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * modificationDate: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * description: Description. - * tags: Tags. + * tags: Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + * sensitive, '~/value/i' for case insensitive search. * size: File size. * sampleIds: Comma separated list sample IDs or UUIDs up to a maximum of 100. * jobId: Job ID that created the file(s) or folder(s). @@ -290,11 +295,15 @@ public RestResponse runPostlink(PostLinkToolParams data, ObjectMap params) * count: Get the total number of results matching the query. Deactivated by default. * flattenAnnotations: Boolean indicating to flatten the annotations. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list of file IDs up to a maximum of 100. + * id: Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list file UUIDs up to a maximum of 100. - * name: Comma separated list of file names. - * path: Comma separated list of paths. - * uri: Comma separated list of uris. + * name: Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' + * e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * path: Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. + * uri: Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * type: File type, either FILE or DIRECTORY. * bioformat: Comma separated Bioformat values. For existing Bioformats see files/bioformats. * format: Comma separated Format values. For existing Formats see files/formats. @@ -307,7 +316,8 @@ public RestResponse runPostlink(PostLinkToolParams data, ObjectMap params) * creationDate: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * modificationDate: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * description: Description. - * tags: Tags. + * tags: Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + * sensitive, '~/value/i' for case insensitive search. * size: File size. * sampleIds: Comma separated list sample IDs or UUIDs up to a maximum of 100. * jobId: Job ID that created the file(s) or folder(s). diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index fbb84f972a4..b0afdac763a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 5803d125e54..27a9af45ed5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -153,20 +153,27 @@ public RestResponse create(IndividualCreateParams data, ObjectMap pa * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list individual IDs up to a maximum of 100. + * id: Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list individual UUIDs up to a maximum of 100. - * name: Comma separated list individual names up to a maximum of 100. + * name: Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * familyIds: Comma separated list of family ids the individuals may belong to. * father: Father ID, name or UUID. * mother: Mother ID, name or UUID. * samples: Sample ID, name or UUID. * sex: Individual sex. - * ethnicity: Individual ethnicity. + * ethnicity: Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * dateOfBirth: Individual date of birth. - * disorders: Comma separated list of disorder ids or names. - * phenotypes: Comma separated list of phenotype ids or names. - * populationName: Population name. - * populationSubpopulation: Subpopulation name. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * populationName: Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. + * populationSubpopulation: Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * karyotypicSex: Individual karyotypic sex. * lifeStatus: Individual life status. * internalStatus: Filter by internal status. @@ -200,20 +207,27 @@ public RestResponse distinct(String field, ObjectMap params) throws Clie * count: Get the total number of results matching the query. Deactivated by default. * flattenAnnotations: Flatten the annotations?. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list individual IDs up to a maximum of 100. + * id: Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list individual UUIDs up to a maximum of 100. - * name: Comma separated list individual names up to a maximum of 100. + * name: Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * father: Father ID, name or UUID. * mother: Mother ID, name or UUID. * samples: Sample ID, name or UUID. * familyIds: Comma separated list of family ids the individuals may belong to. * sex: Individual sex. * dateOfBirth: Individual date of birth. - * ethnicity: Individual ethnicity. - * disorders: Comma separated list of disorder ids or names. - * phenotypes: Comma separated list of phenotype ids or names. - * populationName: Population name. - * populationSubpopulation: Subpopulation name. + * ethnicity: Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. + * disorders: Comma separated list of disorder ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * populationName: Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. + * populationSubpopulation: Subpopulation name. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * karyotypicSex: Individual karyotypic sex. * lifeStatus: Individual life status. * internalStatus: Filter by internal status. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 27245d4011c..f880ed1d600 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -120,9 +120,11 @@ public RestResponse create(JobCreateParams data, ObjectMap params) throws C * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. * otherStudies: Flag indicating the entries being queried can belong to any related study, not just the primary one. - * id: Comma separated list of job IDs up to a maximum of 100. + * id: Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of job UUIDs up to a maximum of 100. - * toolId: Tool ID executed by the job. + * toolId: Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * toolType: Tool type executed by the job [OPERATION, ANALYSIS]. * userId: User that created the job. * priority: Priority of the job. @@ -176,9 +178,11 @@ public RestResponse retry(JobRetryParams data, ObjectMap params) throws Cli * count: Get the total number of results matching the query. Deactivated by default. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. * otherStudies: Flag indicating the entries being queried can belong to any related study, not just the primary one. - * id: Comma separated list of job IDs up to a maximum of 100. + * id: Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list of job UUIDs up to a maximum of 100. - * toolId: Tool ID executed by the job. + * toolId: Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * toolType: Tool type executed by the job [OPERATION, ANALYSIS]. * userId: User that created the job. * priority: Priority of the job. @@ -211,7 +215,8 @@ public RestResponse search(ObjectMap params) throws ClientException { * internalStatus: Filter by internal status. * priority: Priority of the job. * userId: User that created the job. - * toolId: Tool ID executed by the job. + * toolId: Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * @return a RestResponse object. * @throws ClientException ClientException if there is any server error. */ diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index c2c015b670d..15ca508dc41 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 47aeec33622..fb3f13b0077 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index d2dd71bc2f3..5399ebea102 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -145,7 +145,8 @@ public RestResponse create(SampleCreateParams data, ObjectMap params) th * @param field Comma separated list of fields for which to obtain the distinct values. * @param params Map containing any of the following optional parameters. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list sample IDs up to a maximum of 100. + * id: Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list sample UUIDs up to a maximum of 100. * somatic: Somatic sample. * individualId: Individual ID or UUID. @@ -162,7 +163,8 @@ public RestResponse create(SampleCreateParams data, ObjectMap params) th * collectionFrom: Collection from. * collectionType: Collection type. * collectionMethod: Collection method. - * phenotypes: Comma separated list of phenotype ids or names. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * acl: Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: @@ -221,7 +223,8 @@ public RestResponse load(String file, ObjectMap params) throws ClientExc * includeIndividual: Include Individual object as an attribute. * flattenAnnotations: Flatten the annotations?. * study: Study [[user@]project:]study where study and project can be either the ID or UUID. - * id: Comma separated list sample IDs up to a maximum of 100. + * id: Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * uuid: Comma separated list sample UUIDs up to a maximum of 100. * somatic: Somatic sample. * individualId: Individual ID or UUID. @@ -238,7 +241,8 @@ public RestResponse load(String file, ObjectMap params) throws ClientExc * collectionFrom: Collection from. * collectionType: Collection type. * collectionMethod: Collection method. - * phenotypes: Comma separated list of phenotype ids or names. + * phenotypes: Comma separated list of phenotype ids or names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * acl: Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. Example: diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 53502e91c7e..f5cc56d0d9c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index eda89cb9228..e6c291036f5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 0d25391978a..0e88f0a112c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index ae6bef9d18d..e0e2f076484 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-08-30 +* Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 26d6d454012..d372e15a01c 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 33aa92db017..7a1e4809128 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 4434d811346..1054e70f292 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -76,10 +76,12 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of Clinical Analysis IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular + * expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. * @param {String} [params.type] - Clinical Analysis type. - * @param {String} [params.disorder] - Clinical Analysis disorder. + * @param {String} [params.disorder] - Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.files] - Clinical Analysis files. * @param {String} [params.sample] - Sample associated to the proband or any member of a family. * @param {String} [params.individual] - Proband or any member of a family. @@ -112,11 +114,13 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of Interpretation IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of Interpretation UUIDs up to a maximum of 100. * @param {String} [params.clinicalAnalysisId] - Clinical Analysis id. * @param {String} [params.analystId] - Analyst ID. - * @param {String} [params.methodName] - Interpretation method name. + * @param {String} [params.methodName] - Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.panels] - Interpretation panels. * @param {String} [params.primaryFindings] - Interpretation primary findings. * @param {String} [params.secondaryFindings] - Interpretation secondary findings. @@ -140,11 +144,13 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * @param {Number} [params.skip] - Number of results to skip. * @param {Boolean} [params.sort] - Sort the results. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of Interpretation IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of Interpretation IDs up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of Interpretation UUIDs up to a maximum of 100. * @param {String} [params.clinicalAnalysisId] - Clinical Analysis id. * @param {String} [params.analystId] - Analyst ID. - * @param {String} [params.methodName] - Interpretation method name. + * @param {String} [params.methodName] - Interpretation method name. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.panels] - Interpretation panels. * @param {String} [params.primaryFindings] - Interpretation primary findings. * @param {String} [params.secondaryFindings] - Interpretation secondary findings. @@ -513,10 +519,12 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * @param {Boolean} [params.count = "false"] - Get the total number of results matching the query. Deactivated by default. The default * value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of Clinical Analysis IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of Clinical Analysis IDs up to a maximum of 100. Also admits basic regular + * expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. * @param {String} [params.type] - Clinical Analysis type. - * @param {String} [params.disorder] - Clinical Analysis disorder. + * @param {String} [params.disorder] - Clinical Analysis disorder. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.files] - Clinical Analysis files. * @param {String} [params.sample] - Sample associated to the proband or any member of a family. * @param {String} [params.individual] - Proband or any member of a family. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index cb53c5278a3..11d9d5906f6 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -101,8 +101,10 @@ export default class Cohort extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of cohort IDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of cohort names up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.name] - Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of cohort IDs up to a maximum of 100. * @param {String} [params.type] - Cohort type. * @param {String} [params.creationDate] - creationDate. @@ -135,7 +137,8 @@ export default class Cohort extends OpenCGAParentClass { * @param {String} [params.modificationDate] - Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.internalStatus] - Filter by internal status. * @param {String} [params.status] - Filter by status. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.annotation] - Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * @param {String} [params.acl] - Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. @@ -161,8 +164,10 @@ export default class Cohort extends OpenCGAParentClass { * value is false. * @param {Boolean} [params.flattenAnnotations = "false"] - Flatten the annotations?. The default value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of cohort IDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of cohort names up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of cohort IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.name] - Comma separated list of cohort names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of cohort IDs up to a maximum of 100. * @param {String} [params.type] - Cohort type. * @param {String} [params.creationDate] - creationDate. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index a4bc253c0bd..1c427e0629f 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -62,17 +62,27 @@ export default class DiseasePanel extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of panel IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of panel UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of panel names up to a maximum of 100. + * @param {String} [params.name] - Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.internalStatus] - Filter by internal status. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. - * @param {String} [params.variants] - Comma separated list of variant ids. - * @param {String} [params.genes] - Comma separated list of gene ids. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic + * regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive + * search. + * @param {String} [params.variants] - Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.genes] - Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.source] - Comma separated list of source ids or names. - * @param {String} [params.regions] - Comma separated list of regions. - * @param {String} [params.categories] - Comma separated list of category names. - * @param {String} [params.tags] - Panel tags. + * @param {String} [params.regions] - Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.categories] - Comma separated list of category names. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.tags] - Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {Boolean} [params.deleted = "false"] - Boolean to retrieve deleted entries. The default value is false. * @param {String} [params.status] - Filter by status. * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. @@ -112,17 +122,27 @@ export default class DiseasePanel extends OpenCGAParentClass { * @param {Boolean} [params.count = "false"] - Get the total number of results matching the query. Deactivated by default. The default * value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of panel IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of panel IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of panel UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of panel names up to a maximum of 100. + * @param {String} [params.name] - Comma separated list of panel names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.internalStatus] - Filter by internal status. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. - * @param {String} [params.variants] - Comma separated list of variant ids. - * @param {String} [params.genes] - Comma separated list of gene ids. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search.. Also admits basic + * regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive + * search. + * @param {String} [params.variants] - Comma separated list of variant ids. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.genes] - Comma separated list of gene ids. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.source] - Comma separated list of source ids or names. - * @param {String} [params.regions] - Comma separated list of regions. - * @param {String} [params.categories] - Comma separated list of category names. - * @param {String} [params.tags] - Panel tags. + * @param {String} [params.regions] - Comma separated list of regions. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.categories] - Comma separated list of category names. Also admits basic regular expressions using the operator + * '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.tags] - Panel tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. + * '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {Boolean} [params.deleted = "false"] - Boolean to retrieve deleted entries. The default value is false. * @param {String} [params.status] - Filter by status. * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index e971b3b2e81..90d31e15443 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -104,14 +104,18 @@ export default class Family extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list family IDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list family names up to a maximum of 100. + * @param {String} [params.id] - Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.name] - Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list family UUIDs up to a maximum of 100. * @param {String} [params.members] - Comma separated list of family members. * @param {Number} [params.expectedSize] - Expected size of the family (number of members). * @param {String} [params.samples] - Comma separated list of member's samples. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.modificationDate] - Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {Boolean} [params.deleted = "false"] - Boolean to retrieve deleted entries. The default value is false. @@ -140,14 +144,18 @@ export default class Family extends OpenCGAParentClass { * value is false. * @param {Boolean} [params.flattenAnnotations = "false"] - Flatten the annotations?. The default value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list family IDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list family names up to a maximum of 100. + * @param {String} [params.id] - Comma separated list family IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.name] - Comma separated list family names up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list family UUIDs up to a maximum of 100. * @param {String} [params.members] - Comma separated list of family members. * @param {Number} [params.expectedSize] - Expected size of the family (number of members). * @param {String} [params.samples] - Comma separated list of member's samples. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.modificationDate] - Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {Boolean} [params.deleted = "false"] - Boolean to retrieve deleted entries. The default value is false. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index b3219c4f08a..d5678f46153 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -112,11 +112,15 @@ export default class File extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of file IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list file UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of file names. - * @param {String} [params.path] - Comma separated list of paths. - * @param {String} [params.uri] - Comma separated list of uris. + * @param {String} [params.name] - Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.path] - Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.uri] - Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.type] - File type, either FILE or DIRECTORY. * @param {String} [params.bioformat] - Comma separated Bioformat values. For existing Bioformats see files/bioformats. * @param {String} [params.format] - Comma separated Format values. For existing Formats see files/formats. @@ -129,7 +133,8 @@ export default class File extends OpenCGAParentClass { * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.modificationDate] - Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.description] - Description. - * @param {String} [params.tags] - Tags. + * @param {String} [params.tags] - Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' + * for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.size] - File size. * @param {String} [params.sampleIds] - Comma separated list sample IDs or UUIDs up to a maximum of 100. * @param {String} [params.jobId] - Job ID that created the file(s) or folder(s). @@ -220,11 +225,15 @@ export default class File extends OpenCGAParentClass { * value is false. * @param {Boolean} [params.flattenAnnotations = "false"] - Boolean indicating to flatten the annotations. The default value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list of file IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of file IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list file UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list of file names. - * @param {String} [params.path] - Comma separated list of paths. - * @param {String} [params.uri] - Comma separated list of uris. + * @param {String} [params.name] - Comma separated list of file names. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.path] - Comma separated list of paths. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.uri] - Comma separated list of uris. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.type] - File type, either FILE or DIRECTORY. * @param {String} [params.bioformat] - Comma separated Bioformat values. For existing Bioformats see files/bioformats. * @param {String} [params.format] - Comma separated Format values. For existing Formats see files/formats. @@ -237,7 +246,8 @@ export default class File extends OpenCGAParentClass { * @param {String} [params.creationDate] - Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.modificationDate] - Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. * @param {String} [params.description] - Description. - * @param {String} [params.tags] - Tags. + * @param {String} [params.tags] - Tags. Also admits basic regular expressions using the operator '~', i.e. '~{perl-regex}' e.g. '~value' + * for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.size] - File size. * @param {String} [params.sampleIds] - Comma separated list sample IDs or UUIDs up to a maximum of 100. * @param {String} [params.jobId] - Job ID that created the file(s) or folder(s). diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index ec01beb21de..52d93be35f7 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 71eb45dbafd..b66f0fc8aee 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -111,20 +111,27 @@ export default class Individual extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list individual IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list individual UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list individual names up to a maximum of 100. + * @param {String} [params.name] - Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.familyIds] - Comma separated list of family ids the individuals may belong to. * @param {String} [params.father] - Father ID, name or UUID. * @param {String} [params.mother] - Mother ID, name or UUID. * @param {String} [params.samples] - Sample ID, name or UUID. * @param {String} [params.sex] - Individual sex. - * @param {String} [params.ethnicity] - Individual ethnicity. + * @param {String} [params.ethnicity] - Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl- + * regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.dateOfBirth] - Individual date of birth. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. - * @param {String} [params.populationName] - Population name. - * @param {String} [params.populationSubpopulation] - Subpopulation name. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.populationName] - Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl- + * regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.populationSubpopulation] - Subpopulation name. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.karyotypicSex] - Individual karyotypic sex. * @param {String} [params.lifeStatus] - Individual life status. * @param {String} [params.internalStatus] - Filter by internal status. @@ -155,20 +162,27 @@ export default class Individual extends OpenCGAParentClass { * value is false. * @param {Boolean} [params.flattenAnnotations = "false"] - Flatten the annotations?. The default value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list individual IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list individual IDs up to a maximum of 100. Also admits basic regular expressions using + * the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list individual UUIDs up to a maximum of 100. - * @param {String} [params.name] - Comma separated list individual names up to a maximum of 100. + * @param {String} [params.name] - Comma separated list individual names up to a maximum of 100. Also admits basic regular expressions + * using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.father] - Father ID, name or UUID. * @param {String} [params.mother] - Mother ID, name or UUID. * @param {String} [params.samples] - Sample ID, name or UUID. * @param {String} [params.familyIds] - Comma separated list of family ids the individuals may belong to. * @param {String} [params.sex] - Individual sex. * @param {String} [params.dateOfBirth] - Individual date of birth. - * @param {String} [params.ethnicity] - Individual ethnicity. - * @param {String} [params.disorders] - Comma separated list of disorder ids or names. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. - * @param {String} [params.populationName] - Population name. - * @param {String} [params.populationSubpopulation] - Subpopulation name. + * @param {String} [params.ethnicity] - Individual ethnicity. Also admits basic regular expressions using the operator '~', i.e. '~{perl- + * regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.disorders] - Comma separated list of disorder ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.populationName] - Population name. Also admits basic regular expressions using the operator '~', i.e. '~{perl- + * regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. + * @param {String} [params.populationSubpopulation] - Subpopulation name. Also admits basic regular expressions using the operator '~', + * i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.karyotypicSex] - Individual karyotypic sex. * @param {String} [params.lifeStatus] - Individual life status. * @param {String} [params.internalStatus] - Filter by internal status. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 1e1cc91bc52..8128ce9db7d 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -85,9 +85,11 @@ export default class Job extends OpenCGAParentClass { * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. * @param {Boolean} [params.otherStudies = "false"] - Flag indicating the entries being queried can belong to any related study, not just * the primary one. The default value is false. - * @param {String} [params.id] - Comma separated list of job IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of job UUIDs up to a maximum of 100. - * @param {String} [params.toolId] - Tool ID executed by the job. + * @param {String} [params.toolId] - Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.toolType] - Tool type executed by the job [OPERATION, ANALYSIS]. * @param {String} [params.userId] - User that created the job. * @param {String} [params.priority] - Priority of the job. @@ -136,9 +138,11 @@ export default class Job extends OpenCGAParentClass { * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. * @param {Boolean} [params.otherStudies = "false"] - Flag indicating the entries being queried can belong to any related study, not just * the primary one. The default value is false. - * @param {String} [params.id] - Comma separated list of job IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list of job IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list of job UUIDs up to a maximum of 100. - * @param {String} [params.toolId] - Tool ID executed by the job. + * @param {String} [params.toolId] - Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.toolType] - Tool type executed by the job [OPERATION, ANALYSIS]. * @param {String} [params.userId] - User that created the job. * @param {String} [params.priority] - Priority of the job. @@ -168,7 +172,8 @@ export default class Job extends OpenCGAParentClass { * @param {String} [params.internalStatus] - Filter by internal status. * @param {String} [params.priority] - Priority of the job. * @param {String} [params.userId] - User that created the job. - * @param {String} [params.toolId] - Tool ID executed by the job. + * @param {String} [params.toolId] - Tool ID executed by the job. Also admits basic regular expressions using the operator '~', i.e. + * '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @returns {Promise} Promise object in the form of RestResponse instance. */ top(params) { diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 24dfe87c63d..96fcc5b6d68 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index e240c25cb46..8c4e02f956e 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 03c6a5b8d8f..74c71a5206f 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -103,7 +103,8 @@ export default class Sample extends OpenCGAParentClass { * @param {String} field - Comma separated list of fields for which to obtain the distinct values. * @param {Object} [params] - The Object containing the following optional parameters: * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list sample IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list sample UUIDs up to a maximum of 100. * @param {Boolean} [params.somatic] - Somatic sample. * @param {String} [params.individualId] - Individual ID or UUID. @@ -120,7 +121,8 @@ export default class Sample extends OpenCGAParentClass { * @param {String} [params.collectionFrom] - Collection from. * @param {String} [params.collectionType] - Collection type. * @param {String} [params.collectionMethod] - Collection method. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.annotation] - Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * @param {String} [params.acl] - Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. @@ -173,7 +175,8 @@ export default class Sample extends OpenCGAParentClass { * @param {Boolean} [params.includeIndividual = "false"] - Include Individual object as an attribute. The default value is false. * @param {Boolean} [params.flattenAnnotations = "false"] - Flatten the annotations?. The default value is false. * @param {String} [params.study] - Study [[user@]project:]study where study and project can be either the ID or UUID. - * @param {String} [params.id] - Comma separated list sample IDs up to a maximum of 100. + * @param {String} [params.id] - Comma separated list sample IDs up to a maximum of 100. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.uuid] - Comma separated list sample UUIDs up to a maximum of 100. * @param {Boolean} [params.somatic] - Somatic sample. * @param {String} [params.individualId] - Individual ID or UUID. @@ -190,7 +193,8 @@ export default class Sample extends OpenCGAParentClass { * @param {String} [params.collectionFrom] - Collection from. * @param {String} [params.collectionType] - Collection type. * @param {String} [params.collectionMethod] - Collection method. - * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. + * @param {String} [params.phenotypes] - Comma separated list of phenotype ids or names. Also admits basic regular expressions using the + * operator '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for case insensitive search. * @param {String} [params.annotation] - Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit * http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. * @param {String} [params.acl] - Filter entries for which a user has the provided permissions. Format: acl={user}:{permissions}. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index e99e8c7606b..54186dac4ec 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index bfed2a7bfec..ac91b91b891 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index ae9365d5448..27eb9763570 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index f9837f69e25..192a736a775 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-08-30 + * Autogenerated on: 2023-09-01 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index e982694d126..2a5439b0d00 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index b94f350449a..012e5296968 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index ca4e1438978..6bd79233875 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -86,11 +86,16 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of Clinical Analysis IDs up to a - maximum of 100. + maximum of 100. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. :param str type: Clinical Analysis type. - :param str disorder: Clinical Analysis disorder. + :param str disorder: Clinical Analysis disorder. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str files: Clinical Analysis files. :param str sample: Sample associated to the proband or any member of a family. @@ -133,12 +138,17 @@ def distinct_interpretation(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of Interpretation IDs up to a - maximum of 100. + maximum of 100. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100. :param str clinical_analysis_id: Clinical Analysis id. :param str analyst_id: Analyst ID. - :param str method_name: Interpretation method name. + :param str method_name: Interpretation method name. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str panels: Interpretation panels. :param str primary_findings: Interpretation primary findings. :param str secondary_findings: Interpretation secondary findings. @@ -169,12 +179,17 @@ def search_interpretation(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of Interpretation IDs up to a - maximum of 100. + maximum of 100. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str uuid: Comma separated list of Interpretation UUIDs up to a maximum of 100. :param str clinical_analysis_id: Clinical Analysis id. :param str analyst_id: Analyst ID. - :param str method_name: Interpretation method name. + :param str method_name: Interpretation method name. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str panels: Interpretation panels. :param str primary_findings: Interpretation primary findings. :param str secondary_findings: Interpretation secondary findings. @@ -606,11 +621,16 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of Clinical Analysis IDs up to a - maximum of 100. + maximum of 100. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str uuid: Comma separated list of Clinical Analysis UUIDs up to a maximum of 100. :param str type: Clinical Analysis type. - :param str disorder: Clinical Analysis disorder. + :param str disorder: Clinical Analysis disorder. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str files: Clinical Analysis files. :param str sample: Sample associated to the proband or any member of a family. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index fef4cafa48d..4b1be07e92a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -121,9 +121,13 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of cohort IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str name: Comma separated list of cohort names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str uuid: Comma separated list of cohort IDs up to a maximum of 100. :param str type: Cohort type. @@ -166,6 +170,9 @@ def generate(self, data=None, **options): :param str internal_status: Filter by internal status. :param str status: Filter by status. :param str phenotypes: Comma separated list of phenotype ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. @@ -200,9 +207,13 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of cohort IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str name: Comma separated list of cohort names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str uuid: Comma separated list of cohort IDs up to a maximum of 100. :param str type: Cohort type. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 8382900c307..a6fe0e432a5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -67,19 +67,42 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of panel IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list of panel UUIDs up to a maximum of 100. :param str name: Comma separated list of panel names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str internal_status: Filter by internal status. :param str disorders: Comma separated list of disorder ids or names. - :param str variants: Comma separated list of variant ids. - :param str genes: Comma separated list of gene ids. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search.. Also admits basic regular expressions + using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. + :param str variants: Comma separated list of variant ids. Also admits + basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str genes: Comma separated list of gene ids. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str source: Comma separated list of source ids or names. - :param str regions: Comma separated list of regions. - :param str categories: Comma separated list of category names. - :param str tags: Panel tags. + :param str regions: Comma separated list of regions. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str categories: Comma separated list of category names. Also + admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str tags: Panel tags. Also admits basic regular expressions + using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param bool deleted: Boolean to retrieve deleted entries. :param str status: Filter by status. :param str creation_date: Creation date. Format: yyyyMMddHHmmss. @@ -133,19 +156,42 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of panel IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list of panel UUIDs up to a maximum of 100. :param str name: Comma separated list of panel names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str internal_status: Filter by internal status. :param str disorders: Comma separated list of disorder ids or names. - :param str variants: Comma separated list of variant ids. - :param str genes: Comma separated list of gene ids. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search.. Also admits basic regular expressions + using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. + :param str variants: Comma separated list of variant ids. Also admits + basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str genes: Comma separated list of gene ids. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str source: Comma separated list of source ids or names. - :param str regions: Comma separated list of regions. - :param str categories: Comma separated list of category names. - :param str tags: Panel tags. + :param str regions: Comma separated list of regions. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str categories: Comma separated list of category names. Also + admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str tags: Panel tags. Also admits basic regular expressions + using the operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param bool deleted: Boolean to retrieve deleted entries. :param str status: Filter by status. :param str creation_date: Creation date. Format: yyyyMMddHHmmss. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 0637f728a08..1d41d4a8488 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -124,8 +124,13 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list family IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str name: Comma separated list family names up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list family UUIDs up to a maximum of 100. :param str members: Comma separated list of family members. @@ -133,7 +138,13 @@ def distinct(self, field, **options): members). :param str samples: Comma separated list of member's samples. :param str phenotypes: Comma separated list of phenotype ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str disorders: Comma separated list of disorder ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str creation_date: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. :param str modification_date: Modification date. Format: @@ -174,8 +185,13 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list family IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str name: Comma separated list family names up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list family UUIDs up to a maximum of 100. :param str members: Comma separated list of family members. @@ -183,7 +199,13 @@ def search(self, **options): members). :param str samples: Comma separated list of member's samples. :param str phenotypes: Comma separated list of phenotype ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str disorders: Comma separated list of disorder ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str creation_date: Creation date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. :param str modification_date: Modification date. Format: diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 816cdf83c0b..e3a5a9b8988 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -129,12 +129,23 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of file IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list file UUIDs up to a maximum of 100. - :param str name: Comma separated list of file names. - :param str path: Comma separated list of paths. - :param str uri: Comma separated list of uris. + :param str name: Comma separated list of file names. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str path: Comma separated list of paths. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str uri: Comma separated list of uris. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str type: File type, either FILE or DIRECTORY. :param str bioformat: Comma separated Bioformat values. For existing Bioformats see files/bioformats. @@ -154,7 +165,9 @@ def distinct(self, field, **options): :param str modification_date: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. :param str description: Description. - :param str tags: Tags. + :param str tags: Tags. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str size: File size. :param str sample_ids: Comma separated list sample IDs or UUIDs up to a maximum of 100. @@ -269,12 +282,23 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list of file IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list file UUIDs up to a maximum of 100. - :param str name: Comma separated list of file names. - :param str path: Comma separated list of paths. - :param str uri: Comma separated list of uris. + :param str name: Comma separated list of file names. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str path: Comma separated list of paths. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str uri: Comma separated list of uris. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str type: File type, either FILE or DIRECTORY. :param str bioformat: Comma separated Bioformat values. For existing Bioformats see files/bioformats. @@ -294,7 +318,9 @@ def search(self, **options): :param str modification_date: Modification date. Format: yyyyMMddHHmmss. Examples: >2018, 2017-2018, <201805. :param str description: Description. - :param str tags: Tags. + :param str tags: Tags. Also admits basic regular expressions using the + operator '~', i.e. '~{perl-regex}' e.g. '~value' for case + sensitive, '~/value/i' for case insensitive search. :param str size: File size. :param str sample_ids: Comma separated list sample IDs or UUIDs up to a maximum of 100. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 6f62ec62786..0b077f4a7c6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 3982f010208..e8213458d7b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -132,23 +132,42 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list individual IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list individual UUIDs up to a maximum of 100. :param str name: Comma separated list individual names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str family_ids: Comma separated list of family ids the individuals may belong to. :param str father: Father ID, name or UUID. :param str mother: Mother ID, name or UUID. :param str samples: Sample ID, name or UUID. :param str sex: Individual sex. - :param str ethnicity: Individual ethnicity. + :param str ethnicity: Individual ethnicity. Also admits basic regular + expressions using the operator '~', i.e. '~{perl-regex}' e.g. + '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str date_of_birth: Individual date of birth. :param str disorders: Comma separated list of disorder ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str phenotypes: Comma separated list of phenotype ids or names. - :param str population_name: Population name. - :param str population_subpopulation: Subpopulation name. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str population_name: Population name. Also admits basic regular + expressions using the operator '~', i.e. '~{perl-regex}' e.g. + '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str population_subpopulation: Subpopulation name. Also admits + basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str karyotypic_sex: Individual karyotypic sex. :param str life_status: Individual life status. :param str internal_status: Filter by internal status. @@ -191,11 +210,15 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list individual IDs up to a maximum of - 100. + 100. Also admits basic regular expressions using the operator '~', + i.e. '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' + for case insensitive search. :param str uuid: Comma separated list individual UUIDs up to a maximum of 100. :param str name: Comma separated list individual names up to a maximum - of 100. + of 100. Also admits basic regular expressions using the operator + '~', i.e. '~{perl-regex}' e.g. '~value' for case sensitive, + '~/value/i' for case insensitive search. :param str father: Father ID, name or UUID. :param str mother: Mother ID, name or UUID. :param str samples: Sample ID, name or UUID. @@ -203,11 +226,26 @@ def search(self, **options): individuals may belong to. :param str sex: Individual sex. :param str date_of_birth: Individual date of birth. - :param str ethnicity: Individual ethnicity. + :param str ethnicity: Individual ethnicity. Also admits basic regular + expressions using the operator '~', i.e. '~{perl-regex}' e.g. + '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str disorders: Comma separated list of disorder ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str phenotypes: Comma separated list of phenotype ids or names. - :param str population_name: Population name. - :param str population_subpopulation: Subpopulation name. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. + :param str population_name: Population name. Also admits basic regular + expressions using the operator '~', i.e. '~{perl-regex}' e.g. + '~value' for case sensitive, '~/value/i' for case insensitive + search. + :param str population_subpopulation: Subpopulation name. Also admits + basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str karyotypic_sex: Individual karyotypic sex. :param str life_status: Individual life status. :param str internal_status: Filter by internal status. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 313cf0df796..fd4ac0a9386 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -92,9 +92,15 @@ def distinct(self, field, **options): :param bool other_studies: Flag indicating the entries being queried can belong to any related study, not just the primary one. :param str id: Comma separated list of job IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str uuid: Comma separated list of job UUIDs up to a maximum of 100. - :param str tool_id: Tool ID executed by the job. + :param str tool_id: Tool ID executed by the job. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str tool_type: Tool type executed by the job [OPERATION, ANALYSIS]. :param str user_id: User that created the job. @@ -157,9 +163,15 @@ def search(self, **options): :param bool other_studies: Flag indicating the entries being queried can belong to any related study, not just the primary one. :param str id: Comma separated list of job IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str uuid: Comma separated list of job UUIDs up to a maximum of 100. - :param str tool_id: Tool ID executed by the job. + :param str tool_id: Tool ID executed by the job. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. :param str tool_type: Tool type executed by the job [OPERATION, ANALYSIS]. :param str user_id: User that created the job. @@ -196,7 +208,10 @@ def top(self, **options): :param str internal_status: Filter by internal status. :param str priority: Priority of the job. :param str user_id: User that created the job. - :param str tool_id: Tool ID executed by the job. + :param str tool_id: Tool ID executed by the job. Also admits basic + regular expressions using the operator '~', i.e. '~{perl-regex}' + e.g. '~value' for case sensitive, '~/value/i' for case insensitive + search. """ return self._get(category='jobs', resource='top', **options) diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 189a5ab62ea..d9f841bb69d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 0784b20594c..b5eac020645 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 258189685ef..dbd8d313d8a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -122,6 +122,9 @@ def distinct(self, field, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list sample IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str uuid: Comma separated list sample UUIDs up to a maximum of 100. :param bool somatic: Somatic sample. @@ -143,6 +146,9 @@ def distinct(self, field, **options): :param str collection_type: Collection type. :param str collection_method: Collection method. :param str phenotypes: Comma separated list of phenotype ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. @@ -215,6 +221,9 @@ def search(self, **options): :param str study: Study [[user@]project:]study where study and project can be either the ID or UUID. :param str id: Comma separated list sample IDs up to a maximum of 100. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str uuid: Comma separated list sample UUIDs up to a maximum of 100. :param bool somatic: Somatic sample. @@ -236,6 +245,9 @@ def search(self, **options): :param str collection_type: Collection type. :param str collection_method: Collection method. :param str phenotypes: Comma separated list of phenotype ids or names. + Also admits basic regular expressions using the operator '~', i.e. + '~{perl-regex}' e.g. '~value' for case sensitive, '~/value/i' for + case insensitive search. :param str annotation: Annotation filters. Example: age>30;gender=FEMALE. For more information, please visit http://docs.opencb.org/display/opencga/AnnotationSets+1.4.0. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 3726c1e0a3a..82c241c0eb2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 80ac433566b..e7de326420c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 32dfa804648..9e447940a11 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 4070484d219..87b0d72a7d2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-08-30 + Autogenerated on: 2023-09-01 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index a34b818924a..10cd2f3cdf2 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -68,9 +68,9 @@ public class ParamConstants { public static final String DISTINCT_FIELD_PARAM = "field"; public static final String DISTINCT_FIELD_DESCRIPTION = "Comma separated list of fields for which to obtain the distinct values"; public static final String PHENOTYPES_PARAM = "phenotypes"; - public static final String PHENOTYPES_DESCRIPTION = "Comma separated list of phenotype ids or names"; + public static final String PHENOTYPES_DESCRIPTION = "Comma separated list of phenotype ids or names" + REGEX_SUPPORT; public static final String DISORDERS_PARAM = "disorders"; - public static final String DISORDERS_DESCRIPTION = "Comma separated list of disorder ids or names"; + public static final String DISORDERS_DESCRIPTION = "Comma separated list of disorder ids or names" + REGEX_SUPPORT; public static final String BODY_PARAM = "body"; public static final String OVERWRITE = "overwrite"; @@ -320,8 +320,8 @@ public class ParamConstants { public static final String INDIVIDUAL_SEX_DESCRIPTION = "Individual sex"; public static final String INDIVIDUAL_ETHNICITY_DESCRIPTION = "Individual ethnicity" + REGEX_SUPPORT; public static final String INDIVIDUAL_DATE_OF_BIRTH_DESCRIPTION = "Individual date of birth"; - public static final String INDIVIDUAL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION + REGEX_SUPPORT; - public static final String INDIVIDUAL_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION + REGEX_SUPPORT; + public static final String INDIVIDUAL_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION; + public static final String INDIVIDUAL_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION; public static final String INDIVIDUAL_POPULATION_NAME_DESCRIPTION = "Population name" + REGEX_SUPPORT; public static final String INDIVIDUAL_POPULATION_SUBPOPULATION_DESCRIPTION = "Subpopulation name" + REGEX_SUPPORT; public static final String INDIVIDUAL_KARYOTYPIC_SEX_DESCRIPTION = "Individual karyotypic sex"; @@ -360,8 +360,8 @@ public class ParamConstants { public static final String FAMILY_MEMBERS_DESCRIPTION = "Comma separated list of family members"; public static final String FAMILY_SAMPLES_DESCRIPTION = "Comma separated list of member's samples"; public static final String FAMILY_EXPECTED_SIZE_DESCRIPTION = "Expected size of the family (number of members)"; - public static final String FAMILY_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION + REGEX_SUPPORT; - public static final String FAMILY_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION + REGEX_SUPPORT; + public static final String FAMILY_PHENOTYPES_DESCRIPTION = PHENOTYPES_DESCRIPTION; + public static final String FAMILY_DISORDERS_DESCRIPTION = DISORDERS_DESCRIPTION; public static final String FAMILY_CREATION_DATE_DESCRIPTION = CREATION_DATE_DESCRIPTION; public static final String FAMILY_MODIFICATION_DATE_DESCRIPTION = MODIFICATION_DATE_DESCRIPTION; public static final String FAMILY_DELETED_DESCRIPTION = DELETED_DESCRIPTION; @@ -1480,7 +1480,7 @@ public class ParamConstants { public static final String FILES_ID_DESCRIPTION = "Comma separated list of file IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String FILES_UUID_DESCRIPTION = "Comma separated list file UUIDs" + UP_TO_100; public static final String SAMPLES_DESCRIPTION = "Comma separated list sample IDs or UUIDs" + UP_TO_100; - public static final String SAMPLES_ID_DESCRIPTION = "Comma separated list sample IDs" + UP_TO_100; + public static final String SAMPLES_ID_DESCRIPTION = "Comma separated list sample IDs" + UP_TO_100 + REGEX_SUPPORT; public static final String SAMPLES_UUID_DESCRIPTION = "Comma separated list sample UUIDs" + UP_TO_100; public static final String INDIVIDUALS_DESCRIPTION = "Comma separated list of individual IDs, names or UUIDs" + UP_TO_100; public static final String INDIVIDUALS_ID_DESCRIPTION = "Comma separated list individual IDs" + UP_TO_100 + REGEX_SUPPORT; From cf6c1f136519b50629146f53bbe242f55c79bc90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 30 Aug 2023 17:38:03 +0100 Subject: [PATCH 128/354] core: Do not validate empty string tokens. #TASK-4913 --- .../org/opencb/opencga/core/cellbase/CellBaseValidator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 43da58f396a..d1738dedf02 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -194,7 +194,9 @@ private CellBaseConfiguration validate(boolean autoComplete) throws IOException } } } - if (getToken() != null) { + if (StringUtils.isEmpty(getToken())) { + cellBaseConfiguration.setToken(null); + } else { // Check it's supported if (!supportsToken(serverVersion)) { throw new IllegalArgumentException("Token not supported for cellbase " From b54ca18149aea527546f90261d0d0b96c05159e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 31 Aug 2023 10:05:31 +0100 Subject: [PATCH 129/354] core: Improve exception message #TASK-4913 --- .../opencga/analysis/variant/manager/VariantStorageManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java index 806fbb6d818..cf5164f727a 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java @@ -1225,7 +1225,7 @@ private R secureTool(String toolId, boolean isOperation, ObjectMap params, S throw e; } catch (Exception e) { exception = e; - throw new StorageEngineException("Error executing operation " + toolId, e); + throw new StorageEngineException("Error executing operation '" + toolId + "' : " + e.getMessage(), e); } finally { if (result instanceof DataResult) { auditAttributes.append("dbTime", ((DataResult) result).getTime()); From ba9e611655319bd6452113578a438a636dfd2009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 31 Aug 2023 11:15:12 +0100 Subject: [PATCH 130/354] core: Fix validation test #TASK-4913 --- .../analysis/variant/manager/VariantStorageManager.java | 8 +++++++- .../opencb/opencga/core/cellbase/CellBaseValidator.java | 5 +++-- .../opencga/core/cellbase/CellBaseValidatorTest.java | 8 ++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java index cf5164f727a..48b5cf87114 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java @@ -49,6 +49,7 @@ import org.opencb.opencga.catalog.managers.StudyManager; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.cellbase.CellBaseValidator; +import org.opencb.opencga.core.common.ExceptionUtils; import org.opencb.opencga.core.common.UriUtils; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.opencb.opencga.core.config.storage.SampleIndexConfiguration; @@ -564,7 +565,10 @@ public OpenCGAResult setCellbaseConfiguration(String project, CellBaseConfi String annotationSaveId, String token) throws CatalogException, StorageEngineException { StopWatch stopwatch = StopWatch.createStarted(); - return secureOperationByProject("configureCellbase", project, new ObjectMap(), token, engine -> { + return secureOperationByProject("configureCellbase", project, new ObjectMap() + .append("cellbaseConfiguration", cellbaseConfiguration) + .append("annotate", annotate) + .append("annotationSaveId", annotationSaveId), token, engine -> { OpenCGAResult result = new OpenCGAResult<>(); result.setResultType(Job.class.getCanonicalName()); result.setResults(new ArrayList<>()); @@ -1237,6 +1241,8 @@ private R secureTool(String toolId, boolean isOperation, ObjectMap params, S if (exception != null) { auditAttributes.append("errorType", exception.getClass()); auditAttributes.append("errorMessage", exception.getMessage()); + auditAttributes.append("errorMessageFull", ExceptionUtils.prettyExceptionMessage(exception, false, true)); + auditAttributes.append("exceptionStackTrace", ExceptionUtils.prettyExceptionStackTrace(exception)); status = new AuditRecord.Status(AuditRecord.Status.Result.ERROR, new Error(-1, exception.getClass().getName(), exception.getMessage())); } else { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index d1738dedf02..467dabf7b75 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -194,7 +194,8 @@ private CellBaseConfiguration validate(boolean autoComplete) throws IOException } } } - if (StringUtils.isEmpty(getToken())) { + String token = getToken(); + if (StringUtils.isEmpty(token)) { cellBaseConfiguration.setToken(null); } else { // Check it's supported @@ -207,7 +208,7 @@ private CellBaseConfiguration validate(boolean autoComplete) throws IOException // Check it's an actual token DataAccessTokenManager tokenManager = new DataAccessTokenManager(); try { - tokenManager.decode(getToken()); + tokenManager.decode(token); } catch (JwtException e) { throw new IllegalArgumentException("Malformed token for cellbase " + "url: '" + getURL() + "'" diff --git a/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java b/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java index 38d91dd0fc8..36026700237 100644 --- a/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java +++ b/opencga-core/src/test/java/org/opencb/opencga/core/cellbase/CellBaseValidatorTest.java @@ -85,10 +85,18 @@ public void testToken() throws IOException { public void testTokenNotSupported() throws IOException { String token = System.getenv("CELLBASE_HGMD_TOKEN"); Assume.assumeTrue(StringUtils.isNotEmpty(token)); + thrown.expectMessage("Token not supported"); CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.1", null, token), "hsapiens", "grch38", true); Assert.assertNotNull(validated.getToken()); } + @Test + public void testTokenEmpty() throws IOException { + String token = ""; + CellBaseConfiguration validated = CellBaseValidator.validate(new CellBaseConfiguration(ParamConstants.CELLBASE_URL, "v5.1", null, token), "hsapiens", "grch38", true); + Assert.assertNull(validated.getToken()); + } + @Test public void testMalformedToken() throws IOException { thrown.expectMessage("Malformed token for cellbase"); From 7e29141346bf4153eff9d13c8f4dbe8de947f237 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 4 Sep 2023 12:31:29 +0200 Subject: [PATCH 131/354] Prepare merge --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 260955d38c6..adcb53e2d0e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 4d18a6476ca..b787e5d11d2 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index a0ea06ca14c..fac7d8e548a 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 191a5319867..22a563296b0 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index a9630add90e..de52a8ef4e1 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 508d50cede8..e2d8fc127e4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index d45f901844c..2d6fd5a8da6 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 0d66c9f3a74..65cebaebdda 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 9d41b4d028d..cafb6d1c2ac 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 89d8c6c9d7e..aa79ec720fd 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 3b2f329ccb0..b97d0472984 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index bd7a7c7baa4..97db69b63b9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index f64c1bc25ba..1c27bd10350 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index a5852716f29..f1f99b70468 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index cbbfa9c0e83..03561e6c93d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 3dc7eedf5dc..c0e60a63db5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 202510b2e48..1ea5e5a91d1 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index bbe30f1aa3b..c9a6b5604a3 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index ab93e1a8071..49b680170d0 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 8f13ebd49ab..caa613c03e2 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index a91ad02aa54..6cdcc114b77 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.3 + 2.11.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From 92558f56ec8f5c243385da948796d374a4875517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 7 Sep 2023 15:26:26 +0200 Subject: [PATCH 132/354] core: rename token to apiKey in some functions, #TASK-4898, #TASK-4641 --- .../opencb/opencga/core/cellbase/CellBaseValidator.java | 8 ++++---- .../annotators/AbstractCellBaseVariantAnnotator.java | 4 ++-- .../annotators/CellBaseRestVariantAnnotator.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 61f718dd785..edf5e3e50bc 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -198,7 +198,7 @@ private CellBaseConfiguration validate(boolean autoComplete) throws IOException cellBaseConfiguration.setApiKey(null); } else { // Check it's supported - if (!supportsToken(serverVersion)) { + if (!supportsApiKey(serverVersion)) { throw new IllegalArgumentException("API key not supported for cellbase " + "url: '" + getURL() + "'" + ", version: '" + inputVersion + "'"); @@ -270,8 +270,8 @@ public static boolean supportsDataReleaseActiveByDefaultIn(String serverVersion) return VersionUtils.isMinVersion("5.5.0", serverVersion, true); } - public static boolean supportsToken(String serverVersion) { - // Tokens support starts at version 5.4.0 + public static boolean supportsApiKey(String serverVersion) { + // API keys support starts at version 5.4.0 return VersionUtils.isMinVersion("5.4.0", serverVersion); } @@ -325,7 +325,7 @@ public String toString() { + "species '" + getSpecies() + "', " + "assembly '" + getAssembly() + "', " + "dataRelease '" + getDataRelease() + "', " - + "token '" + getApiKey() + "'"; + + "apiKey '" + getApiKey() + "'"; } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java index fc743b13a76..da8d44b05b5 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/AbstractCellBaseVariantAnnotator.java @@ -56,7 +56,7 @@ public abstract class AbstractCellBaseVariantAnnotator extends VariantAnnotator protected final String assembly; protected final String cellbaseVersion; protected final String cellbaseDataRelease; - protected final String cellbaseToken; + protected final String cellbaseApiKey; protected final QueryOptions queryOptions; protected final boolean supportImpreciseVariants; protected final boolean supportStarAlternate; @@ -72,7 +72,7 @@ public AbstractCellBaseVariantAnnotator(StorageConfiguration storageConfiguratio assembly = projectMetadata.getAssembly(); cellbaseVersion = storageConfiguration.getCellbase().getVersion(); cellbaseDataRelease = storageConfiguration.getCellbase().getDataRelease(); - cellbaseToken = storageConfiguration.getCellbase().getApiKey(); + cellbaseApiKey = storageConfiguration.getCellbase().getApiKey(); queryOptions = new QueryOptions(); if (StringUtils.isNotEmpty(params.getString(VariantStorageOptions.ANNOTATOR_CELLBASE_INCLUDE.key()))) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java index 85ee3b0810c..a589a21e1a4 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/annotators/CellBaseRestVariantAnnotator.java @@ -67,7 +67,7 @@ public CellBaseRestVariantAnnotator(StorageConfiguration storageConfiguration, P VariantStorageOptions.ANNOTATION_TIMEOUT.defaultValue()); clientConfiguration.getRest().setTimeout(timeoutMillis); - cellBaseClient = new CellBaseClient(species, assembly, cellbaseDataRelease, cellbaseToken, clientConfiguration); + cellBaseClient = new CellBaseClient(species, assembly, cellbaseDataRelease, cellbaseApiKey, clientConfiguration); cellBaseUtils = new CellBaseUtils(cellBaseClient); logger.info("Annotating with Cellbase REST. {}", cellBaseUtils); From 9b9ee1c44a9c4ce6e34a3f600d1e4ebc62080ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Fri, 8 Sep 2023 08:29:43 +0200 Subject: [PATCH 133/354] analysis: use the project API key before using the storage API key, #TASK-4898, #TASK-4641 --- .../analysis/variant/manager/VariantStorageManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java index e62528b6d28..22b337e9621 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java @@ -1021,7 +1021,8 @@ private void setCellbaseConfiguration(VariantStorageEngine engine, String projec .get(project, new QueryOptions(INCLUDE, ProjectDBAdaptor.QueryParams.CELLBASE.key()), token) .first().getCellbase(); if (cellbase != null) { - if (StringUtils.isEmpty(cellbase.getApiKey()) || storageConfiguration.getCellbase() != null) { + // To ensure that we use the project API key before using the storage API key + if (StringUtils.isEmpty(cellbase.getApiKey()) && storageConfiguration.getCellbase() != null) { cellbase.setApiKey(storageConfiguration.getCellbase().getApiKey()); } engine.getConfiguration().setCellbase(cellbase); From 9ac3dfcce928664c921cd93dbbb2662d86fb6593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 8 Sep 2023 11:07:23 +0100 Subject: [PATCH 134/354] storage: Do fail when export-snapshot fails #TASK-4372 --- .../opencga/storage/hadoop/app/HBaseMain.java | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java index f713fbc2e9e..4daa7789327 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/app/HBaseMain.java @@ -214,23 +214,23 @@ public void run(String[] args) throws Exception { + "[--onExistingTables [fail|skip|drop] ]"); System.out.println(" Clone all snapshots into tables matching the regex. " + "Generated tables can have a table prefix change."); -// System.out.println(" " + EXPORT_SNAPSHOTS + " \n" -// + " --dryRun Dry run.\n" -// + " --snapshot Snapshot to restore.\n" -// + " --copyTo Remote destination hdfs://\n" -// + " --copyFrom Input folder hdfs:// (default hbase.rootdir)\n" -// + " --target Target name for the snapshot.\n" -//// + " --no-checksum-verify Do not verify checksum, use name+length only.\n" -//// + " --no-target-verify Do not verify the integrity of the exported snapshot.\n" -// + " --overwrite Rewrite the snapshot manifest if already exists.\n" -//// + " --chuser Change the owner of the files to the specified one.\n" -//// + " --chgroup Change the group of the files to the specified one.\n" -//// + " --chmod Change the permission of the files to the specified one.\n" -//// + " --bandwidth Limit bandwidth to this value in MB/second.\n" -// + " --mappers Number of mappers to use during the copy (mapreduce.job.maps).\n" -// + " -Dkey=value Other key-value fields"); -// System.out.println(" Clone all snapshots into tables matching the regex. " -// + "Generated tables can have a table prefix change."); + System.out.println(" " + EXPORT_SNAPSHOTS + " \n" + + " --dryRun Dry run.\n" + + " --snapshot Snapshot to restore.\n" + + " --copy-to Remote destination hdfs://\n" + + " --copy-to-local Flag to indicate that must copy to local hbase.rootdir (for imports)\n" + + " --copy-from Input folder hdfs:// (default hbase.rootdir)\n" + + " --target Target name for the snapshot.\n" +// + " --no-checksum-verify Do not verify checksum, use name+length only.\n" +// + " --no-target-verify Do not verify the integrity of the exported snapshot.\n" + + " --overwrite Rewrite the snapshot manifest if already exists.\n" +// + " --chuser Change the owner of the files to the specified one.\n" +// + " --chgroup Change the group of the files to the specified one.\n" +// + " --chmod Change the permission of the files to the specified one.\n" +// + " --bandwidth Limit bandwidth to this value in MB/second.\n" + + " --mappers Number of mappers to use during the copy (mapreduce.job.maps).\n" + + " -Dkey=value Other key-value fields"); + System.out.println(" Export a given snapshot an external location."); System.out.println(" " + EXEC + "[hadoop|yarn|hbase|hdfs]"); System.out.println(" Execute a MR job on the hadoop cluster. Use \"exec yarn jar ....\""); System.out.println(" " + DISABLE_TABLE + " [--dryRun]"); @@ -258,7 +258,10 @@ private void exec(String tool, List args) throws Exception { engine.setConfiguration(storageConfiguration, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, ""); MRExecutor mrExecutor = engine.getMRExecutor(); - mrExecutor.run(tool, args.toArray(new String[0])); + int exitError = mrExecutor.run(tool, args.toArray(new String[0])); + if (exitError != 0) { + throw new Exception("Exec failed with exit number '" + exitError + "'"); + } } private void exportSnapshot(String storageConfigurationPath, String snapshot, String copyTo, boolean copyToLocal, @@ -280,12 +283,17 @@ private void exportSnapshot(String storageConfigurationPath, String snapshot, St } args.add("--snapshot"); args.add(snapshot); + + args.add("--copy-to"); if (StringUtils.isNotEmpty(copyTo)) { - args.add("--copy-to"); args.add(copyTo); + if (copyToLocal) { + throw new Exception("Incompatible arguments `--copy-to` and `--copy-to-local`. Use only one of them"); + } } else if (copyToLocal) { - args.add("--copy-to"); args.add(hBaseManager.getConf().get(HConstants.HBASE_DIR)); + } else { + throw new Exception("Missing copy destination. Add either `--copy-to` or `--copy-to-local`"); } if (StringUtils.isNotEmpty(copyFrom)) { args.add("--copy-from"); @@ -310,7 +318,10 @@ private void exportSnapshot(String storageConfigurationPath, String snapshot, St engine.setConfiguration(storageConfiguration, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, ""); MRExecutor mrExecutor = engine.getMRExecutor(); - mrExecutor.run("hbase", args.toArray(new String[0])); + int exitError = mrExecutor.run("hbase", args.toArray(new String[0])); + if (exitError != 0) { + throw new Exception("ExportSnapshot failed with exit number '" + exitError + "'"); + } } } From d65e9262985c223d49cf0edbdaf5cf2ac4331171 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 12 Sep 2023 10:30:37 +0200 Subject: [PATCH 135/354] CodeGen: generated CLI and Clients --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++++++++--------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 2 +- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../opencga/client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../pyopencga/rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- 71 files changed, 88 insertions(+), 88 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index b023618b21f..ee9f603f739 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-08 OpenCB +* Copyright 2015-2023-09-12 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 93ae1e2ed26..832d5638d49 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-08 OpenCB +* Copyright 2015-2023-09-12 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 52e55fc3918..f36ae979df6 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 66dcf64a9a4..7f1a6a2d745 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 2b49e7247d0..5756f579584 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, users, user, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -15,32 +15,32 @@ setGeneric("studyClient", function(OpencgaR, study, group, variableSet, studies, # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, annotationSet, file, members, files, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individuals, members, individual, annotationSet, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, members, annotationSet, individuals, individual, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalyses, interpretation, clinicalAnalysis, interpretations, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 36200235c2a..5d84fa14614 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalyses, interpretation, clinicalAnalysis, interpretations, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 3ae1d7734b5..d192d6feec1 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index ffeb618a259..c582b23a93a 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 5db25da7799..f3eeac80df2 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, annotationSet, file, members, files, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 8aae23ad4a6..639683e171c 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 35b01f1ce71..1839f2cb8c9 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individuals, members, individual, annotationSet, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, members, annotationSet, individuals, individual, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index d61eb46c702..ed70e8df6cf 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 100a6e11e6f..c278a0c47e4 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 73e41e1eefe..11621e2cf87 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index bf61ce54f10..20fb425cc31 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 3911d6f5f9a..80d88c4cc79 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 44d4e5e58bb..32e64a3ecc9 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index ab51f6a4a8d..a9c9a3c90f8 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 671c70ca6c9..2a1d1bc3e82 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, users, user, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 911cd8ecc94..ad760abcd16 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-08 +# Autogenerated on: 2023-09-12 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index b4b8cc001d6..6aad0bc7842 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index ae7aef83174..16c679f642f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 912ef505958..94ab79f677d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 88cc7b62b23..2320ca7bbcd 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 61f2af635da..ad9ef470eaa 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 6280a7026e0..94b0e7cf66d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index ce6df1ebb2e..94eeead7197 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 28170cb2746..48b4524ea7f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index eb24455c52a..b89c47024df 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 68934888520..7945a8d65cc 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index b68b929186c..794c6ad3394 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 395b4593856..317a4af226c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index f2874078762..5cbb8f10fd4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 6216f78b94b..8f018861260 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index 93c49bdf998..adb4ce85938 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index c96321b199a..4801650a0f9 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 4b870042648..c1ffc952c9d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-08 +* Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 5edf0a466c6..2466edfccfd 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 874adaf6b67..446219c5a59 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 7b04cf20cdd..221fa4a68da 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 139868db04d..9d070dc8ec8 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 2f8e596a9a9..1d97f0d3b6f 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index ffd436567e0..5b11ceacd3a 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index a2455a0953f..27d76b733e7 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index f5e18645184..2e3f968ab05 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index da0324012b5..160bb589c50 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 1125c50f9f1..52f5cdde599 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index ca2c12b459b..0207e95847a 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index 9ed80c76552..f43c7394d71 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index ebe4b047ade..edefccf3e5a 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 09159e5bc29..d153ba9d316 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index bd11746e1de..d8c60b8d409 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 34884a86bb7..35617fde07f 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 2ce54e16534..daa6917728a 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-08 + * Autogenerated on: 2023-09-12 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 53fdc052390..28598b602eb 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 091948e5f53..d19895d21ba 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 83ab4dbb7da..cf8de0798c5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 445f4a66826..f7d6ad80542 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index fdf80361f55..6d47ea09d3c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 6642396fb41..65e3a070dce 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 45719c4b213..c6c028d3b3a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index a7ec7e99b6c..48e5b17de75 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 044a326dd67..07dd3d04b0d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index eeda7834cd9..d692f8e099c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index bee9670a694..d43227b33f8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index c3b4c0a9e38..bd29b4b1013 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 7cf520ad6c0..fcb5c944884 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 09a0d3d5e96..40cc9a63c08 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index c05e00b0e30..3f2ed4eae3e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 7a2081d3bbb..80e1746470a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 775c3130a2b..4297fbf08ae 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-08 + Autogenerated on: 2023-09-12 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From dc9cf1b0079b2999587c7053647fee2751b408f2 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 20 Sep 2023 13:28:26 +0200 Subject: [PATCH 136/354] Prepare release 2.11.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index adcb53e2d0e..75aeacc0f1b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index aaa0506b93b..1c574488bb2 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index fac7d8e548a..6fdf8029ab9 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 22a563296b0..b7e5033cc84 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index de52a8ef4e1..1e1394cc92a 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b8e72cfb0c1..2d131098bbd 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 2d6fd5a8da6..0ea519d70d4 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 65cebaebdda..2d636201f53 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index cafb6d1c2ac..5a2f15e6fac 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index aa79ec720fd..00921cbe8e6 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index b97d0472984..0875ba3e255 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 97db69b63b9..304c1557d11 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 1c27bd10350..26772d00f76 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index f1f99b70468..c8f68af4a3b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 03561e6c93d..f1ed98583f3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index c0e60a63db5..8553efb02eb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 1ea5e5a91d1..467b74c7698 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index c9a6b5604a3..4dffc327e82 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 49b680170d0..c7c836344e7 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index caa613c03e2..98bf8c79755 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 ../pom.xml diff --git a/pom.xml b/pom.xml index c0b9f02fd71..6c799623f4d 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.11.0 pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.11.0_dev - 2.11.0_dev - 5.7.0-SNAPSHOT - 2.11.0-SNAPSHOT - 4.11.0-SNAPSHOT - 2.11.0-SNAPSHOT + 2.11.0 + 2.11.0 + 5.7.0 + 2.11.0 + 4.11.0 + 2.11.0 0.2.0 From bce2a4765bcfc2ef53c8f09730b4fff19d6a815c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 20 Sep 2023 13:30:45 +0200 Subject: [PATCH 137/354] Prepare new development branch release-2.11.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 75aeacc0f1b..69f3bd0df08 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 1c574488bb2..fe7211f3a68 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 6fdf8029ab9..f44b772294c 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index b7e5033cc84..c3d5e42f079 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 1e1394cc92a..11653f27526 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 2d131098bbd..169c804bd9f 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 0ea519d70d4..d12a8eb58d6 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 2d636201f53..4d4280c8895 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 5a2f15e6fac..e0d6b60b973 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 00921cbe8e6..d2b371a6c79 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 0875ba3e255..3ba6bfd88e0 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 304c1557d11..e04af6512de 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 26772d00f76..76ffc1e9ce3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index c8f68af4a3b..09519b23291 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index f1ed98583f3..8d284fb1f33 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8553efb02eb..132c0f14681 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 467b74c7698..05620a5144b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 4dffc327e82..0d55a15b610 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index c7c836344e7..697f00a8e51 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 98bf8c79755..a1797410a10 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 6c799623f4d..890c5a2102b 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0 + 2.12.0-SNAPSHOT pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis @@ -42,12 +42,12 @@ - 2.11.0 - 2.11.0 - 5.7.0 - 2.11.0 - 4.11.0 - 2.11.0 + 2.12.0_dev + 2.12.0_dev + 5.8.0-SNAPSHOT + 2.12.0-SNAPSHOT + 4.12.0-SNAPSHOT + 2.12.0-SNAPSHOT 0.2.0 From e830904e1df1dd31dca636705efab7913270586a Mon Sep 17 00:00:00 2001 From: Juanfe Sanahuja <85166064+juanfeSanahuja@users.noreply.github.com> Date: Wed, 20 Sep 2023 19:34:45 +0200 Subject: [PATCH 138/354] Update test-analysis.yml --- .github/workflows/test-analysis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index a83cea15dc9..fe6350d59ca 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -75,6 +75,8 @@ jobs: run: mvn -B verify surefire-report:report --fail-never -P storage-hadoop,hdp3.1,${{ inputs.test_profile }} -Dcheckstyle.skip -Popencga-storage-hadoop-deps -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' ${{ inputs.mvn_opts }} - name: Publish Test Report uses: scacap/action-surefire-report@v1 + env: + NODE_OPTIONS: '--max_old_space_size=4096' ## Skip cancelled() ## https://docs.github.com/en/actions/learn-github-actions/expressions#cancelled if: success() || failure() From eb611a78dfbdf119a96433c56bb18d7b5c9252d4 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 28 Sep 2023 16:15:11 +0200 Subject: [PATCH 139/354] Created conf for print main usage #TASK-5055 --- opencga-app/pom.xml | 1 + .../opencb/opencga/app/cli/conf/Category.java | 56 +++++++++++++++ .../opencga/app/cli/conf/Configuration.java | 69 +++++++++++++++++++ .../opencb/opencga/app/cli/conf/Usage.java | 32 +++++++++ .../opencga/app/cli/main/OpencgaMain.java | 6 +- .../main/custom/CustomCliOptionsParser.java | 41 ++++++++++- .../opencga/app/cli/main/shell/Shell.java | 13 ++-- .../app/cli/main/utils/CommandLineUtils.java | 7 +- opencga-app/src/main/resources/usage.yml | 29 ++++++++ 9 files changed, 243 insertions(+), 11 deletions(-) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java create mode 100644 opencga-app/src/main/resources/usage.yml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index fe7211f3a68..539781cf264 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -346,6 +346,7 @@ + diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java new file mode 100644 index 00000000000..4ee5226b408 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java @@ -0,0 +1,56 @@ +package org.opencb.opencga.app.cli.conf; + +import java.util.Arrays; + +public class Category { + + private String name; + private String description; + private String[] options; + + public Category() { + } + + public Category(String name, String description, String[] options) { + this.name = name; + this.description = description; + this.options = options; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("Category{"); + sb.append("name='").append(name).append('\''); + sb.append(", description='").append(description).append('\''); + sb.append(", options=").append(Arrays.toString(options)); + sb.append('}'); + return sb.toString(); + } + + public String getName() { + return name; + } + + public Category setName(String name) { + this.name = name; + return this; + } + + public String getDescription() { + return description; + } + + public Category setDescription(String description) { + this.description = description; + return this; + } + + public String[] getOptions() { + return options; + } + + public Category setOptions(String[] options) { + this.options = options; + return this; + } +} diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java new file mode 100644 index 00000000000..155dd6695a6 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java @@ -0,0 +1,69 @@ +package org.opencb.opencga.app.cli.conf; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.IOException; + +public class Configuration { + /** + * The instance of Usage that stores the "usage" information + */ + private static Usage usage; + + /** + * LOGGER is an instance of the Logger class so that we can do proper + * logging + */ + private static final Logger logger = LoggerFactory.getLogger(Configuration.class); + + /** + * The instance of Configuration that this Class is storing + */ + private static Configuration instance = null; + + /** + * FILENAME is the file location of the configuration yml file + */ + public static final String FILENAME = "usage.yml"; + + public static Configuration getInstance() { + if (Configuration.instance == null) { + Configuration.instance = new Configuration(); + } + + return Configuration.instance; + } + + private static Usage loadConfiguration() throws IOException { + // Loading the YAML file from the /conf folder + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + String appHome = System.getProperty("app.home", System.getenv("OPENCGA_HOME")); + String conf = appHome + "/conf"; + File file = new File(conf + File.separator + FILENAME); + + // Mapping the config from the YAML file to the Configuration class + logger.info("Loading CLI configuration from: " + file.getAbsolutePath()); + ObjectMapper om = new ObjectMapper(new YAMLFactory()); + return om.readValue(file, Usage.class); + } + + public static Usage getUsage() { + if (usage == null) { + try { + usage = loadConfiguration(); + } catch (IOException e) { + logger.error("Loading CLI configuration from: " + FILENAME + " Failed"); + + } + } + return usage; + } + + public static void setUsage(Usage usage) { + Configuration.usage = usage; + } +} diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java new file mode 100644 index 00000000000..05623b74d3b --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java @@ -0,0 +1,32 @@ +package org.opencb.opencga.app.cli.conf; + +import java.util.Arrays; + +public class Usage { + + Category[] categories; + + public Usage() { + } + + public Usage(Category[] categories) { + this.categories = categories; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("Usage{"); + sb.append("categories=").append(Arrays.toString(categories)); + sb.append('}'); + return sb.toString(); + } + + public Category[] getCategories() { + return categories; + } + + public Usage setCategories(Category[] categories) { + this.categories = categories; + return this; + } +} diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java index 296b1be2d75..b49256292c6 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaMain.java @@ -65,6 +65,8 @@ public static void main(String[] args) { } } + + private static void checkMode(String[] args) { if (ArrayUtils.contains(args, "--shell")) { setMode(Mode.SHELL); @@ -130,7 +132,7 @@ public static void executeShell(String[] args) { } Shell.printShellHeaderMessage(); // Create a shell executor instance - shell = new Shell(options); + shell = new Shell(options, new OpenCgaCompleterImpl(), new CommandProcessor()); logger.debug("Shell created "); // Launch execute command to begin the execution shell.execute(); @@ -162,7 +164,7 @@ public static String[] parseCliParams(String[] args) { } logger.debug("CLI parsed params ::: " + CommandLineUtils.argsToString(args)); String shortcut = CommandLineUtils.getShortcut(args); - args = CommandLineUtils.processShortCuts(args); + args = CommandLineUtils.processShortCuts(args, new OpencgaCliOptionsParser()); if (args != null) { logger.debug("Process shortcut result ::: " + CommandLineUtils.argsToString(args)); } else { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java index c0d30753a2f..dfe083f70e3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java @@ -7,11 +7,16 @@ import org.opencb.opencga.app.cli.CliOptionsParser; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.admin.AdminCliOptionsParser; +import org.opencb.opencga.app.cli.conf.Category; +import org.opencb.opencga.app.cli.conf.Configuration; +import org.opencb.opencga.app.cli.conf.Usage; import org.opencb.opencga.app.cli.main.OpencgaMain; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class CustomCliOptionsParser extends CliOptionsParser { @@ -67,6 +72,7 @@ public void printUsage() { } else { PrintUtils.println(PrintUtils.getKeyValueAsFormattedString("Usage:", " " + getPrefix() + "[-h|--help] [--shell] [--host] [--version] [options]")); } + System.err.println(); printMainUsage(); System.err.println(); @@ -97,6 +103,37 @@ private String getPrefix() { return "opencga.sh "; } + @Override + protected void printMainUsage() { + Usage usage = Configuration.getUsage(); + Category[] categories = usage.getCategories(); + for (Category category : categories) { + String[] options = category.getOptions(); + PrintUtils.println(PrintUtils.format(category.getDescription(), PrintUtils.Color.GREEN)); + for (int i = 0; i < options.length; i++) { + for (String command : jCommander.getCommands().keySet()) { + if (command.equals(options[i])) { + PrintUtils.printCommandHelpFormattedString(command, jCommander.getCommandDescription(command)); + } + } + } + System.err.println(); + } + printOpencgaCommands(); + } + + private void printOpencgaCommands() { + Map opencgaCommands = getOpencgaCommands(); + if (!OpencgaMain.isShellMode()) { + PrintUtils.println(PrintUtils.format("Opencga options:", PrintUtils.Color.GREEN)); + } else { + PrintUtils.println(PrintUtils.format("Opencga commands:", PrintUtils.Color.GREEN)); + } + for (Map.Entry entry : opencgaCommands.entrySet()) { + PrintUtils.printCommandHelpFormattedString(entry.getKey().toString(), entry.getValue().toString()); + } + } + /* @Override protected void printMainUsage() { Set analysisCommands = new HashSet<>(Arrays.asList("alignments", "variant", "clinical")); @@ -153,7 +190,7 @@ protected void printMainUsage() { for (Map.Entry entry : opencgaCommands.entrySet()) { PrintUtils.printCommandHelpFormattedString(entry.getKey().toString(), entry.getValue().toString()); } - } + }*/ private Map getOpencgaCommands() { Map h = new HashMap<>(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/shell/Shell.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/shell/Shell.java index 02ff4bc4321..00f8de6d68f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/shell/Shell.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/shell/Shell.java @@ -11,6 +11,7 @@ import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.main.OpenCgaCompleterImpl; +import org.opencb.opencga.app.cli.main.OpencgaCliOptionsParser; import org.opencb.opencga.app.cli.main.OpencgaMain; import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.processors.CommandProcessor; @@ -36,13 +37,17 @@ public class Shell extends OpencgaCommandExecutor { // Create a command processor to process all the shell commands - private final CommandProcessor processor = new CommandProcessor(); + private final CommandProcessor processor; private LineReader lineReader = null; private Terminal terminal = null; private String host = null; - public Shell(GeneralCliOptions.CommonCommandOptions options) throws CatalogAuthenticationException { + private Completer completer; + + public Shell(GeneralCliOptions.CommonCommandOptions options, Completer completer, CommandProcessor processor) throws CatalogAuthenticationException { super(options); + this.completer=completer; + this.processor=processor; if (options.host != null) { host = options.host; } @@ -104,7 +109,7 @@ private LineReader getTerminal() { reader = LineReaderBuilder.builder() .terminal(terminal) .highlighter(new DefaultHighlighter()) - .history(defaultHistory).completer(new OpenCgaCompleterImpl()) + .history(defaultHistory).completer(this.completer) .build(); } catch (Exception e) { CommandLineUtils.error("Failed to create terminal ", e); @@ -209,7 +214,7 @@ public String[] parseParams(String[] args) throws CatalogAuthenticationException return args; } } - return CommandLineUtils.processShortCuts(args); + return CommandLineUtils.processShortCuts(args, new OpencgaCliOptionsParser()); } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java index 4454887584b..b0f83ec3886 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/utils/CommandLineUtils.java @@ -4,6 +4,7 @@ import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.main.OpencgaCliOptionsParser; import org.opencb.opencga.app.cli.main.OpencgaMain; +import org.opencb.opencga.app.cli.main.custom.CustomCliOptionsParser; import org.opencb.opencga.core.common.GitRepositoryState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,8 +62,8 @@ public static void error(String message, Exception e) { } } - public static String[] processShortCuts(String[] args) { - OpencgaCliOptionsParser cliOptionsParser = new OpencgaCliOptionsParser(); + public static String[] processShortCuts(String[] args, CustomCliOptionsParser parser) { + switch (getShortcut(args)) { case "login": return LoginUtils.parseLoginCommand(args); @@ -78,7 +79,7 @@ public static String[] processShortCuts(String[] args) { } } try { - cliOptionsParser.printUsage(args); + parser.printUsage(args); } catch (Exception e) { // malformed command return args; diff --git a/opencga-app/src/main/resources/usage.yml b/opencga-app/src/main/resources/usage.yml new file mode 100644 index 00000000000..a3451aea6a7 --- /dev/null +++ b/opencga-app/src/main/resources/usage.yml @@ -0,0 +1,29 @@ +categories: + - name: catalog + description: "Catalog commands:" + options: + - users + - projects + - studies + - files + - jobs + - individuals + - families + - panels + - samples + - cohorts + - meta + - name: Analysis + description: "Analysis commands:" + options: + - alignments + - variant + - clinical + - name: Operation + description: "Operation commands:" + options: + - operations + - name: Administrator + description: "Administrator commands:" + options: + - admin From df56810cef4f15f77d38a8b30c2250b1275b3f51 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 4 Oct 2023 12:53:25 +0200 Subject: [PATCH 140/354] cicd: workflow_dispatch: #TASK-5092 --- .github/workflows/pull-request-merge.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index 3e3e5bb46b9..cf334ca8ed6 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -7,6 +7,7 @@ on: - release-* types: - closed + workflow_dispatch: jobs: build: From ba5d9ec65ff731da2996b3caf1a9bc5ee12d5cbd Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 4 Oct 2023 13:36:20 +0200 Subject: [PATCH 141/354] cicd: Pull Request Merge Workflow workflow_dispatch #TASK-5092 --- .github/workflows/pull-request-merge.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index cf334ca8ed6..7d6fcb8818f 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -3,18 +3,21 @@ name: "Pull Request Merge Workflow" on: pull_request: branches: - - develop - - release-* + - "develop" + - "release-*" types: - closed workflow_dispatch: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + with: + maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' delete-docker: - uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@develop + uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@release-4.8.x + needs: build with: cli: python3 ./build/cloud/docker/docker-build.py delete --images base --tag ${{ github.head_ref }} secrets: inherit From ce32db4042b07fd7fa60fc1927a67070f63ac871 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 4 Oct 2023 17:46:09 +0200 Subject: [PATCH 142/354] cicd: undo step by step #TASK-5092 --- .github/workflows/pull-request-merge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull-request-merge.yml b/.github/workflows/pull-request-merge.yml index 7d6fcb8818f..c3ca5077a33 100644 --- a/.github/workflows/pull-request-merge.yml +++ b/.github/workflows/pull-request-merge.yml @@ -11,12 +11,12 @@ on: jobs: build: - uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/build-java-app-workflow.yml@develop with: maven_opts: -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' delete-docker: - uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@release-4.8.x + uses: opencb/java-common-libs/.github/workflows/delete-docker-hub-workflow.yml@develop needs: build with: cli: python3 ./build/cloud/docker/docker-build.py delete --images base --tag ${{ github.head_ref }} From a7fade952ee04637f2cedb7e558506d394e432e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 11 Oct 2023 15:27:44 +0100 Subject: [PATCH 143/354] docker: Ensure `unzip` is installed in the docker. #TASK-5006 --- opencga-app/app/cloud/docker/opencga-base/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-app/app/cloud/docker/opencga-base/Dockerfile b/opencga-app/app/cloud/docker/opencga-base/Dockerfile index d3eee2266d2..5c328383c33 100644 --- a/opencga-app/app/cloud/docker/opencga-base/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-base/Dockerfile @@ -7,7 +7,7 @@ ARG BUILD_PATH="." ENV OPENCGA_HOME=/opt/opencga ENV OPENCGA_CONFIG_DIR=${OPENCGA_HOME}/conf -RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpass ca-certificates curl gnupg jq ncurses-bin && \ +RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpass ca-certificates curl gnupg jq ncurses-bin unzip && \ ## Install Docker repository install -m 0755 -d /etc/apt/keyrings && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ From c65fae631cfc2d7e237bc579fff7ba3c5122f187 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 13 Oct 2023 12:21:37 +0200 Subject: [PATCH 144/354] CLI: Autogenerated classes #TASK-5055 --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++++++++--------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 2 +- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 4 ++-- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 4 ++-- .../client/rest/clients/AlignmentClient.java | 4 ++-- .../rest/clients/ClinicalAnalysisClient.java | 4 ++-- .../client/rest/clients/CohortClient.java | 4 ++-- .../rest/clients/DiseasePanelClient.java | 4 ++-- .../client/rest/clients/FamilyClient.java | 4 ++-- .../client/rest/clients/FileClient.java | 4 ++-- .../client/rest/clients/GA4GHClient.java | 4 ++-- .../client/rest/clients/IndividualClient.java | 4 ++-- .../opencga/client/rest/clients/JobClient.java | 4 ++-- .../client/rest/clients/MetaClient.java | 4 ++-- .../client/rest/clients/ProjectClient.java | 4 ++-- .../client/rest/clients/SampleClient.java | 4 ++-- .../client/rest/clients/StudyClient.java | 4 ++-- .../client/rest/clients/UserClient.java | 4 ++-- .../client/rest/clients/VariantClient.java | 4 ++-- .../rest/clients/VariantOperationClient.java | 4 ++-- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 4 ++-- .../pyopencga/rest_clients/alignment_client.py | 4 ++-- .../rest_clients/clinical_analysis_client.py | 4 ++-- .../pyopencga/rest_clients/cohort_client.py | 4 ++-- .../rest_clients/disease_panel_client.py | 4 ++-- .../pyopencga/rest_clients/family_client.py | 4 ++-- .../pyopencga/rest_clients/file_client.py | 4 ++-- .../pyopencga/rest_clients/ga4gh_client.py | 4 ++-- .../rest_clients/individual_client.py | 4 ++-- .../pyopencga/rest_clients/job_client.py | 4 ++-- .../pyopencga/rest_clients/meta_client.py | 4 ++-- .../pyopencga/rest_clients/project_client.py | 4 ++-- .../pyopencga/rest_clients/sample_client.py | 4 ++-- .../pyopencga/rest_clients/study_client.py | 4 ++-- .../pyopencga/rest_clients/user_client.py | 4 ++-- .../pyopencga/rest_clients/variant_client.py | 4 ++-- .../rest_clients/variant_operation_client.py | 4 ++-- .../server/generator/config/Options.java | 10 ++++++++++ .../writers/cli/ParserCliRestApiWriter.java | 6 +++--- .../src/main/resources/cli-config.yaml | 1 + 74 files changed, 136 insertions(+), 125 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index ee9f603f739..f389a3aa97d 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-12 OpenCB +* Copyright 2015-2023-10-13 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 832d5638d49..362952296fd 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-12 OpenCB +* Copyright 2015-2023-10-13 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index f36ae979df6..1191ed5f8ec 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 7f1a6a2d745..d063e05178c 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 5756f579584..9a97a861e38 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,31 +1,31 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, users, filterId, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## ## ProjectClient -setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, params=NULL, ...) +setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, params=NULL, ...) standardGeneric("projectClient")) # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, study, group, variableSet, studies, members, templateId, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, variableSet, study, group, members, studies, templateId, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, folder, annotationSet, members, files, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, members, samples, annotationSet, sample, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## @@ -35,12 +35,12 @@ setGeneric("individualClient", function(OpencgaR, members, annotationSet, indivi # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, members, cohorts, annotationSet, cohort, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, clinicalAnalyses, members, interpretations, interpretation, clinicalAnalysis, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 5d84fa14614..773d989a9c3 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalyses, members, interpretations, interpretation, clinicalAnalysis, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index d192d6feec1..5aae6fd0d8d 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, cohorts, annotationSet, cohort, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index c582b23a93a..171ef32e552 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index f3eeac80df2..863362a0fab 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, folder, annotationSet, members, files, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 639683e171c..f821321ee73 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 1839f2cb8c9..4c3851ff19d 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index ed70e8df6cf..5350c0cf406 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, jobs, job, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index c278a0c47e4..62104d31e40 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 11621e2cf87..3a5060f0bf7 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 20fb425cc31..fc5fbf27505 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 80d88c4cc79..d4e12d53ed4 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -34,7 +34,7 @@ #' [*]: Required parameter #' @export -setMethod("projectClient", "OpencgaR", function(OpencgaR, projects, project, endpointName, params=NULL, ...) { +setMethod("projectClient", "OpencgaR", function(OpencgaR, project, projects, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/projects/create: diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 32e64a3ecc9..ccaa213404a 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, samples, annotationSet, sample, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index a9c9a3c90f8..da33ef1dcda 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, study, group, variableSet, studies, members, templateId, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, variableSet, study, group, members, studies, templateId, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 2a1d1bc3e82..794dca2d6ac 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, users, filterId, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index ad760abcd16..6e96f4f0861 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 6aad0bc7842..5042001cf15 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 16c679f642f..bfddd8489e0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 94ab79f677d..ce62a9d1ce7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -60,7 +60,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 2320ca7bbcd..ddb954f196b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index ad9ef470eaa..e452bbc676a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 94b0e7cf66d..c191c23068b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 94eeead7197..3e85a97a6ed 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 48b4524ea7f..85868ed9973 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index b89c47024df..4c4a6d76a0f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 7945a8d65cc..acb7fb63958 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 794c6ad3394..4c1d5711439 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 317a4af226c..e40a50c41b7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 5cbb8f10fd4..c9c9823b6e7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 8f018861260..c96cb1ab0d7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index adb4ce85938..6709592e07d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 4801650a0f9..e60a27a74b5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index c1ffc952c9d..15ba9cc560c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 2466edfccfd..e2fdc9145aa 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 446219c5a59..d8bf3e8fed2 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 221fa4a68da..6a46b107c2e 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 9d070dc8ec8..6d6f61ff6ac 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 1d97f0d3b6f..818ba7dd180 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 5b11ceacd3a..c742a07a853 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 27d76b733e7..89dd1e6b218 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index 2e3f968ab05..289007f6967 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 160bb589c50..30ced0b72fe 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 52f5cdde599..6416d751b43 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 0207e95847a..d0a1520ba62 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index f43c7394d71..55d7a338e6c 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index edefccf3e5a..cda36298ddc 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index d153ba9d316..f0a1df7905c 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index d8c60b8d409..ad18ab4bce7 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 35617fde07f..55acc2896d9 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index daa6917728a..f4e2cb7e644 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 28598b602eb..edeedde55a0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/admin """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index d19895d21ba..60720a7208d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index cf8de0798c5..d75c2131ee0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index f7d6ad80542..65fbdc4484d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 6d47ea09d3c..ed5e0f4197b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 65e3a070dce..138b5f4d971 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index c6c028d3b3a..f6ee295639b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 48e5b17de75..cadaa417e65 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 07dd3d04b0d..19717e0e955 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index d692f8e099c..5ca221e9a5c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index d43227b33f8..bfb15ef62c9 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index bd29b4b1013..7f8831b7bd4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index fcb5c944884..f1a30343b8b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 40cc9a63c08..402e33c5a90 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 3f2ed4eae3e..719503f5c0f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 80e1746470a..2b7a18864c5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 4297fbf08ae..e10cdce35b0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/operation """ diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/config/Options.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/config/Options.java index 12e8f7d5e62..4a8d2e42646 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/config/Options.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/config/Options.java @@ -7,6 +7,7 @@ public class Options { private String outputDir; + private String version; private List ignoreTypes; @@ -22,6 +23,15 @@ public Options setOutputDir(String outputDir) { return this; } + public String getVersion() { + return version; + } + + public Options setVersion(String version) { + this.version = version; + return this; + } + private String getFolderAsPackage(String inputDir) { String res = ""; if (inputDir.contains("/src/main/java/")) { diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ParserCliRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ParserCliRestApiWriter.java index 828d12be889..673f60fa847 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ParserCliRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ParserCliRestApiWriter.java @@ -87,7 +87,7 @@ protected String getClassImports(String key) { protected String getClassHeader(String key) { StringBuilder sb = new StringBuilder(); sb.append("\n"); - sb.append("public class OpencgaCliOptionsParser extends CustomCliOptionsParser {\n"); + sb.append("public class "+this.config.getOptions().getVersion()+"CliOptionsParser extends CustomCliOptionsParser {\n"); sb.append("\n"); for (RestCategory restCategory : availableCategories.values()) { sb.append(" private final " + getAsClassName(restCategory.getName()) + "CommandOptions " + getAsVariableName(restCategory.getName()) + @@ -96,7 +96,7 @@ protected String getClassHeader(String key) { sb.append("\n"); sb.append(" enum OutputFormat {IDS, ID_CSV, NAME_ID_MAP, ID_LIST, RAW, PRETTY_JSON, PLAIN_JSON}\n"); sb.append("\n"); - sb.append(" public OpencgaCliOptionsParser() {\n"); + sb.append(" public "+this.config.getOptions().getVersion()+"CliOptionsParser() {\n"); sb.append("\n"); sb.append(" jCommander.setExpandAtSign(false);\n"); @@ -165,6 +165,6 @@ protected String getClassMethods(String key) { @Override protected String getClassFileName(String key) { - return config.getOptions().getOutputDir() + "/OpencgaCliOptionsParser.java"; + return config.getOptions().getOutputDir() + "/"+this.config.getOptions().getVersion()+"CliOptionsParser.java"; } } diff --git a/opencga-server/src/main/resources/cli-config.yaml b/opencga-server/src/main/resources/cli-config.yaml index b3a3c302120..c9f45b1fbd0 100644 --- a/opencga-server/src/main/resources/cli-config.yaml +++ b/opencga-server/src/main/resources/cli-config.yaml @@ -1,4 +1,5 @@ options: + version: Opencga outputDir: opencga-app/src/main/java/org/opencb/opencga/app/cli/main/ ignoreTypes: - string From b55c6fa91811a5e4c5151bb4e0e802c4a97c41ef Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 13 Oct 2023 13:23:07 +0200 Subject: [PATCH 145/354] update versions for merge develop --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index b9c7f8694ea..447bab87c17 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 2a748dde1f1..e2752f5594c 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index aa3f8f27880..c5c861592df 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 8fc3bad15be..1f83b401e9c 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 8927e6621df..22f9afe2a5e 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index c572f719422..1702c7bba85 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index df18e582d34..52a0345317a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 63512a8d1df..f6ed09aea88 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 5452e074c93..d11c03421a4 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 476bf4d8c23..b317e9e25d6 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 5be633ff25b..329c7893d68 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 7dfaadf2f8a..4812998a7c5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 1c27bd10350..76ffc1e9ce3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index f1f99b70468..09519b23291 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 03561e6c93d..8d284fb1f33 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 72963c4ee32..8c911f9f193 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 1ea5e5a91d1..05620a5144b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 703482490e4..2ddd64375e6 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 9320c585f43..4bd14700158 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index d74e6f63e76..b3cbb444ba9 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 9bcc3b3e965..93c2d385552 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.11.0-SNAPSHOT + 2.12.0-SNAPSHOT pom OpenCGA OpenCGA projects implements a big data platform for genomic data analysis From 89dc3b40658357e2cadb4b2dccd5ae7e4779f03a Mon Sep 17 00:00:00 2001 From: imedina Date: Fri, 13 Oct 2023 17:15:19 +0100 Subject: [PATCH 146/354] pom: update dependency plugin version --- opencga-analysis/pom.xml | 6 +++- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 6 +++- opencga-client/pom.xml | 22 +++++++++++++ opencga-server/pom.xml | 3 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- .../opencga-storage-benchmark/pom.xml | 6 +++- opencga-storage/opencga-storage-core/pom.xml | 5 ++- .../opencga-storage-hadoop-core/pom.xml | 14 +++++--- .../opencga-storage-hadoop-deps/pom.xml | 2 +- .../opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 4 +++ pom.xml | 32 +++++++++++-------- 14 files changed, 78 insertions(+), 30 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 447bab87c17..74b0e63c976 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -160,6 +160,10 @@ + + org.apache.avro + avro + org.apache.commons commons-collections4 @@ -272,7 +276,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index a1f97e11be7..0d99f55de0a 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -571,7 +571,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index c5c861592df..7ef603a4028 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -168,6 +168,10 @@ org.mongodb bson + + com.microsoft.azure + azure-client-runtime + com.microsoft.azure azure-client-authentication @@ -254,7 +258,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 1f83b401e9c..40e794250f0 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -164,6 +164,28 @@ + + org.apache.maven.plugins + maven-dependency-plugin + 3.6.0 + + + analyze + + analyze-only + + + true + + org.mortbay.jetty:servlet-api:jar:2.5-20081211 + + + org.mortbay.jetty:servlet-api:jar:2.5-20081211 + + + + + diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index f6ed09aea88..6d6abc7e22e 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -195,7 +195,6 @@ com.github.samtools htsjdk - org.glassfish.jersey.core jersey-client @@ -340,7 +339,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index d11c03421a4..e743b5d29a7 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -260,7 +260,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index b317e9e25d6..9062d6dfe78 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -86,6 +86,10 @@ com.beust jcommander + + com.fasterxml.jackson.core + jackson-core + com.fasterxml.jackson.core jackson-databind @@ -147,7 +151,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index f7d20078ac8..049c2809a00 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -188,7 +188,10 @@ com.github.samtools htsjdk - + + com.databricks + SnpEff + diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index fbd48e2c6ca..41ac9fcef89 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -292,7 +292,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze @@ -302,13 +302,17 @@ true - commons-logging:commons-logging:jar:${commons-logging.version} + + commons-logging:commons-logging:jar:${commons-logging.version} - org.glassfish.jersey.containers:jersey-container-servlet:jar:* + + org.glassfish.jersey.containers:jersey-container-servlet:jar:* - org.apache.solr:solr* + + org.apache.solr:solr* - org.glassfish.jersey.inject:jersey-hk2* + + org.glassfish.jersey.inject:jersey-hk2* diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8c911f9f193..c7ebb3e1923 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -930,7 +930,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 2ddd64375e6..e8a0d29e089 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -167,7 +167,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 4bd14700158..0b4bd7d486f 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -93,7 +93,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index b3cbb444ba9..70e0db7be37 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -61,6 +61,10 @@ commons-io commons-io + + com.fasterxml.jackson.core + jackson-core + junit junit diff --git a/pom.xml b/pom.xml index 168a905ad84..6a4ec8edbcf 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ opencga 2.12.0-SNAPSHOT pom + OpenCGA OpenCGA projects implements a big data platform for genomic data analysis http://docs.opencb.org/display/opencga/ @@ -63,6 +64,7 @@ 9.4.17.v20190418 19.0 2.23.0 + 4.3.1 4.8.2 3.12.0 2.5 @@ -85,7 +87,7 @@ 2.3 2.8.0 9.31 - 1.5.4 + 1.5.4 4.5.6 5.64.4 1.6.1 @@ -110,12 +112,11 @@ 1.1.7.6 ${parquet-common.version} - - - opencga opencga-env.sh - hdp3.1 + + hdp3.1 + opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id-default} @@ -125,21 +126,17 @@ opencga-storage-hadoop-deps-${opencga-storage-hadoop-deps.id} - 5.0 opencb https://sonarcloud.io false - 1.8 UTF-8 - false false 3.1.0 - ${parquet-common.version} 1.7.0 1.1.3 @@ -803,6 +800,11 @@ htsjdk ${htsjdk.version} + + com.databricks + SnpEff + ${snpeff.version} + org.apache.parquet parquet-avro @@ -866,10 +868,15 @@ nimbus-jose-jwt ${nimbus-jose-jwt.version} + + com.microsoft.azure + azure-client-runtime + ${azure-client.version} + com.microsoft.azure azure-client-authentication - ${azure-client-authentication.version} + ${azure-client.version} org.apache.httpcomponents @@ -954,8 +961,6 @@ grep4j ${grep4j.version} - - org.redisson redisson @@ -1162,7 +1167,6 @@ - org.apache.maven.plugins maven-surefire-plugin @@ -1182,7 +1186,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.5.0 + 3.6.0 analyze From 080dcf94eed13c39447060fd206818fc6e2137f0 Mon Sep 17 00:00:00 2001 From: imedina Date: Tue, 17 Oct 2023 11:48:29 +0100 Subject: [PATCH 147/354] Refactor new CLI Usage --- .../Category.java => config/CliCategory.java} | 14 ++--- .../CliConfiguration.java} | 59 ++++++++++--------- .../{conf/Usage.java => config/CliUsage.java} | 14 ++--- .../main/custom/CustomCliOptionsParser.java | 23 ++++---- .../resources/{usage.yml => cli-usage.yml} | 0 5 files changed, 57 insertions(+), 53 deletions(-) rename opencga-app/src/main/java/org/opencb/opencga/app/cli/{conf/Category.java => config/CliCategory.java} (74%) rename opencga-app/src/main/java/org/opencb/opencga/app/cli/{conf/Configuration.java => config/CliConfiguration.java} (51%) rename opencga-app/src/main/java/org/opencb/opencga/app/cli/{conf/Usage.java => config/CliUsage.java} (60%) rename opencga-app/src/main/resources/{usage.yml => cli-usage.yml} (100%) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliCategory.java similarity index 74% rename from opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java rename to opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliCategory.java index 4ee5226b408..e29646f79b8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Category.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliCategory.java @@ -1,17 +1,17 @@ -package org.opencb.opencga.app.cli.conf; +package org.opencb.opencga.app.cli.config; import java.util.Arrays; -public class Category { +public class CliCategory { private String name; private String description; private String[] options; - public Category() { + public CliCategory() { } - public Category(String name, String description, String[] options) { + public CliCategory(String name, String description, String[] options) { this.name = name; this.description = description; this.options = options; @@ -31,7 +31,7 @@ public String getName() { return name; } - public Category setName(String name) { + public CliCategory setName(String name) { this.name = name; return this; } @@ -40,7 +40,7 @@ public String getDescription() { return description; } - public Category setDescription(String description) { + public CliCategory setDescription(String description) { this.description = description; return this; } @@ -49,7 +49,7 @@ public String[] getOptions() { return options; } - public Category setOptions(String[] options) { + public CliCategory setOptions(String[] options) { this.options = options; return this; } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java similarity index 51% rename from opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java rename to opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java index 155dd6695a6..0f8a810dc2d 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Configuration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java @@ -1,4 +1,4 @@ -package org.opencb.opencga.app.cli.conf; +package org.opencb.opencga.app.cli.config; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; @@ -8,62 +8,63 @@ import java.io.File; import java.io.IOException; -public class Configuration { +public class CliConfiguration { + /** - * The instance of Usage that stores the "usage" information + * The instance of Configuration that this Class is storing */ - private static Usage usage; + private static CliConfiguration instance; /** - * LOGGER is an instance of the Logger class so that we can do proper - * logging + * The instance of Usage that stores the "usage" information */ - private static final Logger logger = LoggerFactory.getLogger(Configuration.class); + private static CliUsage cliUsage; /** - * The instance of Configuration that this Class is storing + * FILENAME is the file location of the configuration yml file */ - private static Configuration instance = null; + public static final String CLI_USAGE_FILENAME = "cli-usage.yml"; /** - * FILENAME is the file location of the configuration yml file + * LOGGER is an instance of the Logger class so that we can do proper + * logging */ - public static final String FILENAME = "usage.yml"; + private static final Logger logger = LoggerFactory.getLogger(CliConfiguration.class); - public static Configuration getInstance() { - if (Configuration.instance == null) { - Configuration.instance = new Configuration(); + public static CliConfiguration getInstance() { + if (CliConfiguration.instance == null) { + CliConfiguration.instance = new CliConfiguration(); } - - return Configuration.instance; + return CliConfiguration.instance; } - private static Usage loadConfiguration() throws IOException { + private static CliUsage loadConfiguration() throws IOException { // Loading the YAML file from the /conf folder - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); String appHome = System.getProperty("app.home", System.getenv("OPENCGA_HOME")); String conf = appHome + "/conf"; - File file = new File(conf + File.separator + FILENAME); + File file = new File(conf + File.separator + CLI_USAGE_FILENAME); // Mapping the config from the YAML file to the Configuration class logger.info("Loading CLI configuration from: " + file.getAbsolutePath()); - ObjectMapper om = new ObjectMapper(new YAMLFactory()); - return om.readValue(file, Usage.class); + ObjectMapper yamlObjectMapper = new ObjectMapper(new YAMLFactory()); + return yamlObjectMapper.readValue(file, CliUsage.class); } - public static Usage getUsage() { - if (usage == null) { + /* + * We keep an instance of cliUsage for the Shell + */ + public static CliUsage getUsage() { + if (cliUsage == null) { try { - usage = loadConfiguration(); + cliUsage = loadConfiguration(); } catch (IOException e) { - logger.error("Loading CLI configuration from: " + FILENAME + " Failed"); - + logger.error("Loading CLI configuration from: " + CLI_USAGE_FILENAME + " Failed"); } } - return usage; + return cliUsage; } - public static void setUsage(Usage usage) { - Configuration.usage = usage; + public static void setUsage(CliUsage cliUsage) { + CliConfiguration.cliUsage = cliUsage; } } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliUsage.java similarity index 60% rename from opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java rename to opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliUsage.java index 05623b74d3b..406dac103a8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/conf/Usage.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliUsage.java @@ -1,15 +1,15 @@ -package org.opencb.opencga.app.cli.conf; +package org.opencb.opencga.app.cli.config; import java.util.Arrays; -public class Usage { +public class CliUsage { - Category[] categories; + CliCategory[] categories; - public Usage() { + public CliUsage() { } - public Usage(Category[] categories) { + public CliUsage(CliCategory[] categories) { this.categories = categories; } @@ -21,11 +21,11 @@ public String toString() { return sb.toString(); } - public Category[] getCategories() { + public CliCategory[] getCategories() { return categories; } - public Usage setCategories(Category[] categories) { + public CliUsage setCategories(CliCategory[] categories) { this.categories = categories; return this; } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java index dfe083f70e3..68aca5089ed 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java @@ -7,9 +7,9 @@ import org.opencb.opencga.app.cli.CliOptionsParser; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.admin.AdminCliOptionsParser; -import org.opencb.opencga.app.cli.conf.Category; -import org.opencb.opencga.app.cli.conf.Configuration; -import org.opencb.opencga.app.cli.conf.Usage; +import org.opencb.opencga.app.cli.config.CliCategory; +import org.opencb.opencga.app.cli.config.CliConfiguration; +import org.opencb.opencga.app.cli.config.CliUsage; import org.opencb.opencga.app.cli.main.OpencgaMain; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,16 +103,19 @@ private String getPrefix() { return "opencga.sh "; } + /** + * Read cli-usage.yml file to print the usage. + */ @Override protected void printMainUsage() { - Usage usage = Configuration.getUsage(); - Category[] categories = usage.getCategories(); - for (Category category : categories) { - String[] options = category.getOptions(); - PrintUtils.println(PrintUtils.format(category.getDescription(), PrintUtils.Color.GREEN)); - for (int i = 0; i < options.length; i++) { + CliUsage cliUsage = CliConfiguration.getUsage(); + CliCategory[] categories = cliUsage.getCategories(); + for (CliCategory cliCategory : categories) { + String[] options = cliCategory.getOptions(); + PrintUtils.println(PrintUtils.format(cliCategory.getDescription(), PrintUtils.Color.GREEN)); + for (String option : options) { for (String command : jCommander.getCommands().keySet()) { - if (command.equals(options[i])) { + if (command.equals(option)) { PrintUtils.printCommandHelpFormattedString(command, jCommander.getCommandDescription(command)); } } diff --git a/opencga-app/src/main/resources/usage.yml b/opencga-app/src/main/resources/cli-usage.yml similarity index 100% rename from opencga-app/src/main/resources/usage.yml rename to opencga-app/src/main/resources/cli-usage.yml From fa4e8a599dfc8e6bbd0eb662a40443cbbd4beede Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 19 Oct 2023 15:17:19 +0200 Subject: [PATCH 148/354] pom: added ignoredUnusedDeclaredDependencies #TASK-2095 --- .../opencga-storage-hadoop-core/pom.xml | 11 +---------- pom.xml | 4 +++- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 41ac9fcef89..9f4bcdbe4dc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -303,16 +303,7 @@ true - commons-logging:commons-logging:jar:${commons-logging.version} - - - org.glassfish.jersey.containers:jersey-container-servlet:jar:* - - - org.apache.solr:solr* - - - org.glassfish.jersey.inject:jersey-hk2* + * diff --git a/pom.xml b/pom.xml index 6a4ec8edbcf..d7f450f621e 100644 --- a/pom.xml +++ b/pom.xml @@ -1195,13 +1195,15 @@ true + + * + - From d4bbc30e6668be3a8c6f7e727defe207cc428a89 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 19 Oct 2023 18:08:16 +0200 Subject: [PATCH 149/354] pom: Added develop dependencies to review #TASK-2095 --- opencga-analysis/pom.xml | 46 ++++-------------- opencga-app/pom.xml | 40 ++++++++++++---- opencga-catalog/pom.xml | 36 +++++++++++--- opencga-client/pom.xml | 22 +++++++++ opencga-clinical/pom.xml | 48 +++++++++++++++++++ opencga-core/pom.xml | 15 ++++-- opencga-master/pom.xml | 11 +++++ opencga-server/pom.xml | 27 +++++++++++ opencga-storage/opencga-storage-app/pom.xml | 21 ++++---- .../opencga-storage-benchmark/pom.xml | 13 +++-- opencga-storage/opencga-storage-core/pom.xml | 28 ++++++++++- .../opencga-storage-hadoop-core/pom.xml | 6 --- .../opencga-storage-server/pom.xml | 21 +++++++- pom.xml | 35 +++++++++++--- 14 files changed, 283 insertions(+), 86 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 74b0e63c976..8de461ca8ff 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -52,10 +52,6 @@ test-jar test - - org.opencb.opencga - opencga-storage-core - org.opencb.opencga opencga-storage-core @@ -73,11 +69,6 @@ test-jar test - - - javax.servlet - javax.servlet-api - org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} @@ -111,10 +102,6 @@ org.opencb.commons commons-lib - - org.opencb.commons - commons-datastore-core - org.opencb.commons commons-datastore-mongodb @@ -242,21 +229,17 @@ hamcrest-core test - - org.mockito - mockito-core - test - - - junit - junit - - org.apache.solr solr-test-framework - + + + + javax.servlet + javax.servlet-api + test + @@ -292,20 +275,7 @@ - - com.google.code.findbugs:annotations:jar:${findbugs-annotations.version} - - - javax.servlet:javax.servlet-api* - - - org.opencb.opencga:opencga-storage-hadoop-deps-* - - - org.apache.solr:* - - org.opencb.opencga:opencga-clinical* - + * diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 0d99f55de0a..0662c1d7a87 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -42,10 +42,6 @@ org.opencb.opencga opencga-core - - org.opencb.opencga - opencga-catalog - org.opencb.opencga opencga-analysis @@ -64,10 +60,6 @@ org.opencb.opencga opencga-client - - org.opencb.opencga - opencga-storage-core - org.opencb.opencga opencga-storage-app @@ -94,6 +86,14 @@ org.opencb.commons commons-datastore-mongodb + + org.opencb.opencga + opencga-storage-core + + + org.opencb.opencga + opencga-catalog + org.opencb.commons commons-datastore-solr @@ -227,6 +227,27 @@ junit junit + + + + org.opencb.opencga + opencga-catalog + test-jar + test + + + org.jline + jline-terminal-jna + runtime + + + org.opencb.opencga + opencga-storage-core + test-jar + test + + + @@ -581,8 +602,7 @@ true - org.opencb.opencga:opencga-storage-hadoop-* - jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6 + * diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 7ef603a4028..8ef41bfcd62 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -168,10 +168,6 @@ org.mongodb bson - - com.microsoft.azure - azure-client-runtime - com.microsoft.azure azure-client-authentication @@ -211,6 +207,34 @@ junit test + + + + com.microsoft.azure + azure-client-runtime + + + com.microsoft.azure + azure + + + io.fabric8 + kubernetes-client + + + com.microsoft.azure + azure-batch + + + io.jsonwebtoken + jjwt-jackson + runtime + + + org.apache.solr + solr-test-framework + test + @@ -274,9 +298,7 @@ - - com.google.code.findbugs:annotations:jar:${findbugs-annotations.version} - + * diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 40e794250f0..93f3520ff03 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -138,6 +138,28 @@ junit junit + + + + io.jsonwebtoken + jjwt-impl + runtime + + + org.glassfish.jersey.inject + jersey-hk2 + + + org.eclipse.jetty + jetty-webapp + test + + + io.jsonwebtoken + jjwt-jackson + runtime + + diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 22f9afe2a5e..19d37d3c9e7 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -12,6 +12,54 @@ opencga-clinical jar + + + + + org.opencb.commons + commons-datastore-core + + + org.opencb.opencga + opencga-storage-core + + + org.mockito + mockito-core + test + + + org.apache.solr + solr-test-framework + test + + + junit + junit + test + + + org.opencb.opencga + opencga-catalog + test-jar + test + + + org.opencb.opencga + opencga-storage-core + test-jar + test + + + org.opencb.opencga + opencga-catalog + + + org.apache.solr + solr-solrj + + + diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index eadd1ac17bf..c23f4838246 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -54,10 +54,6 @@ org.opencb.cellbase cellbase-client - - org.opencb.cellbase - cellbase-core - org.opencb.oskar oskar-analysis @@ -130,6 +126,17 @@ junit test + + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 52a0345317a..815ee677068 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -157,6 +157,17 @@ junit junit + + + + org.glassfish.jersey.media + jersey-media-json-jackson + + + org.eclipse.jetty + jetty-webapp + + diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 6d6abc7e22e..de4aa29124a 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -215,6 +215,33 @@ junit + + + + org.glassfish.jersey.media + jersey-media-json-jackson + + + org.opencb.opencga + ${opencga-storage-hadoop-deps.artifactId} + shaded + + + org.opencb.opencga + opencga-storage-hadoop-core + + + io.grpc + grpc-all + + + org.glassfish.jersey.inject + jersey-hk2 + + + org.glassfish.jersey.containers + jersey-container-servlet + diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index e743b5d29a7..6251ca298e4 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -139,6 +139,18 @@ com.github.samtools htsjdk + + + + junit + junit + test + + + org.glassfish.jersey.containers + jersey-container-servlet-core + + @@ -270,14 +282,7 @@ true - org.opencb.opencga:opencga-storage-hadoop* - - javax.servlet:javax.servlet-api:jar:3.1.0 - - org.eclipse.jetty:* - - jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6 - + * diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 9062d6dfe78..7bed75cc27f 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -145,6 +145,14 @@ junit junit + + + + org.apache.logging.log4j + log4j-api + + + @@ -161,10 +169,7 @@ true - javax.servlet:javax.servlet-api:jar:3.1.0 - - org.opencb.opencga:opencga-storage-hadoop-deps* - + * diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 049c2809a00..37db6614e4a 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -192,8 +192,34 @@ com.databricks SnpEff - + + + com.esotericsoftware.kryo + kryo + + + com.microsoft.azure + azure-storage-blob + + + org.apache.httpcomponents + httpclient + + + org.apache.solr + solr-test-framework + test + + + org.glassfish.jersey.containers + jersey-container-servlet + + + org.opencb.oskar + oskar-analysis + + diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 9f4bcdbe4dc..4db6f65b8fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -89,11 +89,6 @@ org.mockito mockito-core - - org.apache.solr - solr-solrj - - org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} @@ -102,7 +97,6 @@ test-jar test - org.glassfish.jersey.containers jersey-container-servlet diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index e8a0d29e089..31fb09510bd 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -122,6 +122,24 @@ jackson-databind + + + io.grpc + grpc-all + + + com.google.protobuf + protobuf-java-util + + + junit + junit + test + + + org.eclipse.jetty + jetty-webapp + @@ -177,8 +195,7 @@ true - org.mortbay.jetty:servlet-api:jar:2.5-20081211 - + * diff --git a/pom.xml b/pom.xml index d7f450f621e..9ee417e8a2a 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ 2.6 2.0.1 4.13.2 - 3.12.1 + 3.12.1 1.4.7 1.3 0.6.0a5 @@ -88,10 +88,13 @@ 2.8.0 9.31 1.5.4 + 4.0.1 + 1.13.0 + true + 11.0.0 4.5.6 5.64.4 1.6.1 - 4.0.1 4.3.0 3.1.0 1.10.12 @@ -99,11 +102,9 @@ 1.2.17 2.0.1 5.0 - true 5.0 1.8.7 2.2.0 - 11.0.0 3.0.2 1.4.1 2.2.0 @@ -143,6 +144,8 @@ 3.4.6 1.7.24 2.5-20081211 + + 2.23.0 @@ -590,12 +593,12 @@ org.jline jline-reader - ${dep.jline.version} + ${jline.version} org.jline jline-terminal - ${dep.jline.version} + ${jline.version} org.eclipse.jetty @@ -1029,6 +1032,26 @@ parquet-hadoop ${parquet-hadoop.version} + + org.jline + jline-terminal-jna + ${jline.version} + + + com.microsoft.azure + azure + ${azure.version} + + + org.glassfish.jersey.media + jersey-media-json-jackson + 2.30.1 + + + com.esotericsoftware.kryo + kryo + ${kryo.version} + From 9450f6ab45f89ba486952b074851813b8cb5cf34 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 20 Oct 2023 16:45:33 +0200 Subject: [PATCH 150/354] portpatch: Updated version to merge develop #TASK-5120 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 5def9cd5e2e..69f3bd0df08 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 9b7c4f29edd..fe7211f3a68 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 960d84a610a..f44b772294c 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index b8c097d777e..c3d5e42f079 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index e281f5d48a0..11653f27526 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 1fcf341a09f..169c804bd9f 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 468fb7a5683..d12a8eb58d6 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 43949773d01..4d4280c8895 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 8008b10a31f..e0d6b60b973 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 9caad37be25..d2b371a6c79 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 2c743523aeb..3ba6bfd88e0 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 39737e3e7be..e04af6512de 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 55512378967..76ffc1e9ce3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 109b9c41cda..09519b23291 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index a662fff2a4a..8d284fb1f33 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index d392b220a7b..132c0f14681 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 7b57b777111..05620a5144b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index b6e04e741d1..0d55a15b610 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index bc38910593d..697f00a8e51 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 8420b1bfd5a..a1797410a10 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 9da8d0e486f..65d3c35fc7e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.4 + 2.12.0-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From d61b08328933e59acdcddad7a822e3e222685271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 27 Oct 2023 12:24:45 +0100 Subject: [PATCH 151/354] pom: Move hadoop dependencies into its profile #TASK-2095 --- opencga-server/pom.xml | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index de4aa29124a..ad52dcc5256 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -221,15 +221,6 @@ org.glassfish.jersey.media jersey-media-json-jackson - - org.opencb.opencga - ${opencga-storage-hadoop-deps.artifactId} - shaded - - - org.opencb.opencga - opencga-storage-hadoop-core - io.grpc grpc-all @@ -395,7 +386,7 @@ true - + From e4962c8a9967b6198c81bb8bc3e5541e811ab95c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 27 Oct 2023 15:39:23 +0200 Subject: [PATCH 152/354] CLI: getObjetcJson method params are now category and path --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../main/executors/AdminCommandExecutor.java | 13 ++--- .../AnalysisAlignmentCommandExecutor.java | 19 +++---- .../AnalysisClinicalCommandExecutor.java | 25 ++++----- .../AnalysisVariantCommandExecutor.java | 49 +++++++++--------- .../executors/CohortsCommandExecutor.java | 13 ++--- .../DiseasePanelsCommandExecutor.java | 9 ++-- .../executors/FamiliesCommandExecutor.java | 11 ++-- .../main/executors/FilesCommandExecutor.java | 19 +++---- .../executors/IndividualsCommandExecutor.java | 11 ++-- .../main/executors/JobsCommandExecutor.java | 9 ++-- .../main/executors/MetaCommandExecutor.java | 1 + .../executors/OpencgaCommandExecutor.java | 30 +++++++++-- ...erationsVariantStorageCommandExecutor.java | 51 ++++++++++--------- .../executors/ProjectsCommandExecutor.java | 5 +- .../executors/SamplesCommandExecutor.java | 11 ++-- .../executors/StudiesCommandExecutor.java | 17 ++++--- .../main/executors/UsersCommandExecutor.java | 7 +-- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++---- .../src/main/R/R/Clinical-methods.R | 4 +- opencga-client/src/main/R/R/Cohort-methods.R | 4 +- opencga-client/src/main/R/R/Family-methods.R | 4 +- opencga-client/src/main/R/R/File-methods.R | 4 +- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 4 +- opencga-client/src/main/R/R/Job-methods.R | 4 +- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 +- opencga-client/src/main/R/R/Study-methods.R | 4 +- opencga-client/src/main/R/R/User-methods.R | 4 +- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 4 +- .../client/rest/clients/AlignmentClient.java | 4 +- .../rest/clients/ClinicalAnalysisClient.java | 4 +- .../client/rest/clients/CohortClient.java | 4 +- .../rest/clients/DiseasePanelClient.java | 4 +- .../client/rest/clients/FamilyClient.java | 4 +- .../client/rest/clients/FileClient.java | 4 +- .../client/rest/clients/GA4GHClient.java | 4 +- .../client/rest/clients/IndividualClient.java | 4 +- .../client/rest/clients/JobClient.java | 4 +- .../client/rest/clients/MetaClient.java | 4 +- .../client/rest/clients/ProjectClient.java | 4 +- .../client/rest/clients/SampleClient.java | 4 +- .../client/rest/clients/StudyClient.java | 4 +- .../client/rest/clients/UserClient.java | 4 +- .../client/rest/clients/VariantClient.java | 4 +- .../rest/clients/VariantOperationClient.java | 4 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 4 +- .../rest_clients/alignment_client.py | 4 +- .../rest_clients/clinical_analysis_client.py | 4 +- .../pyopencga/rest_clients/cohort_client.py | 4 +- .../rest_clients/disease_panel_client.py | 4 +- .../pyopencga/rest_clients/family_client.py | 4 +- .../pyopencga/rest_clients/file_client.py | 4 +- .../pyopencga/rest_clients/ga4gh_client.py | 4 +- .../rest_clients/individual_client.py | 4 +- .../pyopencga/rest_clients/job_client.py | 4 +- .../pyopencga/rest_clients/meta_client.py | 4 +- .../pyopencga/rest_clients/project_client.py | 4 +- .../pyopencga/rest_clients/sample_client.py | 4 +- .../pyopencga/rest_clients/study_client.py | 4 +- .../pyopencga/rest_clients/user_client.py | 4 +- .../pyopencga/rest_clients/variant_client.py | 4 +- .../rest_clients/variant_operation_client.py | 4 +- .../cli/ExecutorsCliRestApiWriter.java | 3 +- 89 files changed, 293 insertions(+), 254 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index ee9f603f739..7d088edef53 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-12 OpenCB +* Copyright 2015-2023-10-27 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 832d5638d49..279ccd36197 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-09-12 OpenCB +* Copyright 2015-2023-10-27 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java index a16efb4df47..0ab7c6405dc 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java @@ -48,6 +48,7 @@ */ public class AdminCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "admin"; public AdminCommandOptions adminCommandOptions; public AdminCommandExecutor(AdminCommandOptions adminCommandOptions) throws CatalogAuthenticationException { @@ -138,7 +139,7 @@ private RestResponse installCatalog() throws Exception { installationParams = new InstallationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(installationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/catalog/install")); return res; } else if (commandOptions.jsonFile != null) { installationParams = JacksonUtils.getDefaultObjectMapper() @@ -167,7 +168,7 @@ private RestResponse jwtCatalog() throws Exception { jWTParams = new JWTParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(jWTParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/catalog/jwt")); return res; } else if (commandOptions.jsonFile != null) { jWTParams = JacksonUtils.getDefaultObjectMapper() @@ -193,7 +194,7 @@ private RestResponse createUsers() throws Exception { userCreateParams = new UserCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(userCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/create")); return res; } else if (commandOptions.jsonFile != null) { userCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -224,7 +225,7 @@ private RestResponse importUsers() throws Exception { userImportParams = new UserImportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(userImportParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/import")); return res; } else if (commandOptions.jsonFile != null) { userImportParams = JacksonUtils.getDefaultObjectMapper() @@ -272,7 +273,7 @@ private RestResponse syncUsers() throws Exception { groupSyncParams = new GroupSyncParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(groupSyncParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/sync")); return res; } else if (commandOptions.jsonFile != null) { groupSyncParams = JacksonUtils.getDefaultObjectMapper() @@ -308,7 +309,7 @@ private RestResponse usersUpdateGroups() throws Exception { userUpdateGroup = new UserUpdateGroup(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(userUpdateGroup)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/{user}/groups/update")); return res; } else if (commandOptions.jsonFile != null) { userUpdateGroup = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java index 328a83daeb4..60c7752ddbe 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java @@ -48,6 +48,7 @@ */ public class AnalysisAlignmentCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "analysisAlignment"; public AnalysisAlignmentCommandOptions analysisAlignmentCommandOptions; public AnalysisAlignmentCommandExecutor(AnalysisAlignmentCommandOptions analysisAlignmentCommandOptions) throws CatalogAuthenticationException { @@ -134,7 +135,7 @@ private RestResponse runBwa() throws Exception { bwaWrapperParams = new BwaWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(bwaWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/bwa/run")); return res; } else if (commandOptions.jsonFile != null) { bwaWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -176,7 +177,7 @@ private RestResponse runCoverageIndex() throws Exception { coverageIndexParams = new CoverageIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(coverageIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/coverage/index/run")); return res; } else if (commandOptions.jsonFile != null) { coverageIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -215,7 +216,7 @@ private RestResponse coverageQcGeneCoverageStatsRun() throws Exception { alignmentGeneCoverageStatsParams = new AlignmentGeneCoverageStatsParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(alignmentGeneCoverageStatsParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/coverage/qc/geneCoverageStats/run")); return res; } else if (commandOptions.jsonFile != null) { alignmentGeneCoverageStatsParams = JacksonUtils.getDefaultObjectMapper() @@ -311,7 +312,7 @@ private RestResponse runDeeptools() throws Exception { deeptoolsWrapperParams = new DeeptoolsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(deeptoolsWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/deeptools/run")); return res; } else if (commandOptions.jsonFile != null) { deeptoolsWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -350,7 +351,7 @@ private RestResponse runFastqc() throws Exception { fastqcWrapperParams = new FastqcWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fastqcWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/fastqc/run")); return res; } else if (commandOptions.jsonFile != null) { fastqcWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -389,7 +390,7 @@ private RestResponse runIndex() throws Exception { alignmentIndexParams = new AlignmentIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(alignmentIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/index/run")); return res; } else if (commandOptions.jsonFile != null) { alignmentIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -427,7 +428,7 @@ private RestResponse runPicard() throws Exception { picardWrapperParams = new PicardWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(picardWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/picard/run")); return res; } else if (commandOptions.jsonFile != null) { picardWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -466,7 +467,7 @@ private RestResponse runQc() throws Exception { alignmentQcParams = new AlignmentQcParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(alignmentQcParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/qc/run")); return res; } else if (commandOptions.jsonFile != null) { alignmentQcParams = JacksonUtils.getDefaultObjectMapper() @@ -538,7 +539,7 @@ private RestResponse runSamtools() throws Exception { samtoolsWrapperParams = new SamtoolsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(samtoolsWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/samtools/run")); return res; } else if (commandOptions.jsonFile != null) { samtoolsWrapperParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java index 3039ab1cc68..0bd8b87285e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java @@ -80,6 +80,7 @@ */ public class AnalysisClinicalCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "analysisClinical"; public AnalysisClinicalCommandOptions analysisClinicalCommandOptions; public AnalysisClinicalCommandExecutor(AnalysisClinicalCommandOptions analysisClinicalCommandOptions) throws CatalogAuthenticationException { @@ -217,7 +218,7 @@ private RestResponse updateAcl() throws Exception clinicalAnalysisAclUpdateParams = new ClinicalAnalysisAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(clinicalAnalysisAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { clinicalAnalysisAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -251,7 +252,7 @@ private RestResponse updateClinicalConfiguration() throws Exception { clinicalAnalysisStudyConfiguration = new ClinicalAnalysisStudyConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(clinicalAnalysisStudyConfiguration)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/clinical/configuration/update")); return res; } else if (commandOptions.jsonFile != null) { clinicalAnalysisStudyConfiguration = JacksonUtils.getDefaultObjectMapper() @@ -288,7 +289,7 @@ private RestResponse create() throws Exception { clinicalAnalysisCreateParams = new ClinicalAnalysisCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(clinicalAnalysisCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/create")); return res; } else if (commandOptions.jsonFile != null) { clinicalAnalysisCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -467,7 +468,7 @@ private RestResponse runInterpreterCancerTiering() throws Exception { cancerTieringInterpretationAnalysisParams = new CancerTieringInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cancerTieringInterpretationAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/cancerTiering/run")); return res; } else if (commandOptions.jsonFile != null) { cancerTieringInterpretationAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -506,7 +507,7 @@ private RestResponse runInterpreterExomiser() throws Exception { exomiserInterpretationAnalysisParams = new ExomiserInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(exomiserInterpretationAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/exomiser/run")); return res; } else if (commandOptions.jsonFile != null) { exomiserInterpretationAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -543,7 +544,7 @@ private RestResponse runInterpreterTeam() throws Exception { teamInterpretationAnalysisParams = new TeamInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(teamInterpretationAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/team/run")); return res; } else if (commandOptions.jsonFile != null) { teamInterpretationAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -583,7 +584,7 @@ private RestResponse runInterpreterTiering() throws Exception { tieringInterpretationAnalysisParams = new TieringInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tieringInterpretationAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/tiering/run")); return res; } else if (commandOptions.jsonFile != null) { tieringInterpretationAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -623,7 +624,7 @@ private RestResponse runInterpreterZetta() throws Exception { zettaInterpretationAnalysisParams = new ZettaInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(zettaInterpretationAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/zetta/run")); return res; } else if (commandOptions.jsonFile != null) { zettaInterpretationAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -826,7 +827,7 @@ private RestResponse runRgaIndex() throws Exception { rgaAnalysisParams = new RgaAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(rgaAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/rga/index/run")); return res; } else if (commandOptions.jsonFile != null) { rgaAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1166,7 +1167,7 @@ private RestResponse update() throws Exception { clinicalAnalysisUpdateParams = new ClinicalAnalysisUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(clinicalAnalysisUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalyses}/update")); return res; } else if (commandOptions.jsonFile != null) { clinicalAnalysisUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -1241,7 +1242,7 @@ private RestResponse createInterpretation() throws Exception { interpretationCreateParams = new InterpretationCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(interpretationCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalysis}/interpretation/create")); return res; } else if (commandOptions.jsonFile != null) { interpretationCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -1331,7 +1332,7 @@ private RestResponse updateInterpretation() throws Exception { interpretationUpdateParams = new InterpretationUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(interpretationUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalysis}/interpretation/{interpretation}/update")); return res; } else if (commandOptions.jsonFile != null) { interpretationUpdateParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java index 601ea3739bf..418b0c3ac40 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java @@ -76,6 +76,7 @@ */ public class AnalysisVariantCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "analysisVariant"; public AnalysisVariantCommandOptions analysisVariantCommandOptions; public AnalysisVariantCommandExecutor(AnalysisVariantCommandOptions analysisVariantCommandOptions) throws CatalogAuthenticationException { @@ -315,7 +316,7 @@ private RestResponse runCircos() throws Exception { circosAnalysisParams = new CircosAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(circosAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/circos/run")); return res; } else if (commandOptions.jsonFile != null) { circosAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -384,7 +385,7 @@ private RestResponse runCohortStats() throws Exception { cohortVariantStatsAnalysisParams = new CohortVariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cohortVariantStatsAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/cohort/stats/run")); return res; } else if (commandOptions.jsonFile != null) { cohortVariantStatsAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -425,7 +426,7 @@ private RestResponse runExomiser() throws Exception { exomiserWrapperParams = new ExomiserWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(exomiserWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/exomiser/run")); return res; } else if (commandOptions.jsonFile != null) { exomiserWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -466,7 +467,7 @@ private RestResponse runExport() throws Exception { variantExportParams = new VariantExportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantExportParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/export/run")); return res; } else if (commandOptions.jsonFile != null) { variantExportParams = JacksonUtils.getDefaultObjectMapper() @@ -607,7 +608,7 @@ private RestResponse runFamilyQc() throws Exception { familyQcAnalysisParams = new FamilyQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(familyQcAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/family/qc/run")); return res; } else if (commandOptions.jsonFile != null) { familyQcAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -667,7 +668,7 @@ private RestResponse runGatk() throws Exception { gatkWrapperParams = new GatkWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(gatkWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/gatk/run")); return res; } else if (commandOptions.jsonFile != null) { gatkWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -706,7 +707,7 @@ private RestResponse runGenomePlot() throws Exception { genomePlotAnalysisParams = new GenomePlotAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(genomePlotAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/genomePlot/run")); return res; } else if (commandOptions.jsonFile != null) { genomePlotAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -747,7 +748,7 @@ private RestResponse runGwas() throws Exception { gwasAnalysisParams = new GwasAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(gwasAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/gwas/run")); return res; } else if (commandOptions.jsonFile != null) { gwasAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -795,7 +796,7 @@ private RestResponse runHrDetect() throws Exception { hRDetectAnalysisParams = new HRDetectAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(hRDetectAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/hrDetect/run")); return res; } else if (commandOptions.jsonFile != null) { hRDetectAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -844,7 +845,7 @@ private RestResponse runIndex() throws Exception { variantIndexParams = new VariantIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/index/run")); return res; } else if (commandOptions.jsonFile != null) { variantIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -909,7 +910,7 @@ private RestResponse runIndividualQc() throws Exception { individualQcAnalysisParams = new IndividualQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(individualQcAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/individual/qc/run")); return res; } else if (commandOptions.jsonFile != null) { individualQcAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -949,7 +950,7 @@ private RestResponse runInferredSex() throws Exception { inferredSexAnalysisParams = new InferredSexAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(inferredSexAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/inferredSex/run")); return res; } else if (commandOptions.jsonFile != null) { inferredSexAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1022,7 +1023,7 @@ private RestResponse runKnockout() throws Exception { knockoutAnalysisParams = new KnockoutAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(knockoutAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/knockout/run")); return res; } else if (commandOptions.jsonFile != null) { knockoutAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1068,7 +1069,7 @@ private RestResponse runMendelianError() throws Exception { mendelianErrorAnalysisParams = new MendelianErrorAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(mendelianErrorAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/mendelianError/run")); return res; } else if (commandOptions.jsonFile != null) { mendelianErrorAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1161,7 +1162,7 @@ private RestResponse runMutationalSignature() throws Exception { mutationalSignatureAnalysisParams = new MutationalSignatureAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(mutationalSignatureAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/mutationalSignature/run")); return res; } else if (commandOptions.jsonFile != null) { mutationalSignatureAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1213,7 +1214,7 @@ private RestResponse runPlink() throws Exception { plinkWrapperParams = new PlinkWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(plinkWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/plink/run")); return res; } else if (commandOptions.jsonFile != null) { plinkWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -1341,7 +1342,7 @@ private RestResponse runRelatedness() throws Exception { relatednessAnalysisParams = new RelatednessAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(relatednessAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/relatedness/run")); return res; } else if (commandOptions.jsonFile != null) { relatednessAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1382,7 +1383,7 @@ private RestResponse runRvtests() throws Exception { rvtestsWrapperParams = new RvtestsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(rvtestsWrapperParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/rvtests/run")); return res; } else if (commandOptions.jsonFile != null) { rvtestsWrapperParams = JacksonUtils.getDefaultObjectMapper() @@ -1456,7 +1457,7 @@ private RestResponse runSampleEligibility() throws Exception { sampleEligibilityAnalysisParams = new SampleEligibilityAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleEligibilityAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/eligibility/run")); return res; } else if (commandOptions.jsonFile != null) { sampleEligibilityAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1495,7 +1496,7 @@ private RestResponse runSampleQc() throws Exception { sampleQcAnalysisParams = new SampleQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleQcAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/qc/run")); return res; } else if (commandOptions.jsonFile != null) { sampleQcAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1596,7 +1597,7 @@ private RestResponse runSample() throws Exception { sampleVariantFilterParams = new SampleVariantFilterParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleVariantFilterParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/run")); return res; } else if (commandOptions.jsonFile != null) { sampleVariantFilterParams = JacksonUtils.getDefaultObjectMapper() @@ -1690,7 +1691,7 @@ private RestResponse runSampleStats() throws Exception { sampleVariantStatsAnalysisParams = new SampleVariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleVariantStatsAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/stats/run")); return res; } else if (commandOptions.jsonFile != null) { sampleVariantStatsAnalysisParams = JacksonUtils.getDefaultObjectMapper() @@ -1763,7 +1764,7 @@ private RestResponse runStatsExport() throws Exception { variantStatsExportParams = new VariantStatsExportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStatsExportParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/stats/export/run")); return res; } else if (commandOptions.jsonFile != null) { variantStatsExportParams = JacksonUtils.getDefaultObjectMapper() @@ -1804,7 +1805,7 @@ private RestResponse runStats() throws Exception { variantStatsAnalysisParams = new VariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStatsAnalysisParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/stats/run")); return res; } else if (commandOptions.jsonFile != null) { variantStatsAnalysisParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java index 92677f27fa4..4767a83173c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java @@ -50,6 +50,7 @@ */ public class CohortsCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "cohorts"; public CohortsCommandOptions cohortsCommandOptions; public CohortsCommandExecutor(CohortsCommandOptions cohortsCommandOptions) throws CatalogAuthenticationException { @@ -129,7 +130,7 @@ private RestResponse updateAcl() throws Exception { cohortAclUpdateParams = new CohortAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cohortAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { cohortAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -190,7 +191,7 @@ private RestResponse loadAnnotationSets() throws Exception { tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tsvAnnotationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/annotationSets/load")); return res; } else if (commandOptions.jsonFile != null) { tsvAnnotationParams = JacksonUtils.getDefaultObjectMapper() @@ -228,7 +229,7 @@ private RestResponse create() throws Exception { cohortCreateParams = new CohortCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cohortCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/create")); return res; } else if (commandOptions.jsonFile != null) { cohortCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -314,7 +315,7 @@ private RestResponse generate() throws Exception { cohortGenerateParams = new CohortGenerateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cohortGenerateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/generate")); return res; } else if (commandOptions.jsonFile != null) { cohortGenerateParams = JacksonUtils.getDefaultObjectMapper() @@ -441,7 +442,7 @@ private RestResponse update() throws Exception { cohortUpdateParams = new CohortUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cohortUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/{cohorts}/update")); return res; } else if (commandOptions.jsonFile != null) { cohortUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -484,7 +485,7 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(objectMap)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/{cohort}/annotationSets/{annotationSet}/annotations/update")); return res; } else if (commandOptions.jsonFile != null) { objectMap = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java index 3e05c22aa5f..5c6446b45e4 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java @@ -44,6 +44,7 @@ */ public class DiseasePanelsCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "diseasePanels"; public DiseasePanelsCommandOptions diseasePanelsCommandOptions; public DiseasePanelsCommandExecutor(DiseasePanelsCommandOptions diseasePanelsCommandOptions) throws CatalogAuthenticationException { @@ -114,7 +115,7 @@ private RestResponse updateAcl() throws Exception { panelAclUpdateParams = new PanelAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(panelAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { panelAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -151,7 +152,7 @@ private RestResponse create() throws Exception { panelCreateParams = new PanelCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(panelCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/create")); return res; } else if (commandOptions.jsonFile != null) { panelCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -230,7 +231,7 @@ private RestResponse importPanels() throws Exception { panelImportParams = new PanelImportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(panelImportParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/import")); return res; } else if (commandOptions.jsonFile != null) { panelImportParams = JacksonUtils.getDefaultObjectMapper() @@ -352,7 +353,7 @@ private RestResponse update() throws Exception { panelUpdateParams = new PanelUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(panelUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/{panels}/update")); return res; } else if (commandOptions.jsonFile != null) { panelUpdateParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java index 35e1596aba4..60a56535f4a 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java @@ -50,6 +50,7 @@ */ public class FamiliesCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "families"; public FamiliesCommandOptions familiesCommandOptions; public FamiliesCommandExecutor(FamiliesCommandOptions familiesCommandOptions) throws CatalogAuthenticationException { @@ -127,7 +128,7 @@ private RestResponse updateAcl() throws Exception { familyAclUpdateParams = new FamilyAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(familyAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { familyAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -192,7 +193,7 @@ private RestResponse loadAnnotationSets() throws Exception { tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tsvAnnotationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/annotationSets/load")); return res; } else if (commandOptions.jsonFile != null) { tsvAnnotationParams = JacksonUtils.getDefaultObjectMapper() @@ -229,7 +230,7 @@ private RestResponse create() throws Exception { familyCreateParams = new FamilyCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(familyCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/create")); return res; } else if (commandOptions.jsonFile != null) { familyCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -393,7 +394,7 @@ private RestResponse update() throws Exception { familyUpdateParams = new FamilyUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(familyUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/{families}/update")); return res; } else if (commandOptions.jsonFile != null) { familyUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -437,7 +438,7 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(objectMap)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/{family}/annotationSets/{annotationSet}/annotations/update")); return res; } else if (commandOptions.jsonFile != null) { objectMap = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java index 039e0d536e3..b4cfc6fdb9f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java @@ -96,6 +96,7 @@ */ public class FilesCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "files"; public FilesCommandOptions filesCommandOptions; public FilesCommandExecutor(FilesCommandOptions filesCommandOptions) throws CatalogAuthenticationException { @@ -220,7 +221,7 @@ private RestResponse updateAcl() throws Exception { fileAclUpdateParams = new FileAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { fileAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -290,7 +291,7 @@ private RestResponse loadAnnotationSets() throws Exception { tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tsvAnnotationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/annotationSets/load")); return res; } else if (commandOptions.jsonFile != null) { tsvAnnotationParams = JacksonUtils.getDefaultObjectMapper() @@ -331,7 +332,7 @@ private RestResponse create() throws Exception { fileCreateParams = new FileCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/create")); return res; } else if (commandOptions.jsonFile != null) { fileCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -427,7 +428,7 @@ private RestResponse fetch() throws Exception { fileFetch = new FileFetch(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileFetch)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/fetch")); return res; } else if (commandOptions.jsonFile != null) { fileFetch = JacksonUtils.getDefaultObjectMapper() @@ -469,7 +470,7 @@ private RestResponse link() throws Exception { fileLinkParams = new FileLinkParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileLinkParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/link")); return res; } else if (commandOptions.jsonFile != null) { fileLinkParams = JacksonUtils.getDefaultObjectMapper() @@ -515,7 +516,7 @@ private RestResponse runLink() throws Exception { fileLinkToolParams = new FileLinkToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileLinkToolParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/link/run")); return res; } else if (commandOptions.jsonFile != null) { fileLinkToolParams = JacksonUtils.getDefaultObjectMapper() @@ -557,7 +558,7 @@ private RestResponse runPostlink() throws Exception { postLinkToolParams = new PostLinkToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(postLinkToolParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/postlink/run")); return res; } else if (commandOptions.jsonFile != null) { postLinkToolParams = JacksonUtils.getDefaultObjectMapper() @@ -723,7 +724,7 @@ private RestResponse update() throws Exception { fileUpdateParams = new FileUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(fileUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/{files}/update")); return res; } else if (commandOptions.jsonFile != null) { fileUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -790,7 +791,7 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception { objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(objectMap)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/{file}/annotationSets/{annotationSet}/annotations/update")); return res; } else if (commandOptions.jsonFile != null) { objectMap = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java index 86fcc2f8d58..0675de1255f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java @@ -56,6 +56,7 @@ */ public class IndividualsCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "individuals"; public IndividualsCommandOptions individualsCommandOptions; public IndividualsCommandExecutor(IndividualsCommandOptions individualsCommandOptions) throws CatalogAuthenticationException { @@ -136,7 +137,7 @@ private RestResponse updateAcl() throws Exception { individualAclUpdateParams = new IndividualAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(individualAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { individualAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -207,7 +208,7 @@ private RestResponse loadAnnotationSets() throws Exception { tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tsvAnnotationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/annotationSets/load")); return res; } else if (commandOptions.jsonFile != null) { tsvAnnotationParams = JacksonUtils.getDefaultObjectMapper() @@ -244,7 +245,7 @@ private RestResponse create() throws Exception { individualCreateParams = new IndividualCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(individualCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/create")); return res; } else if (commandOptions.jsonFile != null) { individualCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -449,7 +450,7 @@ private RestResponse update() throws Exception { individualUpdateParams = new IndividualUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(individualUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/{individuals}/update")); return res; } else if (commandOptions.jsonFile != null) { individualUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -519,7 +520,7 @@ private RestResponse updateAnnotationSetsAnnotations() throws Except objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(objectMap)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/{individual}/annotationSets/{annotationSet}/annotations/update")); return res; } else if (commandOptions.jsonFile != null) { objectMap = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java index 93723bdc05e..846c568724e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java @@ -67,6 +67,7 @@ */ public class JobsCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "jobs"; public JobsCommandOptions jobsCommandOptions; public JobsCommandExecutor(JobsCommandOptions jobsCommandOptions) throws CatalogAuthenticationException { @@ -142,7 +143,7 @@ private RestResponse updateAcl() throws Exception { jobAclUpdateParams = new JobAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(jobAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { jobAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -207,7 +208,7 @@ private RestResponse create() throws Exception { jobCreateParams = new JobCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(jobCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/create")); return res; } else if (commandOptions.jsonFile != null) { jobCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -294,7 +295,7 @@ private RestResponse retry() throws Exception { jobRetryParams = new JobRetryParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(jobRetryParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/retry")); return res; } else if (commandOptions.jsonFile != null) { jobRetryParams = JacksonUtils.getDefaultObjectMapper() @@ -430,7 +431,7 @@ private RestResponse update() throws Exception { jobUpdateParams = new JobUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(jobUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/{jobs}/update")); return res; } else if (commandOptions.jsonFile != null) { jobUpdateParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/MetaCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/MetaCommandExecutor.java index 3f8448898be..0cc03b91ef7 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/MetaCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/MetaCommandExecutor.java @@ -37,6 +37,7 @@ */ public class MetaCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "meta"; public MetaCommandOptions metaCommandOptions; public MetaCommandExecutor(MetaCommandOptions metaCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java index 8360af46f00..fc2357c14ad 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java @@ -17,11 +17,11 @@ package org.opencb.opencga.app.cli.main.executors; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.opencb.commons.datastore.core.ObjectMap; -import org.opencb.commons.utils.DataModelsUtils; import org.opencb.opencga.app.cli.CommandExecutor; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.main.io.*; @@ -36,6 +36,9 @@ import org.opencb.opencga.core.models.user.AuthenticationResponse; import org.opencb.opencga.core.response.QueryType; import org.opencb.opencga.core.response.RestResponse; +import org.opencb.opencga.server.generator.models.RestCategory; +import org.opencb.opencga.server.generator.models.RestEndpoint; +import org.opencb.opencga.server.generator.models.RestParameter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -221,11 +224,30 @@ public OpencgaCommandExecutor setOpenCGAClient(OpenCGAClient openCGAClient) { return this; } - public String getObjectAsJSON(Object o) throws Exception { - String jsonInString = "Data model not found."; + public String getObjectAsJSON(String objectCategory, String objectPath) throws Exception { + String jsonInString = ""; try { - jsonInString = DataModelsUtils.dataModelToJsonString(o.getClass()); + ObjectMap queryParams = new ObjectMap(); + queryParams.putIfNotEmpty("category", String.valueOf(objectCategory)); + RestResponse response = openCGAClient.getMetaClient().api(queryParams); + ObjectMapper jsonObjectMapper = new ObjectMapper(); + for (List list : response.getResponses().get(0).getResults()) { + List categories = jsonObjectMapper.convertValue(list, new TypeReference>() {}); + for (RestCategory category : categories) { + for (RestEndpoint endpoint: category.getEndpoints()){ + if(objectPath.equals(endpoint.getPath())){ + for (RestParameter parameter:endpoint.getParameters()){ + //jsonInString += parameter.getName()+":"+parameter.getAllowedValues()+"\n"; + jsonInString += parameter.toString()+"\n"; + } + // + } + } + } + } + // jsonInString = DataModelsUtils.dataModelToJsonString(o.getClass()); } catch (Exception e) { + jsonInString = "Data model not found."; CommandLineUtils.error(e); } return jsonInString; diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 78ed32b92dc..7e1faf04dfd 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -61,6 +61,7 @@ */ public class OperationsVariantStorageCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "operationsVariantStorage"; public OperationsVariantStorageCommandOptions operationsVariantStorageCommandOptions; public OperationsVariantStorageCommandExecutor(OperationsVariantStorageCommandOptions operationsVariantStorageCommandOptions) throws CatalogAuthenticationException { @@ -187,7 +188,7 @@ private RestResponse configureCellbase() throws Exception { cellBaseConfiguration = new CellBaseConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(cellBaseConfiguration)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/cellbase/configure")); return res; } else if (commandOptions.jsonFile != null) { cellBaseConfiguration = JacksonUtils.getDefaultObjectMapper() @@ -227,7 +228,7 @@ private RestResponse aggregateVariant() throws Exception { variantAggregateParams = new VariantAggregateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantAggregateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/aggregate")); return res; } else if (commandOptions.jsonFile != null) { variantAggregateParams = JacksonUtils.getDefaultObjectMapper() @@ -282,7 +283,7 @@ private RestResponse indexVariantAnnotation() throws Exception { variantAnnotationIndexParams = new VariantAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantAnnotationIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/annotation/index")); return res; } else if (commandOptions.jsonFile != null) { variantAnnotationIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -324,7 +325,7 @@ private RestResponse saveVariantAnnotation() throws Exception { variantAnnotationSaveParams = new VariantAnnotationSaveParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantAnnotationSaveParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/annotation/save")); return res; } else if (commandOptions.jsonFile != null) { variantAnnotationSaveParams = JacksonUtils.getDefaultObjectMapper() @@ -358,7 +359,7 @@ private RestResponse configureVariant() throws Exception { variantConfigureParams = new VariantConfigureParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantConfigureParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/configure")); return res; } else if (commandOptions.jsonFile != null) { variantConfigureParams = JacksonUtils.getDefaultObjectMapper() @@ -395,7 +396,7 @@ private RestResponse deleteVariant() throws Exception { variantFileDeleteParams = new VariantFileDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantFileDeleteParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/delete")); return res; } else if (commandOptions.jsonFile != null) { variantFileDeleteParams = JacksonUtils.getDefaultObjectMapper() @@ -433,7 +434,7 @@ private RestResponse aggregateVariantFamily() throws Exception { variantAggregateFamilyParams = new VariantAggregateFamilyParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantAggregateFamilyParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/family/aggregate")); return res; } else if (commandOptions.jsonFile != null) { variantAggregateFamilyParams = JacksonUtils.getDefaultObjectMapper() @@ -472,7 +473,7 @@ private RestResponse indexVariantFamily() throws Exception { variantFamilyIndexParams = new VariantFamilyIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantFamilyIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/family/index")); return res; } else if (commandOptions.jsonFile != null) { variantFamilyIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -512,7 +513,7 @@ private RestResponse indexVariant() throws Exception { variantIndexParams = new VariantIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/index")); return res; } else if (commandOptions.jsonFile != null) { variantIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -577,7 +578,7 @@ private RestResponse launcherVariantIndex() throws Exception { variantFileIndexJobLauncherParams = new VariantFileIndexJobLauncherParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantFileIndexJobLauncherParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/index/launcher")); return res; } else if (commandOptions.jsonFile != null) { variantFileIndexJobLauncherParams = JacksonUtils.getDefaultObjectMapper() @@ -644,7 +645,7 @@ private RestResponse runVariantJulie() throws Exception { julieParams = new JulieParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(julieParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/julie/run")); return res; } else if (commandOptions.jsonFile != null) { julieParams = JacksonUtils.getDefaultObjectMapper() @@ -679,7 +680,7 @@ private RestResponse repairVariantMetadata() throws Exception { variantStorageMetadataRepairToolParams = new VariantStorageMetadataRepairToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStorageMetadataRepairToolParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/metadata/repair")); return res; } else if (commandOptions.jsonFile != null) { variantStorageMetadataRepairToolParams = JacksonUtils.getDefaultObjectMapper() @@ -717,7 +718,7 @@ private RestResponse synchronizeVariantMetadata() throws Exception { variantStorageMetadataSynchronizeParams = new VariantStorageMetadataSynchronizeParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStorageMetadataSynchronizeParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/metadata/synchronize")); return res; } else if (commandOptions.jsonFile != null) { variantStorageMetadataSynchronizeParams = JacksonUtils.getDefaultObjectMapper() @@ -751,7 +752,7 @@ private RestResponse pruneVariant() throws Exception { variantPruneParams = new VariantPruneParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantPruneParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/prune")); return res; } else if (commandOptions.jsonFile != null) { variantPruneParams = JacksonUtils.getDefaultObjectMapper() @@ -790,7 +791,7 @@ private RestResponse deleteVariantSample() throws Exception { variantSampleDeleteParams = new VariantSampleDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantSampleDeleteParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/delete")); return res; } else if (commandOptions.jsonFile != null) { variantSampleDeleteParams = JacksonUtils.getDefaultObjectMapper() @@ -829,7 +830,7 @@ private RestResponse indexVariantSample() throws Exception { variantSecondarySampleIndexParams = new VariantSecondarySampleIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantSecondarySampleIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/index")); return res; } else if (commandOptions.jsonFile != null) { variantSecondarySampleIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -867,7 +868,7 @@ private RestResponse variantSampleIndexConfigure() throws Exception { sampleIndexConfiguration = new SampleIndexConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleIndexConfiguration)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/index/configure")); return res; } else if (commandOptions.jsonFile != null) { sampleIndexConfiguration = JacksonUtils.getDefaultObjectMapper() @@ -918,7 +919,7 @@ private RestResponse indexVariantScore() throws Exception { variantScoreIndexParams = new VariantScoreIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantScoreIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/score/index")); return res; } else if (commandOptions.jsonFile != null) { variantScoreIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -961,7 +962,7 @@ private RestResponse variantSecondaryAnnotationIndex() throws Exception { variantSecondaryAnnotationIndexParams = new VariantSecondaryAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantSecondaryAnnotationIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/annotation/index")); return res; } else if (commandOptions.jsonFile != null) { variantSecondaryAnnotationIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -1000,7 +1001,7 @@ private RestResponse variantSecondarySampleIndex() throws Exception { variantSecondarySampleIndexParams = new VariantSecondarySampleIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantSecondarySampleIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/sample/index")); return res; } else if (commandOptions.jsonFile != null) { variantSecondarySampleIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -1038,7 +1039,7 @@ private RestResponse configureVariantSecondarySampleIndex() throws Exceptio sampleIndexConfiguration = new SampleIndexConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleIndexConfiguration)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/sample/index/configure")); return res; } else if (commandOptions.jsonFile != null) { sampleIndexConfiguration = JacksonUtils.getDefaultObjectMapper() @@ -1069,7 +1070,7 @@ private RestResponse secondaryIndexVariant() throws Exception { variantSecondaryAnnotationIndexParams = new VariantSecondaryAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantSecondaryAnnotationIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondaryIndex")); return res; } else if (commandOptions.jsonFile != null) { variantSecondaryAnnotationIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -1127,7 +1128,7 @@ private RestResponse deleteVariantStats() throws Exception { variantStatsDeleteParams = new VariantStatsDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStatsDeleteParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/stats/delete")); return res; } else if (commandOptions.jsonFile != null) { variantStatsDeleteParams = JacksonUtils.getDefaultObjectMapper() @@ -1165,7 +1166,7 @@ private RestResponse indexVariantStats() throws Exception { variantStatsIndexParams = new VariantStatsIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStatsIndexParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/stats/index")); return res; } else if (commandOptions.jsonFile != null) { variantStatsIndexParams = JacksonUtils.getDefaultObjectMapper() @@ -1207,7 +1208,7 @@ private RestResponse deleteVariantStudy() throws Exception { variantStudyDeleteParams = new VariantStudyDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variantStudyDeleteParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/study/delete")); return res; } else if (commandOptions.jsonFile != null) { variantStudyDeleteParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java index 2ed3593e612..98bb7eb2814 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java @@ -42,6 +42,7 @@ */ public class ProjectsCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "projects"; public ProjectsCommandOptions projectsCommandOptions; public ProjectsCommandExecutor(ProjectsCommandOptions projectsCommandOptions) throws CatalogAuthenticationException { @@ -105,7 +106,7 @@ private RestResponse create() throws Exception { projectCreateParams = new ProjectCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(projectCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/projects/create")); return res; } else if (commandOptions.jsonFile != null) { projectCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -227,7 +228,7 @@ private RestResponse update() throws Exception { projectUpdateParams = new ProjectUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(projectUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/projects/{project}/update")); return res; } else if (commandOptions.jsonFile != null) { projectUpdateParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java index a88c8330a26..7d0ebf47cc8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java @@ -55,6 +55,7 @@ */ public class SamplesCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "samples"; public SamplesCommandOptions samplesCommandOptions; public SamplesCommandExecutor(SamplesCommandOptions samplesCommandOptions) throws CatalogAuthenticationException { @@ -134,7 +135,7 @@ private RestResponse updateAcl() throws Exception { sampleAclUpdateParams = new SampleAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { sampleAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -202,7 +203,7 @@ private RestResponse loadAnnotationSets() throws Exception { tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(tsvAnnotationParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/annotationSets/load")); return res; } else if (commandOptions.jsonFile != null) { tsvAnnotationParams = JacksonUtils.getDefaultObjectMapper() @@ -238,7 +239,7 @@ private RestResponse create() throws Exception { sampleCreateParams = new SampleCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/create")); return res; } else if (commandOptions.jsonFile != null) { sampleCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -476,7 +477,7 @@ private RestResponse update() throws Exception { sampleUpdateParams = new SampleUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(sampleUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/{samples}/update")); return res; } else if (commandOptions.jsonFile != null) { sampleUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -536,7 +537,7 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(objectMap)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/{sample}/annotationSets/{annotationSet}/annotations/update")); return res; } else if (commandOptions.jsonFile != null) { objectMap = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java index 944262e77f1..fef8f85a042 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java @@ -90,6 +90,7 @@ */ public class StudiesCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "studies"; public StudiesCommandOptions studiesCommandOptions; public StudiesCommandExecutor(StudiesCommandOptions studiesCommandOptions) throws CatalogAuthenticationException { @@ -183,7 +184,7 @@ private RestResponse updateAcl() throws Exception { studyAclUpdateParams = new StudyAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(studyAclUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/acl/{members}/update")); return res; } else if (commandOptions.jsonFile != null) { studyAclUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -218,7 +219,7 @@ private RestResponse create() throws Exception { studyCreateParams = new StudyCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(studyCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/create")); return res; } else if (commandOptions.jsonFile != null) { studyCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -360,7 +361,7 @@ private RestResponse updateGroups() throws Exception { groupCreateParams = new GroupCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(groupCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/groups/update")); return res; } else if (commandOptions.jsonFile != null) { groupCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -391,7 +392,7 @@ private RestResponse updateGroupsUsers() throws Exception { groupUpdateParams = new GroupUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(groupUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/groups/{group}/users/update")); return res; } else if (commandOptions.jsonFile != null) { groupUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -428,7 +429,7 @@ private RestResponse updatePermissionRules() throws Exception { permissionRule = new PermissionRule(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(permissionRule)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/permissionRules/update")); return res; } else if (commandOptions.jsonFile != null) { permissionRule = JacksonUtils.getDefaultObjectMapper() @@ -511,7 +512,7 @@ private RestResponse update() throws Exception { studyUpdateParams = new StudyUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(studyUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/update")); return res; } else if (commandOptions.jsonFile != null) { studyUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -562,7 +563,7 @@ private RestResponse updateVariableSets() throws Exception { variableSetCreateParams = new VariableSetCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variableSetCreateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/variableSets/update")); return res; } else if (commandOptions.jsonFile != null) { variableSetCreateParams = JacksonUtils.getDefaultObjectMapper() @@ -596,7 +597,7 @@ private RestResponse updateVariableSetsVariables() throws Exception variable = new Variable(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(variable)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/variableSets/{variableSet}/variables/update")); return res; } else if (commandOptions.jsonFile != null) { variable = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java index b2cca1037ba..f44e3449cc5 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java @@ -61,6 +61,7 @@ */ public class UsersCommandExecutor extends OpencgaCommandExecutor { + public String categoryName = "users"; public UsersCommandOptions usersCommandOptions; public UsersCommandExecutor(UsersCommandOptions usersCommandOptions) throws CatalogAuthenticationException { @@ -136,7 +137,7 @@ private RestResponse password() throws Exception { passwordChangeParams = new PasswordChangeParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(passwordChangeParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/password")); return res; } else if (commandOptions.jsonFile != null) { passwordChangeParams = JacksonUtils.getDefaultObjectMapper() @@ -192,7 +193,7 @@ private RestResponse updateConfigs() throws Exception { configUpdateParams = new ConfigUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(configUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/{user}/configs/update")); return res; } else if (commandOptions.jsonFile != null) { configUpdateParams = JacksonUtils.getDefaultObjectMapper() @@ -257,7 +258,7 @@ private RestResponse update() throws Exception { userUpdateParams = new UserUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); - PrintUtils.println(getObjectAsJSON(userUpdateParams)); + PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/{user}/update")); return res; } else if (commandOptions.jsonFile != null) { userUpdateParams = JacksonUtils.getDefaultObjectMapper() diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index f36ae979df6..ca588e36aec 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 7f1a6a2d745..42453c4b949 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 5756f579584..1094354e3de 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, study, group, variableSet, studies, members, templateId, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, templateId, variableSet, study, group, studies, members, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, files, file, folder, annotationSet, members, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, sample, samples, members, annotationSet, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, members, annotationSet, individuals, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, annotationSet, members, family, families, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretations, members, interpretation, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 5d84fa14614..063b5ca56bf 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, interpretations, clinicalAnalysis, clinicalAnalyses, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretations, members, interpretation, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index d192d6feec1..86c256ad13c 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, annotationSet, cohort, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index c582b23a93a..f61994486fa 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, members, annotationSet, family, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, members, family, families, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index f3eeac80df2..12a692cba71 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, file, files, folder, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, files, file, folder, annotationSet, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 639683e171c..d03fe839d00 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 1839f2cb8c9..6c6db781f0f 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, members, annotationSet, individuals, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index ed70e8df6cf..2336177e4e3 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index c278a0c47e4..10888d84a65 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 11621e2cf87..492c6a7c654 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 20fb425cc31..9ff4ec9416b 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 80d88c4cc79..a0cdf42263b 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 32e64a3ecc9..e154dbdea1d 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, members, annotationSet, samples, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, samples, members, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index a9c9a3c90f8..ec660266b5a 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, study, group, variableSet, studies, members, templateId, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, variableSet, study, group, studies, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 2a1d1bc3e82..65db531b18c 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index ad760abcd16..70d0f7406a2 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-09-12 +# Autogenerated on: 2023-10-27 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 6aad0bc7842..b8650868796 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 16c679f642f..e979ae69978 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 94ab79f677d..8e45768167c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -60,7 +60,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 2320ca7bbcd..a6c7798a94b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index ad9ef470eaa..979f96e572e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 94b0e7cf66d..60b4ca25d77 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 94eeead7197..795aeff6846 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 48b4524ea7f..b843ea82794 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index b89c47024df..71a2b12acb5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 7945a8d65cc..a3ba8a9fcd1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 794c6ad3394..49ec8ae0eed 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 317a4af226c..0b92cedd97b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 5cbb8f10fd4..4dfeecc596d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 8f018861260..e86ac389d40 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index adb4ce85938..e5984ffeff2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 4801650a0f9..07360eddb66 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index c1ffc952c9d..27222047a76 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-09-12 +* Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.11.0-SNAPSHOT + * Client version: 2.12.0-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 2466edfccfd..fdfb9de6aa6 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 446219c5a59..8c967d31de0 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 221fa4a68da..b814ab17d37 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 9d070dc8ec8..8a3379c7348 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 1d97f0d3b6f..a0967fc19f7 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 5b11ceacd3a..a1183ca4f60 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 27d76b733e7..58e1343ad16 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index 2e3f968ab05..e61030ad0e3 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 160bb589c50..8e5089be7fd 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 52f5cdde599..21d175e0ca3 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 0207e95847a..02c96c1dade 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index f43c7394d71..e38753e0c87 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index edefccf3e5a..abbe89cf5ac 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index d153ba9d316..d0eb2bb02fe 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index d8c60b8d409..b65022b6a8b 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 35617fde07f..d3ced6ac6ad 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index daa6917728a..7044b256894 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-09-12 + * Autogenerated on: 2023-10-27 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 28598b602eb..90d868b6533 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/admin """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index d19895d21ba..b3fd66f2f86 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index cf8de0798c5..359a1bdcb5b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index f7d6ad80542..021ca07f480 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 6d47ea09d3c..e02a70f6560 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 65e3a070dce..a321fc45b54 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index c6c028d3b3a..7a0f41fcb5a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 48e5b17de75..c9966af7a5e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 07dd3d04b0d..2c811e6c501 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index d692f8e099c..80078af84e6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index d43227b33f8..6e7cc082b1f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index bd29b4b1013..1b063026bd1 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index fcb5c944884..9d4c3d3b56a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 40cc9a63c08..0c67bc31819 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 3f2ed4eae3e..bfc4b7d4d9a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 80e1746470a..b7e2829b208 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 4297fbf08ae..6736e33528e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-09-12 + Autogenerated on: 2023-10-27 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.11.0-SNAPSHOT + Client version: 2.12.0-SNAPSHOT PATH: /{apiVersion}/operation """ diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java index f75776a7dfa..9a7c35caa86 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java @@ -170,6 +170,7 @@ protected String getClassHeader(String key) { CategoryConfig config = availableCategoryConfigs.get(key); sb.append("public class " + getAsClassName(restCategory.getName()) + "CommandExecutor extends " + getExtendedClass() + " {\n\n"); + sb.append(" public String categoryName = \"" + getAsVariableName(getAsCamelCase(restCategory.getName())) + "\";\n"); sb.append(" public " + getAsClassName(restCategory.getName()) + "CommandOptions " + getAsVariableName(getAsCamelCase(restCategory.getName())) + "CommandOptions;\n\n"); sb.append(" public " + getAsClassName(restCategory.getName()) + "CommandExecutor(" + getAsClassName(restCategory.getName()) @@ -373,7 +374,7 @@ private String getBodyParams(RestCategory restCategory, RestEndpoint restEndpoin sb.append("\n " + variableName + " = new " + bodyClassName + "();"); sb.append("\n RestResponse<" + getValidResponseNames(restEndpoint.getResponse()) + "> res = new RestResponse<>();"); sb.append("\n res.setType(QueryType.VOID);"); - sb.append("\n PrintUtils.println(getObjectAsJSON(" + variableName + "));"); + sb.append("\n PrintUtils.println(getObjectAsJSON(categoryName,\""+restEndpoint.getPath()+"\"));"); sb.append("\n return res;"); sb.append("\n } else if (commandOptions.jsonFile != null) {"); sb.append("\n " + getAsVariableName(bodyClassName) + " = JacksonUtils.getDefaultObjectMapper()"); From 8e2d0e971c9a19ace3c7fdb514c4af7eee3562ca Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 31 Oct 2023 14:40:28 +0100 Subject: [PATCH 153/354] app: The cli-usage.yml now is in the jar #TASK-5055 --- opencga-app/pom.xml | 14 +++++++--- .../app/cli/config/CliConfiguration.java | 27 ++++++++++++------- .../main/custom/CustomCliOptionsParser.java | 2 +- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 539781cf264..7a6155e4b0d 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -138,13 +138,21 @@ src/main/java + + + + + + + + src/main/resources true - ${project.basedir}/target/clients/R - compileR.sh + cli-usage.yml + ${project.basedir}/target/classes app/cloud/docker/compose @@ -346,7 +354,7 @@ - + diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java index 0f8a810dc2d..767a99ee33a 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java @@ -2,11 +2,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; +import java.util.Scanner; public class CliConfiguration { @@ -23,7 +25,7 @@ public class CliConfiguration { /** * FILENAME is the file location of the configuration yml file */ - public static final String CLI_USAGE_FILENAME = "cli-usage.yml"; + private String cliUsageFileName = "cli-usage.yml"; /** * LOGGER is an instance of the Logger class so that we can do proper @@ -38,12 +40,10 @@ public static CliConfiguration getInstance() { return CliConfiguration.instance; } - private static CliUsage loadConfiguration() throws IOException { + private CliUsage loadConfiguration() throws IOException { // Loading the YAML file from the /conf folder - String appHome = System.getProperty("app.home", System.getenv("OPENCGA_HOME")); - String conf = appHome + "/conf"; - File file = new File(conf + File.separator + CLI_USAGE_FILENAME); - + File file = new File(cliUsageFileName); + FileUtils.copyURLToFile(getClass().getClassLoader().getResource(cliUsageFileName),file); // Mapping the config from the YAML file to the Configuration class logger.info("Loading CLI configuration from: " + file.getAbsolutePath()); ObjectMapper yamlObjectMapper = new ObjectMapper(new YAMLFactory()); @@ -53,18 +53,27 @@ private static CliUsage loadConfiguration() throws IOException { /* * We keep an instance of cliUsage for the Shell */ - public static CliUsage getUsage() { + public CliUsage getUsage() { if (cliUsage == null) { try { cliUsage = loadConfiguration(); } catch (IOException e) { - logger.error("Loading CLI configuration from: " + CLI_USAGE_FILENAME + " Failed"); + logger.error("Loading CLI configuration from: " + cliUsageFileName + " Failed"); + System.err.println("Loading CLI configuration from: " + cliUsageFileName + " Failed"); } } return cliUsage; } - public static void setUsage(CliUsage cliUsage) { + public void setUsage(CliUsage cliUsage) { CliConfiguration.cliUsage = cliUsage; } + + public String getCliUsageFileName() { + return cliUsageFileName; + } + + public void setCliUsageFileName(String cliUsageFileName) { + this.cliUsageFileName = cliUsageFileName; + } } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java index 68aca5089ed..68c964acd1f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/custom/CustomCliOptionsParser.java @@ -108,7 +108,7 @@ private String getPrefix() { */ @Override protected void printMainUsage() { - CliUsage cliUsage = CliConfiguration.getUsage(); + CliUsage cliUsage = CliConfiguration.getInstance().getUsage(); CliCategory[] categories = cliUsage.getCategories(); for (CliCategory cliCategory : categories) { String[] options = cliCategory.getOptions(); From ccf00898eef6d48c2bd2bf3d316bc2ae2167362d Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 31 Oct 2023 16:02:02 +0100 Subject: [PATCH 154/354] app: The loaded cli-usage.yml is tmp file #TASK-5055 --- .../org/opencb/opencga/app/cli/config/CliConfiguration.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java index 767a99ee33a..b6e5b26960c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java @@ -42,8 +42,10 @@ public static CliConfiguration getInstance() { private CliUsage loadConfiguration() throws IOException { // Loading the YAML file from the /conf folder - File file = new File(cliUsageFileName); + File file = new File(FileUtils.getTempDirectory()+File.separator+cliUsageFileName); + FileUtils.copyURLToFile(getClass().getClassLoader().getResource(cliUsageFileName),file); + // Mapping the config from the YAML file to the Configuration class logger.info("Loading CLI configuration from: " + file.getAbsolutePath()); ObjectMapper yamlObjectMapper = new ObjectMapper(new YAMLFactory()); From 6f47371c4d8ff06a24574eb7fcfbcd5eba0bec25 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 31 Oct 2023 17:13:05 +0100 Subject: [PATCH 155/354] pom: zookeeper removed test scope #TASK-2095 --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9ee417e8a2a..2d3eb5c6346 100644 --- a/pom.xml +++ b/pom.xml @@ -781,7 +781,6 @@ org.apache.zookeeper zookeeper ${zookeeper.version} - test commons-logging From 8016adc140d23431909bfedca815611bd5a29e81 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 31 Oct 2023 17:37:10 +0100 Subject: [PATCH 156/354] pom: Removed filtering in cli-usage.yml and uncomment compileR #TASK-5055 --- opencga-app/pom.xml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 7a6155e4b0d..8b78fbd48bd 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -138,17 +138,16 @@ src/main/java - - - - - - - - src/main/resources true + ${project.basedir}/target/clients/R + + compileR.sh + + + + src/main/resources cli-usage.yml From 35389bf4d036b2b8117437d2b72c97f45b5f7c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 31 Oct 2023 16:56:54 +0000 Subject: [PATCH 157/354] app: Do not generate a temporary file. #TASK-5055 --- .../app/cli/config/CliConfiguration.java | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java index b6e5b26960c..99144d56fed 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/config/CliConfiguration.java @@ -2,13 +2,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; import java.io.IOException; -import java.util.Scanner; +import java.io.InputStream; +import java.io.UncheckedIOException; public class CliConfiguration { @@ -20,7 +19,7 @@ public class CliConfiguration { /** * The instance of Usage that stores the "usage" information */ - private static CliUsage cliUsage; + private CliUsage cliUsage; /** * FILENAME is the file location of the configuration yml file @@ -41,15 +40,11 @@ public static CliConfiguration getInstance() { } private CliUsage loadConfiguration() throws IOException { - // Loading the YAML file from the /conf folder - File file = new File(FileUtils.getTempDirectory()+File.separator+cliUsageFileName); - - FileUtils.copyURLToFile(getClass().getClassLoader().getResource(cliUsageFileName),file); - - // Mapping the config from the YAML file to the Configuration class - logger.info("Loading CLI configuration from: " + file.getAbsolutePath()); - ObjectMapper yamlObjectMapper = new ObjectMapper(new YAMLFactory()); - return yamlObjectMapper.readValue(file, CliUsage.class); + try (InputStream is = getClass().getClassLoader().getResourceAsStream(cliUsageFileName)) { + // Mapping the config from the YAML file to the Configuration class + ObjectMapper yamlObjectMapper = new ObjectMapper(new YAMLFactory()); + return yamlObjectMapper.readValue(is, CliUsage.class); + } } /* @@ -60,15 +55,14 @@ public CliUsage getUsage() { try { cliUsage = loadConfiguration(); } catch (IOException e) { - logger.error("Loading CLI configuration from: " + cliUsageFileName + " Failed"); - System.err.println("Loading CLI configuration from: " + cliUsageFileName + " Failed"); + throw new UncheckedIOException(e); } } return cliUsage; } public void setUsage(CliUsage cliUsage) { - CliConfiguration.cliUsage = cliUsage; + this.cliUsage = cliUsage; } public String getCliUsageFileName() { From 5226ae7d3ec3116d920da601f3a2e0ee9f67cb32 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 2 Nov 2023 17:32:16 +0100 Subject: [PATCH 158/354] cli:getObjectAsJSON completo #TASK-5160 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisAlignmentCommandExecutor.java | 2 +- .../AnalysisClinicalCommandExecutor.java | 2 +- .../AnalysisVariantCommandExecutor.java | 2 +- .../DiseasePanelsCommandExecutor.java | 2 +- .../executors/OpencgaCommandExecutor.java | 79 +++++++++++++++++-- ...erationsVariantStorageCommandExecutor.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 14 ++-- .../src/main/R/R/Clinical-methods.R | 4 +- opencga-client/src/main/R/R/Cohort-methods.R | 2 +- opencga-client/src/main/R/R/Family-methods.R | 4 +- opencga-client/src/main/R/R/File-methods.R | 4 +- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 2 +- opencga-client/src/main/R/R/Job-methods.R | 2 +- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 4 +- opencga-client/src/main/R/R/Sample-methods.R | 4 +- opencga-client/src/main/R/R/Study-methods.R | 4 +- opencga-client/src/main/R/R/User-methods.R | 4 +- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- .../writers/ParentClientRestApiWriter.java | 6 +- .../cli/ExecutorsCliRestApiWriter.java | 2 +- 79 files changed, 166 insertions(+), 99 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 7d088edef53..db447fe40b6 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-10-27 OpenCB +* Copyright 2015-2023-11-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 279ccd36197..1dfe8779b88 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-10-27 OpenCB +* Copyright 2015-2023-11-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java index 60c7752ddbe..28e02d2ad67 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java @@ -48,7 +48,7 @@ */ public class AnalysisAlignmentCommandExecutor extends OpencgaCommandExecutor { - public String categoryName = "analysisAlignment"; + public String categoryName = "alignment"; public AnalysisAlignmentCommandOptions analysisAlignmentCommandOptions; public AnalysisAlignmentCommandExecutor(AnalysisAlignmentCommandOptions analysisAlignmentCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java index 0bd8b87285e..284aff68cc4 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java @@ -80,7 +80,7 @@ */ public class AnalysisClinicalCommandExecutor extends OpencgaCommandExecutor { - public String categoryName = "analysisClinical"; + public String categoryName = "clinical"; public AnalysisClinicalCommandOptions analysisClinicalCommandOptions; public AnalysisClinicalCommandExecutor(AnalysisClinicalCommandOptions analysisClinicalCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java index 418b0c3ac40..5ae64623bb5 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java @@ -76,7 +76,7 @@ */ public class AnalysisVariantCommandExecutor extends OpencgaCommandExecutor { - public String categoryName = "analysisVariant"; + public String categoryName = "variant"; public AnalysisVariantCommandOptions analysisVariantCommandOptions; public AnalysisVariantCommandExecutor(AnalysisVariantCommandOptions analysisVariantCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java index 5c6446b45e4..29e5e25e4b9 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java @@ -44,7 +44,7 @@ */ public class DiseasePanelsCommandExecutor extends OpencgaCommandExecutor { - public String categoryName = "diseasePanels"; + public String categoryName = "panels"; public DiseasePanelsCommandOptions diseasePanelsCommandOptions; public DiseasePanelsCommandExecutor(DiseasePanelsCommandOptions diseasePanelsCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java index fc2357c14ad..b46e5f387ab 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java @@ -225,27 +225,33 @@ public OpencgaCommandExecutor setOpenCGAClient(OpenCGAClient openCGAClient) { } public String getObjectAsJSON(String objectCategory, String objectPath) throws Exception { - String jsonInString = ""; + String jsonInString = "\n"; try { ObjectMap queryParams = new ObjectMap(); - queryParams.putIfNotEmpty("category", String.valueOf(objectCategory)); + queryParams.putIfNotEmpty("category", objectCategory); RestResponse response = openCGAClient.getMetaClient().api(queryParams); ObjectMapper jsonObjectMapper = new ObjectMapper(); for (List list : response.getResponses().get(0).getResults()) { List categories = jsonObjectMapper.convertValue(list, new TypeReference>() {}); for (RestCategory category : categories) { - for (RestEndpoint endpoint: category.getEndpoints()){ - if(objectPath.equals(endpoint.getPath())){ - for (RestParameter parameter:endpoint.getParameters()){ + for (RestEndpoint endpoint : category.getEndpoints()) { + if (objectPath.equals(endpoint.getPath())) { + boolean enc = false; + for (RestParameter parameter : endpoint.getParameters()) { //jsonInString += parameter.getName()+":"+parameter.getAllowedValues()+"\n"; - jsonInString += parameter.toString()+"\n"; + if (parameter.getData() != null) { + enc = true; + jsonInString += printBody(parameter.getData(), ""); + } + } + if (!enc) { + jsonInString += "No model available"; } // } } } - } - // jsonInString = DataModelsUtils.dataModelToJsonString(o.getClass()); + } } catch (Exception e) { jsonInString = "Data model not found."; CommandLineUtils.error(e); @@ -253,6 +259,63 @@ public String getObjectAsJSON(String objectCategory, String objectPath) throws E return jsonInString; } + private String printBody(List data, String tabs) { + String res = ""; + res += "{\n"; + String tab = " " + tabs; + for (RestParameter parameter : data) { + if (parameter.getData() == null) { + res += printParameter(parameter, tab); + } else { + res += tab + parameter.getName() + "\"" + ": [" + printBody(parameter.getData(), tab) + "],\n"; + } + } + res += tabs + "}"; + return res; + + } + + private String printParameter(RestParameter parameter, String tab) { + + return tab + "\"" + parameter.getName() + "\"" + ":" + printParameterValue(parameter) + ",\n"; + } + + private String printParameterValue(RestParameter parameter) { + + if(!StringUtils.isEmpty(parameter.getAllowedValues())){ + return parameter.getAllowedValues().replace(" ", "|"); + } + switch (parameter.getType()) { + case "Boolean": + case "java.lang.Boolean": + return "false"; + case "Long": + case "Float": + case "Double": + case "Integer": + case "int": + case "double": + case "float": + case "long": + return "0"; + case "List": + return "[\"\"]"; + case "Date": + return "\"dd/mm/yyyy\""; + case "Map": + return "{\"key\": \"value\"}"; + case "String": + return "\"\""; + default: + return "\"-\""; + } + } + + private boolean isNumeric(String type) { + + return "int".equals(type) || "Long".equals(type) || "Float".equals(type) || "double".equals(type); + } + public RestResponse saveSession(String user, AuthenticationResponse response) throws ClientException, IOException { RestResponse res = new RestResponse<>(); if (response != null) { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 7e1faf04dfd..6197d5eb410 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -61,7 +61,7 @@ */ public class OperationsVariantStorageCommandExecutor extends OpencgaCommandExecutor { - public String categoryName = "operationsVariantStorage"; + public String categoryName = "operation"; public OperationsVariantStorageCommandOptions operationsVariantStorageCommandOptions; public OperationsVariantStorageCommandExecutor(OperationsVariantStorageCommandOptions operationsVariantStorageCommandOptions) throws CatalogAuthenticationException { diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index ca588e36aec..1c4a4479bb0 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 42453c4b949..5c97d7f69d1 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 1094354e3de..85629266564 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,21 +1,21 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## ## ProjectClient -setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, params=NULL, ...) +setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, params=NULL, ...) standardGeneric("projectClient")) # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, templateId, variableSet, study, group, studies, members, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, group, members, studies, study, templateId, variableSet, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, files, file, folder, annotationSet, members, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, files, file, members, annotationSet, folder, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## @@ -25,7 +25,7 @@ setGeneric("jobClient", function(OpencgaR, jobs, members, job, endpointName, par # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, sample, samples, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## @@ -35,7 +35,7 @@ setGeneric("individualClient", function(OpencgaR, individual, members, individua # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, annotationSet, members, family, families, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretations, members, interpretation, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, members, interpretation, interpretations, clinicalAnalyses, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 063b5ca56bf..58c38ecb630 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretations, members, interpretation, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, members, interpretation, interpretations, clinicalAnalyses, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 86c256ad13c..aeca965c7b2 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index f61994486fa..747382a2b15 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, members, family, families, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 12a692cba71..89b8034de42 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, files, file, folder, annotationSet, members, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, files, file, members, annotationSet, folder, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index d03fe839d00..98aaad0e987 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 6c6db781f0f..bf6750fc941 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index 2336177e4e3..37e3a2c9548 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 10888d84a65..481bae671e6 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 492c6a7c654..93934f11fef 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 9ff4ec9416b..4d45393c182 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index a0cdf42263b..570ebfc9cf7 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -34,7 +34,7 @@ #' [*]: Required parameter #' @export -setMethod("projectClient", "OpencgaR", function(OpencgaR, projects, project, endpointName, params=NULL, ...) { +setMethod("projectClient", "OpencgaR", function(OpencgaR, project, projects, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/projects/create: diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index e154dbdea1d..319ded3abbb 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, samples, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index ec660266b5a..9873110e560 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, variableSet, study, group, studies, members, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, group, members, studies, study, templateId, variableSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 65db531b18c..458947e9b4e 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 70d0f7406a2..1957998638d 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-10-27 +# Autogenerated on: 2023-11-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index b8650868796..5460d28052e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index e979ae69978..33a9c268320 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 8e45768167c..a322c2c9e3b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index a6c7798a94b..9631f0aacb0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 979f96e572e..7e60a93d950 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 60b4ca25d77..25e941e8b0b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 795aeff6846..7abe70688b7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index b843ea82794..45eea839db8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 71a2b12acb5..478a20a285a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index a3ba8a9fcd1..cf96ffaaf61 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 49ec8ae0eed..6dd12a34e12 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 0b92cedd97b..3db333e8d16 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 4dfeecc596d..e80e58efb11 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index e86ac389d40..df90b1e2153 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index e5984ffeff2..736744268b5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 07360eddb66..d85feb6f179 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 27222047a76..2e20373c6d7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-10-27 +* Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index fdfb9de6aa6..0522ec1c5a9 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 8c967d31de0..6f3df1f5998 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index b814ab17d37..6431faa5cf3 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 8a3379c7348..6a234b6554e 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index a0967fc19f7..21eb1f0422e 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index a1183ca4f60..cae578e4413 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 58e1343ad16..63ce3b943da 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index e61030ad0e3..611b81c5727 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 8e5089be7fd..534e2d3c7ed 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 21d175e0ca3..be7c71c00e7 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 02c96c1dade..07bd4c5b07c 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index e38753e0c87..54dd86064a5 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index abbe89cf5ac..42cd10689ae 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index d0eb2bb02fe..4c6931b0c89 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index b65022b6a8b..2db00a202b2 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index d3ced6ac6ad..5edd6753b11 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 7044b256894..b9f8f029258 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-10-27 + * Autogenerated on: 2023-11-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 90d868b6533..972e456556c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index b3fd66f2f86..1b598296913 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 359a1bdcb5b..3bd95f48564 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 021ca07f480..1eea42c98a3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index e02a70f6560..eb9aea88c65 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index a321fc45b54..f78c61e2a5a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 7a0f41fcb5a..a65add7cf7e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index c9966af7a5e..f4e96d25df2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 2c811e6c501..fadca48f497 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 80078af84e6..e8f18894ef9 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 6e7cc082b1f..dd437e17394 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 1b063026bd1..dac784edf9a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 9d4c3d3b56a..b13fec2f082 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 0c67bc31819..d4312e58800 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index bfc4b7d4d9a..2d6a136c750 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index b7e2829b208..c3c298dbbc6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 6736e33528e..f0357486079 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-10-27 + Autogenerated on: 2023-11-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java index 72857bc2aec..940c6e56427 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/ParentClientRestApiWriter.java @@ -83,11 +83,15 @@ protected static String reverseCommandName(String commandName) { return commandName.toLowerCase(); } + public String getCategoryRestName(RestCategory restCategory, CategoryConfig categoryConfig) { + return restCategory.getPath().substring(restCategory.getPath().lastIndexOf("/") + 1); + } + public String getCategoryCommandName(RestCategory restCategory, CategoryConfig categoryConfig) { if (!StringUtils.isEmpty(categoryConfig.getCommandName())) { return categoryConfig.getCommandName(); } - return restCategory.getPath().substring(restCategory.getPath().lastIndexOf("/") + 1); + return getCategoryRestName(restCategory, categoryConfig); } protected void writeToFile(File file, StringBuffer sb) throws IOException { diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java index 9a7c35caa86..f9c5c7d0f18 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java @@ -170,7 +170,7 @@ protected String getClassHeader(String key) { CategoryConfig config = availableCategoryConfigs.get(key); sb.append("public class " + getAsClassName(restCategory.getName()) + "CommandExecutor extends " + getExtendedClass() + " {\n\n"); - sb.append(" public String categoryName = \"" + getAsVariableName(getAsCamelCase(restCategory.getName())) + "\";\n"); + sb.append(" public String categoryName = \"" + getCategoryRestName(restCategory, config) + "\";\n"); sb.append(" public " + getAsClassName(restCategory.getName()) + "CommandOptions " + getAsVariableName(getAsCamelCase(restCategory.getName())) + "CommandOptions;\n\n"); sb.append(" public " + getAsClassName(restCategory.getName()) + "CommandExecutor(" + getAsClassName(restCategory.getName()) From 98d42e3bb2ea5a30eb897fb43714586fee134915 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 3 Nov 2023 11:27:42 +0100 Subject: [PATCH 159/354] cli:Deleted unused object in executors #TASK-5160 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../main/executors/AdminCommandExecutor.java | 6 ----- .../AnalysisAlignmentCommandExecutor.java | 9 ------- .../AnalysisClinicalCommandExecutor.java | 12 --------- .../AnalysisVariantCommandExecutor.java | 24 ------------------ .../executors/CohortsCommandExecutor.java | 6 ----- .../DiseasePanelsCommandExecutor.java | 4 --- .../executors/FamiliesCommandExecutor.java | 5 ---- .../main/executors/FilesCommandExecutor.java | 9 ------- .../executors/IndividualsCommandExecutor.java | 5 ---- .../main/executors/JobsCommandExecutor.java | 4 --- ...erationsVariantStorageCommandExecutor.java | 25 ------------------- .../executors/ProjectsCommandExecutor.java | 2 -- .../executors/SamplesCommandExecutor.java | 5 ---- .../executors/StudiesCommandExecutor.java | 8 ------ .../main/executors/UsersCommandExecutor.java | 3 --- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 ++++++------- .../src/main/R/R/Clinical-methods.R | 4 +-- opencga-client/src/main/R/R/Cohort-methods.R | 4 +-- opencga-client/src/main/R/R/Family-methods.R | 4 +-- opencga-client/src/main/R/R/File-methods.R | 4 +-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 4 +-- opencga-client/src/main/R/R/Job-methods.R | 4 +-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 +-- opencga-client/src/main/R/R/Study-methods.R | 4 +-- opencga-client/src/main/R/R/User-methods.R | 4 +-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- .../cli/ExecutorsCliRestApiWriter.java | 1 - 87 files changed, 88 insertions(+), 216 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index db447fe40b6..3c30b6d022e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-02 OpenCB +* Copyright 2015-2023-11-03 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 1dfe8779b88..19ca44161d1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-02 OpenCB +* Copyright 2015-2023-11-03 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java index 0ab7c6405dc..554a475732c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AdminCommandExecutor.java @@ -136,7 +136,6 @@ private RestResponse installCatalog() throws Exception { InstallationParams installationParams = null; if (commandOptions.jsonDataModel) { - installationParams = new InstallationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/catalog/install")); @@ -165,7 +164,6 @@ private RestResponse jwtCatalog() throws Exception { JWTParams jWTParams = null; if (commandOptions.jsonDataModel) { - jWTParams = new JWTParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/catalog/jwt")); @@ -191,7 +189,6 @@ private RestResponse createUsers() throws Exception { UserCreateParams userCreateParams = null; if (commandOptions.jsonDataModel) { - userCreateParams = new UserCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/create")); @@ -222,7 +219,6 @@ private RestResponse importUsers() throws Exception { UserImportParams userImportParams = null; if (commandOptions.jsonDataModel) { - userImportParams = new UserImportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/import")); @@ -270,7 +266,6 @@ private RestResponse syncUsers() throws Exception { GroupSyncParams groupSyncParams = null; if (commandOptions.jsonDataModel) { - groupSyncParams = new GroupSyncParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/sync")); @@ -306,7 +301,6 @@ private RestResponse usersUpdateGroups() throws Exception { UserUpdateGroup userUpdateGroup = null; if (commandOptions.jsonDataModel) { - userUpdateGroup = new UserUpdateGroup(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/admin/users/{user}/groups/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java index 28e02d2ad67..5e9f53fb2cf 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java @@ -132,7 +132,6 @@ private RestResponse runBwa() throws Exception { BwaWrapperParams bwaWrapperParams = null; if (commandOptions.jsonDataModel) { - bwaWrapperParams = new BwaWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/bwa/run")); @@ -174,7 +173,6 @@ private RestResponse runCoverageIndex() throws Exception { CoverageIndexParams coverageIndexParams = null; if (commandOptions.jsonDataModel) { - coverageIndexParams = new CoverageIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/coverage/index/run")); @@ -213,7 +211,6 @@ private RestResponse coverageQcGeneCoverageStatsRun() throws Exception { AlignmentGeneCoverageStatsParams alignmentGeneCoverageStatsParams = null; if (commandOptions.jsonDataModel) { - alignmentGeneCoverageStatsParams = new AlignmentGeneCoverageStatsParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/coverage/qc/geneCoverageStats/run")); @@ -309,7 +306,6 @@ private RestResponse runDeeptools() throws Exception { DeeptoolsWrapperParams deeptoolsWrapperParams = null; if (commandOptions.jsonDataModel) { - deeptoolsWrapperParams = new DeeptoolsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/deeptools/run")); @@ -348,7 +344,6 @@ private RestResponse runFastqc() throws Exception { FastqcWrapperParams fastqcWrapperParams = null; if (commandOptions.jsonDataModel) { - fastqcWrapperParams = new FastqcWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/fastqc/run")); @@ -387,7 +382,6 @@ private RestResponse runIndex() throws Exception { AlignmentIndexParams alignmentIndexParams = null; if (commandOptions.jsonDataModel) { - alignmentIndexParams = new AlignmentIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/index/run")); @@ -425,7 +419,6 @@ private RestResponse runPicard() throws Exception { PicardWrapperParams picardWrapperParams = null; if (commandOptions.jsonDataModel) { - picardWrapperParams = new PicardWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/picard/run")); @@ -464,7 +457,6 @@ private RestResponse runQc() throws Exception { AlignmentQcParams alignmentQcParams = null; if (commandOptions.jsonDataModel) { - alignmentQcParams = new AlignmentQcParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/qc/run")); @@ -536,7 +528,6 @@ private RestResponse runSamtools() throws Exception { SamtoolsWrapperParams samtoolsWrapperParams = null; if (commandOptions.jsonDataModel) { - samtoolsWrapperParams = new SamtoolsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/alignment/samtools/run")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java index 284aff68cc4..2cf48aa5a8c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java @@ -215,7 +215,6 @@ private RestResponse updateAcl() throws Exception ClinicalAnalysisAclUpdateParams clinicalAnalysisAclUpdateParams = null; if (commandOptions.jsonDataModel) { - clinicalAnalysisAclUpdateParams = new ClinicalAnalysisAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/acl/{members}/update")); @@ -249,7 +248,6 @@ private RestResponse updateClinicalConfiguration() throws Exception { ClinicalAnalysisStudyConfiguration clinicalAnalysisStudyConfiguration = null; if (commandOptions.jsonDataModel) { - clinicalAnalysisStudyConfiguration = new ClinicalAnalysisStudyConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/clinical/configuration/update")); @@ -286,7 +284,6 @@ private RestResponse create() throws Exception { ClinicalAnalysisCreateParams clinicalAnalysisCreateParams = null; if (commandOptions.jsonDataModel) { - clinicalAnalysisCreateParams = new ClinicalAnalysisCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/create")); @@ -465,7 +462,6 @@ private RestResponse runInterpreterCancerTiering() throws Exception { CancerTieringInterpretationAnalysisParams cancerTieringInterpretationAnalysisParams = null; if (commandOptions.jsonDataModel) { - cancerTieringInterpretationAnalysisParams = new CancerTieringInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/cancerTiering/run")); @@ -504,7 +500,6 @@ private RestResponse runInterpreterExomiser() throws Exception { ExomiserInterpretationAnalysisParams exomiserInterpretationAnalysisParams = null; if (commandOptions.jsonDataModel) { - exomiserInterpretationAnalysisParams = new ExomiserInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/exomiser/run")); @@ -541,7 +536,6 @@ private RestResponse runInterpreterTeam() throws Exception { TeamInterpretationAnalysisParams teamInterpretationAnalysisParams = null; if (commandOptions.jsonDataModel) { - teamInterpretationAnalysisParams = new TeamInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/team/run")); @@ -581,7 +575,6 @@ private RestResponse runInterpreterTiering() throws Exception { TieringInterpretationAnalysisParams tieringInterpretationAnalysisParams = null; if (commandOptions.jsonDataModel) { - tieringInterpretationAnalysisParams = new TieringInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/tiering/run")); @@ -621,7 +614,6 @@ private RestResponse runInterpreterZetta() throws Exception { ZettaInterpretationAnalysisParams zettaInterpretationAnalysisParams = null; if (commandOptions.jsonDataModel) { - zettaInterpretationAnalysisParams = new ZettaInterpretationAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/interpreter/zetta/run")); @@ -824,7 +816,6 @@ private RestResponse runRgaIndex() throws Exception { RgaAnalysisParams rgaAnalysisParams = null; if (commandOptions.jsonDataModel) { - rgaAnalysisParams = new RgaAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/rga/index/run")); @@ -1164,7 +1155,6 @@ private RestResponse update() throws Exception { ClinicalAnalysisUpdateParams clinicalAnalysisUpdateParams = null; if (commandOptions.jsonDataModel) { - clinicalAnalysisUpdateParams = new ClinicalAnalysisUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalyses}/update")); @@ -1239,7 +1229,6 @@ private RestResponse createInterpretation() throws Exception { InterpretationCreateParams interpretationCreateParams = null; if (commandOptions.jsonDataModel) { - interpretationCreateParams = new InterpretationCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalysis}/interpretation/create")); @@ -1329,7 +1318,6 @@ private RestResponse updateInterpretation() throws Exception { InterpretationUpdateParams interpretationUpdateParams = null; if (commandOptions.jsonDataModel) { - interpretationUpdateParams = new InterpretationUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/clinical/{clinicalAnalysis}/interpretation/{interpretation}/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java index 5ae64623bb5..45346945d18 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java @@ -313,7 +313,6 @@ private RestResponse runCircos() throws Exception { CircosAnalysisParams circosAnalysisParams = null; if (commandOptions.jsonDataModel) { - circosAnalysisParams = new CircosAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/circos/run")); @@ -382,7 +381,6 @@ private RestResponse runCohortStats() throws Exception { CohortVariantStatsAnalysisParams cohortVariantStatsAnalysisParams = null; if (commandOptions.jsonDataModel) { - cohortVariantStatsAnalysisParams = new CohortVariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/cohort/stats/run")); @@ -423,7 +421,6 @@ private RestResponse runExomiser() throws Exception { ExomiserWrapperParams exomiserWrapperParams = null; if (commandOptions.jsonDataModel) { - exomiserWrapperParams = new ExomiserWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/exomiser/run")); @@ -464,7 +461,6 @@ private RestResponse runExport() throws Exception { VariantExportParams variantExportParams = null; if (commandOptions.jsonDataModel) { - variantExportParams = new VariantExportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/export/run")); @@ -605,7 +601,6 @@ private RestResponse runFamilyQc() throws Exception { FamilyQcAnalysisParams familyQcAnalysisParams = null; if (commandOptions.jsonDataModel) { - familyQcAnalysisParams = new FamilyQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/family/qc/run")); @@ -665,7 +660,6 @@ private RestResponse runGatk() throws Exception { GatkWrapperParams gatkWrapperParams = null; if (commandOptions.jsonDataModel) { - gatkWrapperParams = new GatkWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/gatk/run")); @@ -704,7 +698,6 @@ private RestResponse runGenomePlot() throws Exception { GenomePlotAnalysisParams genomePlotAnalysisParams = null; if (commandOptions.jsonDataModel) { - genomePlotAnalysisParams = new GenomePlotAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/genomePlot/run")); @@ -745,7 +738,6 @@ private RestResponse runGwas() throws Exception { GwasAnalysisParams gwasAnalysisParams = null; if (commandOptions.jsonDataModel) { - gwasAnalysisParams = new GwasAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/gwas/run")); @@ -793,7 +785,6 @@ private RestResponse runHrDetect() throws Exception { HRDetectAnalysisParams hRDetectAnalysisParams = null; if (commandOptions.jsonDataModel) { - hRDetectAnalysisParams = new HRDetectAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/hrDetect/run")); @@ -842,7 +833,6 @@ private RestResponse runIndex() throws Exception { VariantIndexParams variantIndexParams = null; if (commandOptions.jsonDataModel) { - variantIndexParams = new VariantIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/index/run")); @@ -907,7 +897,6 @@ private RestResponse runIndividualQc() throws Exception { IndividualQcAnalysisParams individualQcAnalysisParams = null; if (commandOptions.jsonDataModel) { - individualQcAnalysisParams = new IndividualQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/individual/qc/run")); @@ -947,7 +936,6 @@ private RestResponse runInferredSex() throws Exception { InferredSexAnalysisParams inferredSexAnalysisParams = null; if (commandOptions.jsonDataModel) { - inferredSexAnalysisParams = new InferredSexAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/inferredSex/run")); @@ -1020,7 +1008,6 @@ private RestResponse runKnockout() throws Exception { KnockoutAnalysisParams knockoutAnalysisParams = null; if (commandOptions.jsonDataModel) { - knockoutAnalysisParams = new KnockoutAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/knockout/run")); @@ -1066,7 +1053,6 @@ private RestResponse runMendelianError() throws Exception { MendelianErrorAnalysisParams mendelianErrorAnalysisParams = null; if (commandOptions.jsonDataModel) { - mendelianErrorAnalysisParams = new MendelianErrorAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/mendelianError/run")); @@ -1159,7 +1145,6 @@ private RestResponse runMutationalSignature() throws Exception { MutationalSignatureAnalysisParams mutationalSignatureAnalysisParams = null; if (commandOptions.jsonDataModel) { - mutationalSignatureAnalysisParams = new MutationalSignatureAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/mutationalSignature/run")); @@ -1211,7 +1196,6 @@ private RestResponse runPlink() throws Exception { PlinkWrapperParams plinkWrapperParams = null; if (commandOptions.jsonDataModel) { - plinkWrapperParams = new PlinkWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/plink/run")); @@ -1339,7 +1323,6 @@ private RestResponse runRelatedness() throws Exception { RelatednessAnalysisParams relatednessAnalysisParams = null; if (commandOptions.jsonDataModel) { - relatednessAnalysisParams = new RelatednessAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/relatedness/run")); @@ -1380,7 +1363,6 @@ private RestResponse runRvtests() throws Exception { RvtestsWrapperParams rvtestsWrapperParams = null; if (commandOptions.jsonDataModel) { - rvtestsWrapperParams = new RvtestsWrapperParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/rvtests/run")); @@ -1454,7 +1436,6 @@ private RestResponse runSampleEligibility() throws Exception { SampleEligibilityAnalysisParams sampleEligibilityAnalysisParams = null; if (commandOptions.jsonDataModel) { - sampleEligibilityAnalysisParams = new SampleEligibilityAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/eligibility/run")); @@ -1493,7 +1474,6 @@ private RestResponse runSampleQc() throws Exception { SampleQcAnalysisParams sampleQcAnalysisParams = null; if (commandOptions.jsonDataModel) { - sampleQcAnalysisParams = new SampleQcAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/qc/run")); @@ -1594,7 +1574,6 @@ private RestResponse runSample() throws Exception { SampleVariantFilterParams sampleVariantFilterParams = null; if (commandOptions.jsonDataModel) { - sampleVariantFilterParams = new SampleVariantFilterParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/run")); @@ -1688,7 +1667,6 @@ private RestResponse runSampleStats() throws Exception { SampleVariantStatsAnalysisParams sampleVariantStatsAnalysisParams = null; if (commandOptions.jsonDataModel) { - sampleVariantStatsAnalysisParams = new SampleVariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/sample/stats/run")); @@ -1761,7 +1739,6 @@ private RestResponse runStatsExport() throws Exception { VariantStatsExportParams variantStatsExportParams = null; if (commandOptions.jsonDataModel) { - variantStatsExportParams = new VariantStatsExportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/stats/export/run")); @@ -1802,7 +1779,6 @@ private RestResponse runStats() throws Exception { VariantStatsAnalysisParams variantStatsAnalysisParams = null; if (commandOptions.jsonDataModel) { - variantStatsAnalysisParams = new VariantStatsAnalysisParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/analysis/variant/stats/run")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java index 4767a83173c..d2ed4126cd3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/CohortsCommandExecutor.java @@ -127,7 +127,6 @@ private RestResponse updateAcl() throws Exception { CohortAclUpdateParams cohortAclUpdateParams = null; if (commandOptions.jsonDataModel) { - cohortAclUpdateParams = new CohortAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/acl/{members}/update")); @@ -188,7 +187,6 @@ private RestResponse loadAnnotationSets() throws Exception { TsvAnnotationParams tsvAnnotationParams = null; if (commandOptions.jsonDataModel) { - tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/annotationSets/load")); @@ -226,7 +224,6 @@ private RestResponse create() throws Exception { CohortCreateParams cohortCreateParams = null; if (commandOptions.jsonDataModel) { - cohortCreateParams = new CohortCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/create")); @@ -312,7 +309,6 @@ private RestResponse generate() throws Exception { CohortGenerateParams cohortGenerateParams = null; if (commandOptions.jsonDataModel) { - cohortGenerateParams = new CohortGenerateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/generate")); @@ -439,7 +435,6 @@ private RestResponse update() throws Exception { CohortUpdateParams cohortUpdateParams = null; if (commandOptions.jsonDataModel) { - cohortUpdateParams = new CohortUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/{cohorts}/update")); @@ -482,7 +477,6 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception ObjectMap objectMap = null; if (commandOptions.jsonDataModel) { - objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/cohorts/{cohort}/annotationSets/{annotationSet}/annotations/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java index 29e5e25e4b9..7079d284db3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/DiseasePanelsCommandExecutor.java @@ -112,7 +112,6 @@ private RestResponse updateAcl() throws Exception { PanelAclUpdateParams panelAclUpdateParams = null; if (commandOptions.jsonDataModel) { - panelAclUpdateParams = new PanelAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/acl/{members}/update")); @@ -149,7 +148,6 @@ private RestResponse create() throws Exception { PanelCreateParams panelCreateParams = null; if (commandOptions.jsonDataModel) { - panelCreateParams = new PanelCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/create")); @@ -228,7 +226,6 @@ private RestResponse importPanels() throws Exception { PanelImportParams panelImportParams = null; if (commandOptions.jsonDataModel) { - panelImportParams = new PanelImportParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/import")); @@ -350,7 +347,6 @@ private RestResponse update() throws Exception { PanelUpdateParams panelUpdateParams = null; if (commandOptions.jsonDataModel) { - panelUpdateParams = new PanelUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/panels/{panels}/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java index 60a56535f4a..5d43691e059 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FamiliesCommandExecutor.java @@ -125,7 +125,6 @@ private RestResponse updateAcl() throws Exception { FamilyAclUpdateParams familyAclUpdateParams = null; if (commandOptions.jsonDataModel) { - familyAclUpdateParams = new FamilyAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/acl/{members}/update")); @@ -190,7 +189,6 @@ private RestResponse loadAnnotationSets() throws Exception { TsvAnnotationParams tsvAnnotationParams = null; if (commandOptions.jsonDataModel) { - tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/annotationSets/load")); @@ -227,7 +225,6 @@ private RestResponse create() throws Exception { FamilyCreateParams familyCreateParams = null; if (commandOptions.jsonDataModel) { - familyCreateParams = new FamilyCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/create")); @@ -391,7 +388,6 @@ private RestResponse update() throws Exception { FamilyUpdateParams familyUpdateParams = null; if (commandOptions.jsonDataModel) { - familyUpdateParams = new FamilyUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/{families}/update")); @@ -435,7 +431,6 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception ObjectMap objectMap = null; if (commandOptions.jsonDataModel) { - objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/families/{family}/annotationSets/{annotationSet}/annotations/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java index b4cfc6fdb9f..403df36ac0d 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/FilesCommandExecutor.java @@ -218,7 +218,6 @@ private RestResponse updateAcl() throws Exception { FileAclUpdateParams fileAclUpdateParams = null; if (commandOptions.jsonDataModel) { - fileAclUpdateParams = new FileAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/acl/{members}/update")); @@ -288,7 +287,6 @@ private RestResponse loadAnnotationSets() throws Exception { TsvAnnotationParams tsvAnnotationParams = null; if (commandOptions.jsonDataModel) { - tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/annotationSets/load")); @@ -329,7 +327,6 @@ private RestResponse create() throws Exception { FileCreateParams fileCreateParams = null; if (commandOptions.jsonDataModel) { - fileCreateParams = new FileCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/create")); @@ -425,7 +422,6 @@ private RestResponse fetch() throws Exception { FileFetch fileFetch = null; if (commandOptions.jsonDataModel) { - fileFetch = new FileFetch(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/fetch")); @@ -467,7 +463,6 @@ private RestResponse link() throws Exception { FileLinkParams fileLinkParams = null; if (commandOptions.jsonDataModel) { - fileLinkParams = new FileLinkParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/link")); @@ -513,7 +508,6 @@ private RestResponse runLink() throws Exception { FileLinkToolParams fileLinkToolParams = null; if (commandOptions.jsonDataModel) { - fileLinkToolParams = new FileLinkToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/link/run")); @@ -555,7 +549,6 @@ private RestResponse runPostlink() throws Exception { PostLinkToolParams postLinkToolParams = null; if (commandOptions.jsonDataModel) { - postLinkToolParams = new PostLinkToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/postlink/run")); @@ -721,7 +714,6 @@ private RestResponse update() throws Exception { FileUpdateParams fileUpdateParams = null; if (commandOptions.jsonDataModel) { - fileUpdateParams = new FileUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/{files}/update")); @@ -788,7 +780,6 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception { ObjectMap objectMap = null; if (commandOptions.jsonDataModel) { - objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/files/{file}/annotationSets/{annotationSet}/annotations/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java index 0675de1255f..1ced6389e2c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/IndividualsCommandExecutor.java @@ -134,7 +134,6 @@ private RestResponse updateAcl() throws Exception { IndividualAclUpdateParams individualAclUpdateParams = null; if (commandOptions.jsonDataModel) { - individualAclUpdateParams = new IndividualAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/acl/{members}/update")); @@ -205,7 +204,6 @@ private RestResponse loadAnnotationSets() throws Exception { TsvAnnotationParams tsvAnnotationParams = null; if (commandOptions.jsonDataModel) { - tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/annotationSets/load")); @@ -242,7 +240,6 @@ private RestResponse create() throws Exception { IndividualCreateParams individualCreateParams = null; if (commandOptions.jsonDataModel) { - individualCreateParams = new IndividualCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/create")); @@ -447,7 +444,6 @@ private RestResponse update() throws Exception { IndividualUpdateParams individualUpdateParams = null; if (commandOptions.jsonDataModel) { - individualUpdateParams = new IndividualUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/{individuals}/update")); @@ -517,7 +513,6 @@ private RestResponse updateAnnotationSetsAnnotations() throws Except ObjectMap objectMap = null; if (commandOptions.jsonDataModel) { - objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/individuals/{individual}/annotationSets/{annotationSet}/annotations/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java index 846c568724e..03b344a434f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/JobsCommandExecutor.java @@ -140,7 +140,6 @@ private RestResponse updateAcl() throws Exception { JobAclUpdateParams jobAclUpdateParams = null; if (commandOptions.jsonDataModel) { - jobAclUpdateParams = new JobAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/acl/{members}/update")); @@ -205,7 +204,6 @@ private RestResponse create() throws Exception { JobCreateParams jobCreateParams = null; if (commandOptions.jsonDataModel) { - jobCreateParams = new JobCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/create")); @@ -292,7 +290,6 @@ private RestResponse retry() throws Exception { JobRetryParams jobRetryParams = null; if (commandOptions.jsonDataModel) { - jobRetryParams = new JobRetryParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/retry")); @@ -428,7 +425,6 @@ private RestResponse update() throws Exception { JobUpdateParams jobUpdateParams = null; if (commandOptions.jsonDataModel) { - jobUpdateParams = new JobUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/jobs/{jobs}/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 6197d5eb410..b06ef4b655c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -185,7 +185,6 @@ private RestResponse configureCellbase() throws Exception { CellBaseConfiguration cellBaseConfiguration = null; if (commandOptions.jsonDataModel) { - cellBaseConfiguration = new CellBaseConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/cellbase/configure")); @@ -225,7 +224,6 @@ private RestResponse aggregateVariant() throws Exception { VariantAggregateParams variantAggregateParams = null; if (commandOptions.jsonDataModel) { - variantAggregateParams = new VariantAggregateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/aggregate")); @@ -280,7 +278,6 @@ private RestResponse indexVariantAnnotation() throws Exception { VariantAnnotationIndexParams variantAnnotationIndexParams = null; if (commandOptions.jsonDataModel) { - variantAnnotationIndexParams = new VariantAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/annotation/index")); @@ -322,7 +319,6 @@ private RestResponse saveVariantAnnotation() throws Exception { VariantAnnotationSaveParams variantAnnotationSaveParams = null; if (commandOptions.jsonDataModel) { - variantAnnotationSaveParams = new VariantAnnotationSaveParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/annotation/save")); @@ -356,7 +352,6 @@ private RestResponse configureVariant() throws Exception { VariantConfigureParams variantConfigureParams = null; if (commandOptions.jsonDataModel) { - variantConfigureParams = new VariantConfigureParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/configure")); @@ -393,7 +388,6 @@ private RestResponse deleteVariant() throws Exception { VariantFileDeleteParams variantFileDeleteParams = null; if (commandOptions.jsonDataModel) { - variantFileDeleteParams = new VariantFileDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/delete")); @@ -431,7 +425,6 @@ private RestResponse aggregateVariantFamily() throws Exception { VariantAggregateFamilyParams variantAggregateFamilyParams = null; if (commandOptions.jsonDataModel) { - variantAggregateFamilyParams = new VariantAggregateFamilyParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/family/aggregate")); @@ -470,7 +463,6 @@ private RestResponse indexVariantFamily() throws Exception { VariantFamilyIndexParams variantFamilyIndexParams = null; if (commandOptions.jsonDataModel) { - variantFamilyIndexParams = new VariantFamilyIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/family/index")); @@ -510,7 +502,6 @@ private RestResponse indexVariant() throws Exception { VariantIndexParams variantIndexParams = null; if (commandOptions.jsonDataModel) { - variantIndexParams = new VariantIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/index")); @@ -575,7 +566,6 @@ private RestResponse launcherVariantIndex() throws Exception { VariantFileIndexJobLauncherParams variantFileIndexJobLauncherParams = null; if (commandOptions.jsonDataModel) { - variantFileIndexJobLauncherParams = new VariantFileIndexJobLauncherParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/index/launcher")); @@ -642,7 +632,6 @@ private RestResponse runVariantJulie() throws Exception { JulieParams julieParams = null; if (commandOptions.jsonDataModel) { - julieParams = new JulieParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/julie/run")); @@ -677,7 +666,6 @@ private RestResponse repairVariantMetadata() throws Exception { VariantStorageMetadataRepairToolParams variantStorageMetadataRepairToolParams = null; if (commandOptions.jsonDataModel) { - variantStorageMetadataRepairToolParams = new VariantStorageMetadataRepairToolParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/metadata/repair")); @@ -715,7 +703,6 @@ private RestResponse synchronizeVariantMetadata() throws Exception { VariantStorageMetadataSynchronizeParams variantStorageMetadataSynchronizeParams = null; if (commandOptions.jsonDataModel) { - variantStorageMetadataSynchronizeParams = new VariantStorageMetadataSynchronizeParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/metadata/synchronize")); @@ -749,7 +736,6 @@ private RestResponse pruneVariant() throws Exception { VariantPruneParams variantPruneParams = null; if (commandOptions.jsonDataModel) { - variantPruneParams = new VariantPruneParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/prune")); @@ -788,7 +774,6 @@ private RestResponse deleteVariantSample() throws Exception { VariantSampleDeleteParams variantSampleDeleteParams = null; if (commandOptions.jsonDataModel) { - variantSampleDeleteParams = new VariantSampleDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/delete")); @@ -827,7 +812,6 @@ private RestResponse indexVariantSample() throws Exception { VariantSecondarySampleIndexParams variantSecondarySampleIndexParams = null; if (commandOptions.jsonDataModel) { - variantSecondarySampleIndexParams = new VariantSecondarySampleIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/index")); @@ -865,7 +849,6 @@ private RestResponse variantSampleIndexConfigure() throws Exception { SampleIndexConfiguration sampleIndexConfiguration = null; if (commandOptions.jsonDataModel) { - sampleIndexConfiguration = new SampleIndexConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/sample/index/configure")); @@ -916,7 +899,6 @@ private RestResponse indexVariantScore() throws Exception { VariantScoreIndexParams variantScoreIndexParams = null; if (commandOptions.jsonDataModel) { - variantScoreIndexParams = new VariantScoreIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/score/index")); @@ -959,7 +941,6 @@ private RestResponse variantSecondaryAnnotationIndex() throws Exception { VariantSecondaryAnnotationIndexParams variantSecondaryAnnotationIndexParams = null; if (commandOptions.jsonDataModel) { - variantSecondaryAnnotationIndexParams = new VariantSecondaryAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/annotation/index")); @@ -998,7 +979,6 @@ private RestResponse variantSecondarySampleIndex() throws Exception { VariantSecondarySampleIndexParams variantSecondarySampleIndexParams = null; if (commandOptions.jsonDataModel) { - variantSecondarySampleIndexParams = new VariantSecondarySampleIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/sample/index")); @@ -1036,7 +1016,6 @@ private RestResponse configureVariantSecondarySampleIndex() throws Exceptio SampleIndexConfiguration sampleIndexConfiguration = null; if (commandOptions.jsonDataModel) { - sampleIndexConfiguration = new SampleIndexConfiguration(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondary/sample/index/configure")); @@ -1067,7 +1046,6 @@ private RestResponse secondaryIndexVariant() throws Exception { VariantSecondaryAnnotationIndexParams variantSecondaryAnnotationIndexParams = null; if (commandOptions.jsonDataModel) { - variantSecondaryAnnotationIndexParams = new VariantSecondaryAnnotationIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/secondaryIndex")); @@ -1125,7 +1103,6 @@ private RestResponse deleteVariantStats() throws Exception { VariantStatsDeleteParams variantStatsDeleteParams = null; if (commandOptions.jsonDataModel) { - variantStatsDeleteParams = new VariantStatsDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/stats/delete")); @@ -1163,7 +1140,6 @@ private RestResponse indexVariantStats() throws Exception { VariantStatsIndexParams variantStatsIndexParams = null; if (commandOptions.jsonDataModel) { - variantStatsIndexParams = new VariantStatsIndexParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/stats/index")); @@ -1205,7 +1181,6 @@ private RestResponse deleteVariantStudy() throws Exception { VariantStudyDeleteParams variantStudyDeleteParams = null; if (commandOptions.jsonDataModel) { - variantStudyDeleteParams = new VariantStudyDeleteParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/operation/variant/study/delete")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java index 98bb7eb2814..e1f4f665965 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/ProjectsCommandExecutor.java @@ -103,7 +103,6 @@ private RestResponse create() throws Exception { ProjectCreateParams projectCreateParams = null; if (commandOptions.jsonDataModel) { - projectCreateParams = new ProjectCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/projects/create")); @@ -225,7 +224,6 @@ private RestResponse update() throws Exception { ProjectUpdateParams projectUpdateParams = null; if (commandOptions.jsonDataModel) { - projectUpdateParams = new ProjectUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/projects/{project}/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java index 7d0ebf47cc8..7b7041d8979 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java @@ -132,7 +132,6 @@ private RestResponse updateAcl() throws Exception { SampleAclUpdateParams sampleAclUpdateParams = null; if (commandOptions.jsonDataModel) { - sampleAclUpdateParams = new SampleAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/acl/{members}/update")); @@ -200,7 +199,6 @@ private RestResponse loadAnnotationSets() throws Exception { TsvAnnotationParams tsvAnnotationParams = null; if (commandOptions.jsonDataModel) { - tsvAnnotationParams = new TsvAnnotationParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/annotationSets/load")); @@ -236,7 +234,6 @@ private RestResponse create() throws Exception { SampleCreateParams sampleCreateParams = null; if (commandOptions.jsonDataModel) { - sampleCreateParams = new SampleCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/create")); @@ -474,7 +471,6 @@ private RestResponse update() throws Exception { SampleUpdateParams sampleUpdateParams = null; if (commandOptions.jsonDataModel) { - sampleUpdateParams = new SampleUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/{samples}/update")); @@ -534,7 +530,6 @@ private RestResponse updateAnnotationSetsAnnotations() throws Exception ObjectMap objectMap = null; if (commandOptions.jsonDataModel) { - objectMap = new ObjectMap(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/samples/{sample}/annotationSets/{annotationSet}/annotations/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java index fef8f85a042..3ede6e70bfd 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/StudiesCommandExecutor.java @@ -181,7 +181,6 @@ private RestResponse updateAcl() throws Exception { StudyAclUpdateParams studyAclUpdateParams = null; if (commandOptions.jsonDataModel) { - studyAclUpdateParams = new StudyAclUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/acl/{members}/update")); @@ -216,7 +215,6 @@ private RestResponse create() throws Exception { StudyCreateParams studyCreateParams = null; if (commandOptions.jsonDataModel) { - studyCreateParams = new StudyCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/create")); @@ -358,7 +356,6 @@ private RestResponse updateGroups() throws Exception { GroupCreateParams groupCreateParams = null; if (commandOptions.jsonDataModel) { - groupCreateParams = new GroupCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/groups/update")); @@ -389,7 +386,6 @@ private RestResponse updateGroupsUsers() throws Exception { GroupUpdateParams groupUpdateParams = null; if (commandOptions.jsonDataModel) { - groupUpdateParams = new GroupUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/groups/{group}/users/update")); @@ -426,7 +422,6 @@ private RestResponse updatePermissionRules() throws Exception { PermissionRule permissionRule = null; if (commandOptions.jsonDataModel) { - permissionRule = new PermissionRule(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/permissionRules/update")); @@ -509,7 +504,6 @@ private RestResponse update() throws Exception { StudyUpdateParams studyUpdateParams = null; if (commandOptions.jsonDataModel) { - studyUpdateParams = new StudyUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/update")); @@ -560,7 +554,6 @@ private RestResponse updateVariableSets() throws Exception { VariableSetCreateParams variableSetCreateParams = null; if (commandOptions.jsonDataModel) { - variableSetCreateParams = new VariableSetCreateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/variableSets/update")); @@ -594,7 +587,6 @@ private RestResponse updateVariableSetsVariables() throws Exception Variable variable = null; if (commandOptions.jsonDataModel) { - variable = new Variable(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/studies/{study}/variableSets/{variableSet}/variables/update")); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java index f44e3449cc5..c2480761b0f 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/UsersCommandExecutor.java @@ -134,7 +134,6 @@ private RestResponse password() throws Exception { PasswordChangeParams passwordChangeParams = null; if (commandOptions.jsonDataModel) { - passwordChangeParams = new PasswordChangeParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/password")); @@ -190,7 +189,6 @@ private RestResponse updateConfigs() throws Exception { ConfigUpdateParams configUpdateParams = null; if (commandOptions.jsonDataModel) { - configUpdateParams = new ConfigUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/{user}/configs/update")); @@ -255,7 +253,6 @@ private RestResponse update() throws Exception { UserUpdateParams userUpdateParams = null; if (commandOptions.jsonDataModel) { - userUpdateParams = new UserUpdateParams(); RestResponse res = new RestResponse<>(); res.setType(QueryType.VOID); PrintUtils.println(getObjectAsJSON(categoryName,"/{apiVersion}/users/{user}/update")); diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 1c4a4479bb0..21b9e768143 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 5c97d7f69d1..8a5cd0de53b 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 85629266564..d9e358e4632 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, group, members, studies, study, templateId, variableSet, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, variableSet, group, templateId, studies, study, members, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, files, file, members, annotationSet, folder, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, annotationSet, folder, file, files, members, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, individuals, annotationSet, members, individual, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, family, families, annotationSet, members, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, cohort, cohorts, annotationSet, members, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, members, interpretation, interpretations, clinicalAnalyses, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, clinicalAnalyses, interpretations, interpretation, members, clinicalAnalysis, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 58c38ecb630..dc8d8f8f907 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, members, interpretation, interpretations, clinicalAnalyses, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalyses, interpretations, interpretation, members, clinicalAnalysis, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index aeca965c7b2..81cae39da51 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, cohorts, annotationSet, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 747382a2b15..b16d016404b 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, members, family, families, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, family, families, annotationSet, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 89b8034de42..5251f640f97 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, files, file, members, annotationSet, folder, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, annotationSet, folder, file, files, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 98aaad0e987..d02b3cde65e 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index bf6750fc941..d26b4443259 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, individuals, annotationSet, members, individual, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index 37e3a2c9548..2fa40f4bb1a 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 481bae671e6..666c2bc2d65 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 93934f11fef..84e56923789 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 4d45393c182..c43aefd4e83 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 570ebfc9cf7..fca55584441 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 319ded3abbb..1902a9802b9 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 9873110e560..c5a9c65dbc2 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, group, members, studies, study, templateId, variableSet, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, variableSet, group, templateId, studies, study, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 458947e9b4e..75e1312fd44 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 1957998638d..20dcf8ed70d 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-02 +# Autogenerated on: 2023-11-03 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 5460d28052e..712a7c20af5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 33a9c268320..b44121e5a72 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index a322c2c9e3b..eb7f743ba10 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 9631f0aacb0..ad36e64ed70 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 7e60a93d950..cfa9601a978 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 25e941e8b0b..b524791ca20 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 7abe70688b7..97a97aaa3a2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 45eea839db8..624e63f5837 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 478a20a285a..3d60c1d23aa 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index cf96ffaaf61..c377f59750b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 6dd12a34e12..4c127e53014 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 3db333e8d16..46e60e4ce05 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index e80e58efb11..abbfcda3ee1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index df90b1e2153..7501055226c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index 736744268b5..1662f2637ac 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index d85feb6f179..00082995e1d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 2e20373c6d7..897c7238585 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-02 +* Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 0522ec1c5a9..418a0581e82 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 6f3df1f5998..beeafc20632 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 6431faa5cf3..1212831ff4b 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 6a234b6554e..d7c504eb522 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 21eb1f0422e..d8a09b02b0c 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index cae578e4413..de43021a504 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 63ce3b943da..e755e011718 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index 611b81c5727..f3173a19f88 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 534e2d3c7ed..3949189d8d8 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index be7c71c00e7..85872676aee 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 07bd4c5b07c..6c314393866 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index 54dd86064a5..d3df6335892 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 42cd10689ae..7e6faef19ec 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 4c6931b0c89..f1a64ad76bc 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 2db00a202b2..b608f4ddf47 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 5edd6753b11..d001b9138be 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index b9f8f029258..f6308428e08 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-02 + * Autogenerated on: 2023-11-03 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 972e456556c..2dd26790249 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 1b598296913..70295d0eed4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 3bd95f48564..ce670c939a5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 1eea42c98a3..4494f9564a2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index eb9aea88c65..61b41a907d1 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index f78c61e2a5a..ef3ab2d231b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index a65add7cf7e..466f5c46cb0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index f4e96d25df2..8802e16df45 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index fadca48f497..5142cc5132a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index e8f18894ef9..6c24a55fbf0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index dd437e17394..cd7536a5f85 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index dac784edf9a..03c4fde1eda 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index b13fec2f082..9adf7677cb8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index d4312e58800..f4e9db46b1e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 2d6a136c750..4cae5fc0437 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index c3c298dbbc6..1c71eecfa0b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index f0357486079..01015fe28d5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-02 + Autogenerated on: 2023-11-03 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java index f9c5c7d0f18..f8daa4e2fe2 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/generator/writers/cli/ExecutorsCliRestApiWriter.java @@ -371,7 +371,6 @@ private String getBodyParams(RestCategory restCategory, RestEndpoint restEndpoin sb.append("\n " + bodyClassName + " " + variableName + " = null;"); sb.append("\n if (commandOptions.jsonDataModel) {"); - sb.append("\n " + variableName + " = new " + bodyClassName + "();"); sb.append("\n RestResponse<" + getValidResponseNames(restEndpoint.getResponse()) + "> res = new RestResponse<>();"); sb.append("\n res.setType(QueryType.VOID);"); sb.append("\n PrintUtils.println(getObjectAsJSON(categoryName,\""+restEndpoint.getPath()+"\"));"); From eb58a44f1c630f0b316b2c4265c40e68513dbab1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 13 Nov 2023 13:38:05 +0100 Subject: [PATCH 160/354] server:scope test jackson is not necessary #TASK-2095 --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++++++++--------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- .../src/main/R/R/Individual-methods.R | 2 +- opencga-client/src/main/R/R/Job-methods.R | 2 +- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 4 ++-- opencga-client/src/main/R/R/Project-methods.R | 4 ++-- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../opencga/client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../pyopencga/rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- opencga-server/pom.xml | 4 +--- 72 files changed, 89 insertions(+), 91 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 3c30b6d022e..2a2d4a8adf0 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-03 OpenCB +* Copyright 2015-2023-11-13 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 19ca44161d1..8746d0cc58e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-03 OpenCB +* Copyright 2015-2023-11-13 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 21b9e768143..459563289aa 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 8a5cd0de53b..71e1dad3bb6 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index f09553143fb..913594e3fb5 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,21 +1,21 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## ## ProjectClient -setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, params=NULL, ...) +setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, params=NULL, ...) standardGeneric("projectClient")) # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, variableSet, members, studies, group, study, templateId, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, templateId, group, members, variableSet, studies, study, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, annotationSet, files, members, folder, file, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, members, folder, files, annotationSet, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## @@ -25,7 +25,7 @@ setGeneric("jobClient", function(OpencgaR, job, jobs, members, endpointName, par # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## @@ -35,17 +35,17 @@ setGeneric("individualClient", function(OpencgaR, individual, annotationSet, ind # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, annotationSet, families, family, members, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, families, annotationSet, members, family, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, annotationSet, cohorts, cohort, members, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, cohort, annotationSet, members, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## ## PanelClient -setGeneric("panelClient", function(OpencgaR, members, panels, endpointName, params=NULL, ...) +setGeneric("panelClient", function(OpencgaR, panels, members, endpointName, params=NULL, ...) standardGeneric("panelClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretation, members, interpretations, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, clinicalAnalyses, interpretations, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 0c29491814d..ce4e7757d75 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, interpretation, members, interpretations, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalyses, interpretations, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 7b007db3835..01447cf29b2 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, cohorts, cohort, members, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, annotationSet, members, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 3112cc1563b..76ae48fbf8d 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, families, family, members, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, families, annotationSet, members, family, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 331f0509d45..1fe1285ddfe 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, annotationSet, files, members, folder, file, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, members, folder, files, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index bcfca561b30..69eb3b2807b 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 3e136adaaa9..99d286bd4b2 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index ddb4327e9a9..142152e1837 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 666c2bc2d65..f2f6fd2d9c1 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 84e56923789..fc7bd100801 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index c43aefd4e83..22a3e83fef4 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ #' [*]: Required parameter #' @export -setMethod("panelClient", "OpencgaR", function(OpencgaR, members, panels, endpointName, params=NULL, ...) { +setMethod("panelClient", "OpencgaR", function(OpencgaR, panels, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/panels/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 8c2b7a0fcb8..b493b10f4fa 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -34,7 +34,7 @@ #' [*]: Required parameter #' @export -setMethod("projectClient", "OpencgaR", function(OpencgaR, projects, project, endpointName, params=NULL, ...) { +setMethod("projectClient", "OpencgaR", function(OpencgaR, project, projects, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/projects/create: diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index ee198ee3c12..b311baf89a1 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index f9e528e2c91..cd7b088f00b 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, variableSet, members, studies, group, study, templateId, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, group, members, variableSet, studies, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index d5b5cdfe796..9aeaa258b88 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 20dcf8ed70d..adddc7f944c 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-03 +# Autogenerated on: 2023-11-13 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 712a7c20af5..8435b397046 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index b44121e5a72..05dfcde8cc2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index eb7f743ba10..d347523ad1a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index ad36e64ed70..3a63e02ad17 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index cfa9601a978..8653ba08de1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index b524791ca20..57bf1c4274f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 97a97aaa3a2..857524ce7c6 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 624e63f5837..f0037da17a5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 3d60c1d23aa..698a001dd12 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index c377f59750b..c30324489c5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 4c127e53014..87bba3d77c7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 46e60e4ce05..fbdd5eb5726 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index abbfcda3ee1..c39c80c600d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 7501055226c..a3624af0628 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index 1662f2637ac..d7e7aba13b7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 00082995e1d..b352bbbea93 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 897c7238585..9d0805fb31d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-03 +* Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 418a0581e82..10d1651c0ef 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index beeafc20632..3a70cebf815 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 1212831ff4b..3eb5e309355 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index d7c504eb522..2c3f06ac6b7 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index d8a09b02b0c..ffffef0f04d 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index de43021a504..0f8a88dea2e 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index e755e011718..96274cd68f9 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index f3173a19f88..c2b83325104 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 3949189d8d8..0195ce72da8 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 85872676aee..08de7c4b994 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 6c314393866..8b88961f17b 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index d3df6335892..ae5e1375a84 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 7e6faef19ec..56aa472e498 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index f1a64ad76bc..d94ee0162b4 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index b608f4ddf47..ac6baacb6b7 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index d001b9138be..cf770869729 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index f6308428e08..0d477d3ca00 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-03 + * Autogenerated on: 2023-11-13 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 2dd26790249..00faf6b7311 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 70295d0eed4..da4e6ed6979 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index ce670c939a5..18cb0444591 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 4494f9564a2..7d54679aee4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 61b41a907d1..ef5dc901800 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index ef3ab2d231b..b84f8978d8d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 466f5c46cb0..4fab8a41a57 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 8802e16df45..20453644c8c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 5142cc5132a..f92f31002b9 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 6c24a55fbf0..e3fd92d265b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index cd7536a5f85..1179bd290c5 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 03c4fde1eda..7d647e89b6b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 9adf7677cb8..d6e12e0645b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index f4e9db46b1e..2299432a49b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 4cae5fc0437..714b7116678 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 1c71eecfa0b..a407439994f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 01015fe28d5..8b0f6ac08bd 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-03 + Autogenerated on: 2023-11-13 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index ad52dcc5256..93f262d0e55 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -109,7 +109,6 @@ org.codehaus.jackson jackson-mapper-asl - test com.google.protobuf @@ -367,8 +366,7 @@ true - org.eclipse.jetty:jetty-servlet:jar:9.4.17.v20190418 - org.apache.avro:avro:jar:1.7.7 + * From 58a2a76da76c41425b9750aa1ff954d683becaaa Mon Sep 17 00:00:00 2001 From: juanrizetta Date: Thu, 16 Nov 2023 12:37:00 +0100 Subject: [PATCH 161/354] docker: Ensure vim is installed in the docker. #TASK-5006 --- opencga-app/app/cloud/docker/opencga-base/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-app/app/cloud/docker/opencga-base/Dockerfile b/opencga-app/app/cloud/docker/opencga-base/Dockerfile index 5c328383c33..b6f334f9d8a 100644 --- a/opencga-app/app/cloud/docker/opencga-base/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-base/Dockerfile @@ -7,7 +7,7 @@ ARG BUILD_PATH="." ENV OPENCGA_HOME=/opt/opencga ENV OPENCGA_CONFIG_DIR=${OPENCGA_HOME}/conf -RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpass ca-certificates curl gnupg jq ncurses-bin unzip && \ +RUN apt-get update && apt-get -y upgrade && apt-get install -y lsb-release sshpass ca-certificates curl gnupg jq ncurses-bin unzip vim && \ ## Install Docker repository install -m 0755 -d /etc/apt/keyrings && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ From 1e2fe5002d95c9ba743d3be472fc4b3ec772879a Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 16 Nov 2023 15:16:20 +0100 Subject: [PATCH 162/354] cli app:Autogenerated code #TASK-5006 --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 18 +++++++++--------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 2 +- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../opencga/client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../pyopencga/rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- 71 files changed, 88 insertions(+), 88 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 2a2d4a8adf0..5be356863c5 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-13 OpenCB +* Copyright 2015-2023-11-16 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 8746d0cc58e..b6d665b76a8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-13 OpenCB +* Copyright 2015-2023-11-16 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 459563289aa..cfbbbcd3db8 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 71e1dad3bb6..200f77a9007 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 913594e3fb5..eaab25f1d98 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, templateId, group, members, variableSet, studies, study, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, templateId, study, group, variableSet, members, studies, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, file, members, folder, files, annotationSet, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, folder, file, files, members, annotationSet, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, job, jobs, members, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, sample, samples, members, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individual, annotationSet, individuals, members, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, individual, individuals, members, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, annotationSet, members, family, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, families, annotationSet, family, members, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, annotationSet, members, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, cohort, cohorts, members, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalyses, interpretations, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretations, clinicalAnalyses, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index ce4e7757d75..6c61ecb790b 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalyses, interpretations, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, clinicalAnalyses, clinicalAnalysis, members, interpretation, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 01447cf29b2..0b812191131 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, annotationSet, members, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, cohort, cohorts, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 76ae48fbf8d..c7b6c7e2eda 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, annotationSet, members, family, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, families, annotationSet, family, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 1fe1285ddfe..6652797ec91 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, file, members, folder, files, annotationSet, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, file, files, members, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 69eb3b2807b..0437d411e14 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 99d286bd4b2..bc213458afd 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, annotationSet, individuals, members, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, individual, individuals, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index 142152e1837..33f938d2c36 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, job, jobs, members, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index f2f6fd2d9c1..fe4f981c155 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index fc7bd100801..39c31443bfd 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 22a3e83fef4..82bda6cae83 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index b493b10f4fa..a4432945c30 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index b311baf89a1..be3ac2fedd7 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, annotationSet, members, samples, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, sample, samples, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index cd7b088f00b..ba11f8cbc68 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, group, members, variableSet, studies, study, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, study, group, variableSet, members, studies, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 9aeaa258b88..9f5592c1af6 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index adddc7f944c..18de5c9e748 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-13 +# Autogenerated on: 2023-11-16 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 8435b397046..d392477c488 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 05dfcde8cc2..5ad010515e5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index d347523ad1a..a5226f55c1d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 3a63e02ad17..b40625287e5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 8653ba08de1..0ffb75406df 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 57bf1c4274f..ad14313183f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 857524ce7c6..4d3824911c4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index f0037da17a5..595a6a3f89e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 698a001dd12..98fae165c5c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index c30324489c5..e674ba7cd1a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 87bba3d77c7..2ea513755f2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index fbdd5eb5726..fe3b879c5e8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index c39c80c600d..1287afa3604 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index a3624af0628..423c9269ca8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index d7e7aba13b7..ac72d10e0e3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index b352bbbea93..414be131cf2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 9d0805fb31d..0ac839dda24 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-13 +* Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 10d1651c0ef..0ee2bc44d87 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 3a70cebf815..261eebcacdd 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 3eb5e309355..6a7b5ec95c0 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 2c3f06ac6b7..37265bb8555 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index ffffef0f04d..4e342dba712 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 0f8a88dea2e..484cfe6d8b6 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 96274cd68f9..c18abd55692 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index c2b83325104..1fb3b7f2da1 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 0195ce72da8..392cc5a464e 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 08de7c4b994..4989a14e761 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 8b88961f17b..d0d8f020b98 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index ae5e1375a84..715a57c806f 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 56aa472e498..cf3d6eabe25 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index d94ee0162b4..336b83d176b 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index ac6baacb6b7..9208760894f 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index cf770869729..f24450c43ad 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 0d477d3ca00..5927ac01461 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-13 + * Autogenerated on: 2023-11-16 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 00faf6b7311..80b25019af6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index da4e6ed6979..9faddbfc22a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 18cb0444591..25ccbef39fe 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 7d54679aee4..fdd3410e17b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index ef5dc901800..46a9dfd2481 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index b84f8978d8d..19cbba58e1e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 4fab8a41a57..dfa6959715b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 20453644c8c..1a3a275de72 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index f92f31002b9..22c451748f4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index e3fd92d265b..78d73855169 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 1179bd290c5..c6eda7d8b3d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 7d647e89b6b..ee0afaa1100 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index d6e12e0645b..8399c7240b3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 2299432a49b..0441473a757 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 714b7116678..de12e5d0bfa 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index a407439994f..98f5cc61a2e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 8b0f6ac08bd..ed0c0da54f2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-13 + Autogenerated on: 2023-11-16 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From 014967cc3b15fd93c0c981207dd592a0125c5144 Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 16 Nov 2023 15:54:14 +0100 Subject: [PATCH 163/354] core: add annotationSet support for ClinicalAnalysis, #TASK-5198 --- .../clinical/ClinicalTsvAnnotationLoader.java | 53 +++++ .../internal/InternalCliOptionsParser.java | 1 + .../executors/ClinicalCommandExecutor.java | 19 ++ .../options/ClinicalCommandOptions.java | 29 +++ .../db/api/ClinicalAnalysisDBAdaptor.java | 20 +- .../db/mongodb/AnnotationMongoDBAdaptor.java | 35 ++-- .../mongodb/AuthorizationMongoDBAdaptor.java | 2 +- .../ClinicalAnalysisMongoDBAdaptor.java | 134 ++++++++++--- .../db/mongodb/IndividualMongoDBAdaptor.java | 4 +- .../mongodb/InterpretationMongoDBAdaptor.java | 10 +- .../converters/ClinicalAnalysisConverter.java | 2 +- ...linicalAnalysisCatalogMongoDBIterator.java | 25 ++- .../managers/ClinicalAnalysisManager.java | 186 ++++++++++++------ .../catalog/managers/StudyManager.java | 9 +- .../catalog/managers/AbstractManagerTest.java | 2 +- .../managers/ClinicalAnalysisManagerTest.java | 126 ++++++++++++ .../models/clinical/ClinicalAnalysis.java | 15 +- .../ClinicalAnalysisCreateParams.java | 19 +- .../clinical/ClinicalAnalysisPermissions.java | 5 +- .../ClinicalAnalysisUpdateParams.java | 19 +- .../core/models/study/StudyPermissions.java | 8 +- .../core/models/study/VariableSet.java | 3 +- .../monitor/daemons/ExecutionDaemon.java | 2 + .../rest/analysis/ClinicalWebService.java | 68 ++++++- 24 files changed, 644 insertions(+), 152 deletions(-) create mode 100644 opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalTsvAnnotationLoader.java diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalTsvAnnotationLoader.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalTsvAnnotationLoader.java new file mode 100644 index 00000000000..1d2be95e82e --- /dev/null +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalTsvAnnotationLoader.java @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2020 OpenCB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.opencb.opencga.analysis.clinical; + +import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.datastore.core.Query; +import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.analysis.annotations.TsvAnnotationLoader; +import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.managers.AnnotationSetManager; +import org.opencb.opencga.catalog.utils.Constants; +import org.opencb.opencga.catalog.utils.ParamUtils; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysisUpdateParams; +import org.opencb.opencga.core.models.common.AnnotationSet; +import org.opencb.opencga.core.models.common.Enums; +import org.opencb.opencga.core.tools.annotations.Tool; + +import java.util.Collections; + +@Tool(id = ClinicalTsvAnnotationLoader.ID, resource = Enums.Resource.CLINICAL_ANALYSIS, type = Tool.Type.OPERATION, + description = "Load annotations from TSV file.") +public class ClinicalTsvAnnotationLoader extends TsvAnnotationLoader { + public final static String ID = "clinical-tsv-load"; + + @Override + public int count(Query query) throws CatalogException { + return catalogManager.getClinicalAnalysisManager().count(study, query, token).getNumResults(); + } + + @Override + public void addAnnotationSet(String entryId, AnnotationSet annotationSet, QueryOptions options) throws CatalogException { + ClinicalAnalysisUpdateParams updateParams = new ClinicalAnalysisUpdateParams() + .setAnnotationSets(Collections.singletonList(annotationSet)); + QueryOptions queryOptions = options != null ? new QueryOptions(options) : new QueryOptions(); + queryOptions.put(Constants.ACTIONS, new ObjectMap(AnnotationSetManager.ANNOTATION_SETS, ParamUtils.BasicUpdateAction.ADD)); + + catalogManager.getClinicalAnalysisManager().update(study, entryId, updateParams, queryOptions, token); + } +} diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java index 132ad854c82..0079461d25a 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/InternalCliOptionsParser.java @@ -226,6 +226,7 @@ public InternalCliOptionsParser() { clinicalSubCommands.addCommand(RGA_INDEX_RUN_COMMAND, clinicalCommandOptions.rgaSecondaryIndexCommandOptions); clinicalSubCommands.addCommand(RGA_AUX_INDEX_RUN_COMMAND, clinicalCommandOptions.rgaAuxiliarSecondaryIndexCommandOptions); clinicalSubCommands.addCommand(EXOMISER_INTERPRETATION_RUN_COMMAND, clinicalCommandOptions.exomiserInterpretationCommandOptions); + clinicalSubCommands.addCommand("tsv-load", clinicalCommandOptions.tsvLoad); fileCommandOptions = new FileCommandOptions(commonCommandOptions, jCommander); jCommander.addCommand("files", fileCommandOptions); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/ClinicalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/ClinicalCommandExecutor.java index e0785c79fee..14256ac1652 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/ClinicalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/ClinicalCommandExecutor.java @@ -24,6 +24,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.analysis.clinical.ClinicalTsvAnnotationLoader; import org.opencb.opencga.analysis.clinical.exomiser.ExomiserInterpretationAnalysis; import org.opencb.opencga.analysis.clinical.rga.AuxiliarRgaAnalysis; import org.opencb.opencga.analysis.clinical.rga.RgaAnalysis; @@ -96,6 +97,9 @@ public void execute() throws Exception { case EXOMISER_INTERPRETATION_RUN_COMMAND: exomiserInterpretation(); break; + case "tsv-load": + tsvLoad(); + break; default: logger.error("Subcommand not valid"); break; @@ -314,4 +318,19 @@ private void exomiserInterpretation() throws Exception { // exomiserInterpretationAnalysis.setPrimary(cliOptions.primary); exomiserInterpretationAnalysis.start(); } + + private void tsvLoad() throws ToolException { + ClinicalCommandOptions.TsvLoad options = clinicalCommandOptions.tsvLoad; + + Path outDir = Paths.get(options.outDir); + + ClinicalTsvAnnotationLoader annotationLoader = new ClinicalTsvAnnotationLoader(); + annotationLoader.setAnnotationSetId(options.annotationSetId); + annotationLoader.setVariableSetId(options.variableSetId); + annotationLoader.setPath(options.filePath); + annotationLoader.setStudy(options.study); + + annotationLoader.setUp(opencgaHome.toString(), new ObjectMap(), outDir, options.commonOptions.token); + annotationLoader.start(); + } } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/ClinicalCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/ClinicalCommandOptions.java index 2663f3c7c5e..9c7f8806fc7 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/ClinicalCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/ClinicalCommandOptions.java @@ -5,6 +5,7 @@ import com.beust.jcommander.Parameters; import com.beust.jcommander.ParametersDelegate; import org.opencb.biodata.models.clinical.ClinicalProperty; +import org.opencb.opencga.analysis.clinical.ClinicalTsvAnnotationLoader; import org.opencb.opencga.analysis.clinical.exomiser.ExomiserInterpretationAnalysis; import org.opencb.opencga.analysis.clinical.rga.AuxiliarRgaAnalysis; import org.opencb.opencga.analysis.clinical.rga.RgaAnalysis; @@ -14,6 +15,7 @@ import org.opencb.opencga.analysis.clinical.zetta.ZettaInterpretationAnalysis; import org.opencb.opencga.app.cli.GeneralCliOptions; import org.opencb.opencga.app.cli.internal.InternalCliOptionsParser; +import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.models.clinical.RgaAnalysisParams; import org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.BasicVariantQueryOptions; @@ -33,6 +35,7 @@ public class ClinicalCommandOptions { public final RgaSecondaryIndexCommandOptions rgaSecondaryIndexCommandOptions; public final RgaAuxiliarSecondaryIndexCommandOptions rgaAuxiliarSecondaryIndexCommandOptions; public final ExomiserInterpretationCommandOptions exomiserInterpretationCommandOptions; + public final TsvLoad tsvLoad; public JCommander jCommander; public GeneralCliOptions.CommonCommandOptions commonCommandOptions; @@ -53,6 +56,7 @@ public ClinicalCommandOptions(GeneralCliOptions.CommonCommandOptions commonComma this.rgaSecondaryIndexCommandOptions = new RgaSecondaryIndexCommandOptions(); this.rgaAuxiliarSecondaryIndexCommandOptions = new RgaAuxiliarSecondaryIndexCommandOptions(); this.exomiserInterpretationCommandOptions = new ExomiserInterpretationCommandOptions(); + this.tsvLoad = new TsvLoad(); } @Parameters(commandNames = {TieringCommandOptions.TIERING_INTERPRETATION_RUN_COMMAND}, commandDescription = @@ -335,4 +339,29 @@ public class ExomiserInterpretationCommandOptions extends GeneralCliOptions.Stud @Parameter(names = {"-o", "--outdir"}, description = "Directory where output files will be saved", arity = 1) public String outdir; } + + @Parameters(commandNames = {"tsv-load"}, commandDescription = "Load annotations from a TSV file") + public class TsvLoad extends GeneralCliOptions.StudyOption { + + public static final String TSV_LOAD_COMMAND = ClinicalTsvAnnotationLoader.ID; + + @ParametersDelegate + public GeneralCliOptions.CommonCommandOptions commonOptions = commonCommandOptions; + + @ParametersDelegate + public InternalCliOptionsParser.JobOptions jobOptions = internalJobOptions; + + @Parameter(names = {"--file"}, description = "Path to the TSV file.", required = true, arity = 1) + public String filePath; + + @Parameter(names = {"--variable-set-id"}, description = ParamConstants.VARIABLE_SET_DESCRIPTION, required = true, arity = 1) + public String variableSetId; + + @Parameter(names = {"--annotation-set-id"}, description = "AnnotationSet id that will be given to the new annotations.", + required = true, arity = 1) + public String annotationSetId; + + @Parameter(names = {"-o", "--outdir"}, description = "Directory where output files will be saved", required = true, arity = 1) + public String outDir; + } } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java index f40e073d760..ac30c48e9d2 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java @@ -26,8 +26,10 @@ import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; +import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; +import org.opencb.opencga.core.models.study.VariableSet; import org.opencb.opencga.core.response.OpenCGAResult; import java.util.List; @@ -38,7 +40,7 @@ /** * Created by pfurio on 05/06/17. */ -public interface ClinicalAnalysisDBAdaptor extends CoreDBAdaptor { +public interface ClinicalAnalysisDBAdaptor extends AnnotationSetDBAdaptor { enum QueryParams implements QueryParam { ID("id", TEXT, ""), @@ -109,7 +111,11 @@ enum QueryParams implements QueryParam { DELETED(ParamConstants.DELETED_PARAM, BOOLEAN, ""), STUDY_UID("studyUid", INTEGER_ARRAY, ""), - STUDY("study", INTEGER_ARRAY, ""); // Alias to studyId in the database. Only for the webservices. + STUDY("study", INTEGER_ARRAY, ""), // Alias to studyId in the database. Only for the webservices. + + ANNOTATION_SETS("annotationSets", TEXT_ARRAY, ""), + ANNOTATION_SET_NAME("annotationSetName", TEXT_ARRAY, ""), + ANNOTATION(Constants.ANNOTATION, TEXT_ARRAY, ""); private static Map map; @@ -170,14 +176,16 @@ default void checkId(long clinicalAnalysisId) throws CatalogDBException, Catalog OpenCGAResult nativeInsert(Map clinicalAnalysis, String userId) throws CatalogDBException; - OpenCGAResult insert(long studyId, ClinicalAnalysis clinicalAnalysis, List clinicalAuditList, QueryOptions options) + OpenCGAResult insert(long studyId, ClinicalAnalysis clinicalAnalysis, List variableSetList, + List clinicalAuditList, QueryOptions options) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException; - OpenCGAResult update(long id, ObjectMap parameters, List clinicalAuditList, QueryOptions queryOptions) + OpenCGAResult update(long id, ObjectMap parameters, List variableSetList, + List clinicalAuditList, QueryOptions queryOptions) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException; - OpenCGAResult update(Query query, ObjectMap parameters, List clinicalAuditList, - QueryOptions queryOptions) + OpenCGAResult update(Query query, ObjectMap parameters, List variableSetList, + List clinicalAuditList, QueryOptions queryOptions) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException; OpenCGAResult get(long clinicalAnalysisUid, QueryOptions options) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AnnotationMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AnnotationMongoDBAdaptor.java index 15c7555e75e..e8cfa1d0ad1 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AnnotationMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AnnotationMongoDBAdaptor.java @@ -262,7 +262,7 @@ public boolean containsAnnotationQuery(Query query) { return query.containsKey(Constants.ANNOTATION); } - OpenCGAResult updateAnnotationSets(ClientSession clientSession, long entryId, ObjectMap parameters, + OpenCGAResult updateAnnotationSets(ClientSession clientSession, long entryUid, ObjectMap parameters, List variableSetList, QueryOptions options, boolean isVersioned) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { Map actionMap = options.getMap(Constants.ACTIONS, new HashMap<>()); @@ -281,7 +281,7 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess // Create or remove a new annotation set if (action == ParamUtils.BasicUpdateAction.ADD || action == ParamUtils.BasicUpdateAction.SET) { // 1. Check the annotation set ids are not in use - validateNewAnnotations(clientSession, entryId, annotationSetList, variableSetList, isVersioned); + validateNewAnnotations(clientSession, entryUid, annotationSetList, variableSetList, isVersioned); // 2. Obtain the list of documents that need to be inserted List annotationDocumentList = getNewAnnotationList(annotationSetList, variableSetList); @@ -290,26 +290,26 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess if (action == ParamUtils.BasicUpdateAction.SET) { if (CollectionUtils.isEmpty(internalAnnotationDocumentList)) { // 2.1 Remove all user existing annotations - removeAllAnnotationSets(clientSession, entryId, isVersioned); + removeAllAnnotationSets(clientSession, entryUid, isVersioned); } else { // 2.1 Remove all internal existing annotations - removeAllAnnotationSets(clientSession, entryId, isVersioned, true); + removeAllAnnotationSets(clientSession, entryUid, isVersioned, true); } } if (CollectionUtils.isEmpty(internalAnnotationDocumentList)) { // 3. Insert the list of documents - addNewAnnotations(clientSession, entryId, annotationDocumentList, isVersioned); + addNewAnnotations(clientSession, entryUid, annotationDocumentList, isVersioned); // 4. Set variable set map uid - id - addPrivateVariableMap(clientSession, entryId, getPrivateVariableMapToSet(annotationSetList, variableSetList), + addPrivateVariableMap(clientSession, entryUid, getPrivateVariableMapToSet(annotationSetList, variableSetList), isVersioned); } else { // 3. Insert the list of documents - addNewAnnotations(clientSession, entryId, internalAnnotationDocumentList, isVersioned, true); + addNewAnnotations(clientSession, entryUid, internalAnnotationDocumentList, isVersioned, true); // 4. Set variable set map uid - id - addPrivateVariableMap(clientSession, entryId, getPrivateVariableMapToSet(annotationSetList, variableSetList), + addPrivateVariableMap(clientSession, entryUid, getPrivateVariableMapToSet(annotationSetList, variableSetList), isVersioned, true); } @@ -317,7 +317,7 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess // Action = REMOVE // 0. Obtain the annotationSet to be removed to know the variableSet being annotated - OpenCGAResult queryResult = nativeGet(new Query(PRIVATE_UID, entryId), new QueryOptions(QueryOptions.INCLUDE, + OpenCGAResult queryResult = nativeGet(new Query(PRIVATE_UID, entryUid), new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(ANNOTATION_SETS))); if (queryResult.getNumResults() != 1) { @@ -373,7 +373,7 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess } // 1. Remove annotationSet - removeAnnotationSetByAnnotationSetId(clientSession, entryId, annotationSet.getId(), isVersioned); + removeAnnotationSetByAnnotationSetId(clientSession, entryUid, annotationSet.getId(), isVersioned); String variableSetId = annotationSetIdVariableSetUidMap.get(annotationSet.getId()); // Remove the annotation set from the variableSetAnnotationsets @@ -384,7 +384,7 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess // 2. Unset variable set map uid - id Map variableSetMapToRemove = new HashMap<>(); variableSetMapToRemove.put(variableSetId, null); - removePrivateVariableMap(clientSession, entryId, variableSetMapToRemove, isVersioned); + removePrivateVariableMap(clientSession, entryUid, variableSetMapToRemove, isVersioned); } } else if (StringUtils.isNotEmpty(annotationSet.getVariableSetId())) { VariableSet variableSet = variableSetMap.get(annotationSet.getVariableSetId()); @@ -402,19 +402,18 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess if (!variableSet.isInternal()) { // Remove all annotationSets - removeAnnotationSetByVariableSetId(clientSession, entryId, variableSet.getUid(), isVersioned); - removePrivateVariableMap(clientSession, entryId, variableSetMapToRemove, isVersioned); + removeAnnotationSetByVariableSetId(clientSession, entryUid, variableSet.getUid(), isVersioned); + removePrivateVariableMap(clientSession, entryUid, variableSetMapToRemove, isVersioned); } else { // Remove all annotationSets - removeAnnotationSetByVariableSetId(clientSession, entryId, variableSet.getUid(), isVersioned, true); - removePrivateVariableMap(clientSession, entryId, variableSetMapToRemove, isVersioned, true); + removeAnnotationSetByVariableSetId(clientSession, entryUid, variableSet.getUid(), isVersioned, true); + removePrivateVariableMap(clientSession, entryUid, variableSetMapToRemove, isVersioned, true); } } } else { throw new CatalogDBException("Could not delete AnnotationSet. AnnotationSet 'id' or 'variableSetId' not defined."); } } - } } else if (actionMap.containsKey(ANNOTATIONS)) { // Update annotation @@ -424,10 +423,10 @@ OpenCGAResult updateAnnotationSets(ClientSession clientSess List annotationDocumentList = getNewAnnotationList(Collections.singletonList(annotationSet), variableSetList); // 2. Remove all the existing annotations of the annotation set - removeAnnotationSetByAnnotationSetId(clientSession, entryId, annotationSet.getId(), isVersioned); + removeAnnotationSetByAnnotationSetId(clientSession, entryUid, annotationSet.getId(), isVersioned); // 3. Add new list of annotations - addNewAnnotations(clientSession, entryId, annotationDocumentList, isVersioned); + addNewAnnotations(clientSession, entryUid, annotationDocumentList, isVersioned); } return endWrite(startTime, 1, 1, new ArrayList<>()); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java index fff9a1ed3b3..26d65edff3f 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/AuthorizationMongoDBAdaptor.java @@ -128,7 +128,7 @@ private void initCollectionConnections() { this.dbCollectionMap.put(Enums.Resource.JOB, Collections.singletonList(dbAdaptorFactory.getCatalogJobDBAdaptor().getJobCollection())); this.dbCollectionMap.put(Enums.Resource.CLINICAL_ANALYSIS, - Collections.singletonList(dbAdaptorFactory.getClinicalAnalysisDBAdaptor().getClinicalCollection())); + Collections.singletonList(dbAdaptorFactory.getClinicalAnalysisDBAdaptor().getCollection())); // Versioned models will always have first the main collection and second the archive collection this.dbCollectionMap.put(Enums.Resource.INDIVIDUAL, Arrays.asList(dbAdaptorFactory.getCatalogIndividualDBAdaptor().getCollection(), diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java index 9ef226dabde..67f9a035aa0 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java @@ -48,6 +48,7 @@ import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.Configuration; import org.opencb.opencga.core.models.clinical.*; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.models.common.FlagAnnotation; import org.opencb.opencga.core.models.common.InternalStatus; @@ -56,22 +57,27 @@ import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.models.panel.Panel; import org.opencb.opencga.core.models.sample.Sample; +import org.opencb.opencga.core.models.study.StudyPermissions; +import org.opencb.opencga.core.models.study.VariableSet; import org.opencb.opencga.core.response.OpenCGAResult; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import java.util.function.UnaryOperator; import static org.opencb.opencga.catalog.db.api.ClinicalAnalysisDBAdaptor.QueryParams.*; +import static org.opencb.opencga.catalog.db.mongodb.AuthorizationMongoDBUtils.filterAnnotationSets; import static org.opencb.opencga.catalog.db.mongodb.AuthorizationMongoDBUtils.getQueryForAuthorisedEntries; import static org.opencb.opencga.catalog.db.mongodb.MongoDBUtils.*; /** * Created by pfurio on 05/06/17. */ -public class ClinicalAnalysisMongoDBAdaptor extends MongoDBAdaptor implements ClinicalAnalysisDBAdaptor { +public class ClinicalAnalysisMongoDBAdaptor extends AnnotationMongoDBAdaptor implements ClinicalAnalysisDBAdaptor { private static final String PRIVATE_DUE_DATE = "_dueDate"; private final MongoDBCollection clinicalCollection; @@ -87,6 +93,11 @@ public ClinicalAnalysisMongoDBAdaptor(MongoDBCollection clinicalCollection, Mong this.clinicalConverter = new ClinicalAnalysisConverter(); } + @Override + protected MongoDBCollection getCollection() { + return clinicalCollection; + } + static void fixCommentsForRemoval(ObjectMap parameters) { if (parameters.get(COMMENTS.key()) == null) { return; @@ -144,8 +155,27 @@ static void fixFilesForRemoval(ObjectMap parameters) { parameters.put(FILES.key(), fileParamList); } - public MongoDBCollection getClinicalCollection() { - return clinicalCollection; + @Override + public OpenCGAResult getAnnotationSet(long id, @Nullable String annotationSetName) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + QueryOptions queryOptions = new QueryOptions(); + List includeList = new ArrayList<>(); + + if (StringUtils.isNotEmpty(annotationSetName)) { + includeList.add(Constants.ANNOTATION_SET_NAME + "." + annotationSetName); + } else { + includeList.add(QueryParams.ANNOTATION_SETS.key()); + } + queryOptions.put(QueryOptions.INCLUDE, includeList); + + OpenCGAResult clinicalDataResult = get(id, queryOptions); + if (CollectionUtils.isEmpty(clinicalDataResult.first().getAnnotationSets())) { + return new OpenCGAResult<>(clinicalDataResult.getTime(), clinicalDataResult.getEvents(), 0, Collections.emptyList(), 0); + } else { + List annotationSets = clinicalDataResult.first().getAnnotationSets(); + int size = annotationSets.size(); + return new OpenCGAResult<>(clinicalDataResult.getTime(), clinicalDataResult.getEvents(), size, annotationSets, size); + } } @Override @@ -190,7 +220,8 @@ public OpenCGAResult update(Query query, ObjectMap parameters, } @Override - public OpenCGAResult update(long uid, ObjectMap parameters, List clinicalAuditList, QueryOptions queryOptions) + public OpenCGAResult update(long uid, ObjectMap parameters, List variableSetList, List clinicalAuditList, + QueryOptions queryOptions) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { Query query = new Query(QueryParams.UID.key(), uid); QueryOptions options = new QueryOptions() @@ -203,7 +234,8 @@ public OpenCGAResult update(long uid, ObjectMap parameters, List String clinicalAnalysisId = result.first().getId(); try { - return runTransaction(clientSession -> update(clientSession, result.first(), parameters, clinicalAuditList, queryOptions)); + return runTransaction(clientSession -> privateUpdate(clientSession, result.first(), parameters, variableSetList, + clinicalAuditList, queryOptions)); } catch (CatalogDBException e) { logger.error("Could not update clinical analysis {}: {}", clinicalAnalysisId, e.getMessage(), e); throw new CatalogDBException("Could not update clinical analysis " + clinicalAnalysisId + ": " + e.getMessage(), e.getCause()); @@ -211,26 +243,40 @@ public OpenCGAResult update(long uid, ObjectMap parameters, List } @Override - public OpenCGAResult update(Query query, ObjectMap parameters, List clinicalAuditList, QueryOptions queryOptions) - throws CatalogDBException { - return null; + public OpenCGAResult update(Query query, ObjectMap parameters, List variableSetList, List clinicalAuditList, + QueryOptions queryOptions) throws CatalogDBException { + throw new NotImplementedException("Not possible updating Clinical Analyses based on a query"); } - OpenCGAResult update(ClientSession clientSession, ClinicalAnalysis clinical, ObjectMap parameters, - List clinicalAuditList, QueryOptions queryOptions) + @Override + public OpenCGAResult update(long uid, ObjectMap parameters, List variableSetList, QueryOptions queryOptions) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + throw new NotImplementedException("Use other update method passing the ClinicalAuditList"); + } + + @Override + public OpenCGAResult update(Query query, ObjectMap parameters, List variableSetList, QueryOptions queryOptions) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + throw new NotImplementedException("Use other update method passing the ClinicalAuditList"); + } + + OpenCGAResult privateUpdate(ClientSession clientSession, ClinicalAnalysis clinical, ObjectMap parameters, + List variableSetList, List clinicalAuditList, QueryOptions queryOptions) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { long tmpStartTime = startQuery(); String clinicalAnalysisId = clinical.getId(); long clinicalAnalysisUid = clinical.getUid(); + DataResult result = updateAnnotationSets(clientSession, clinicalAnalysisUid, parameters, variableSetList, queryOptions, false); + + // Perform the update Query query = new Query(QueryParams.UID.key(), clinicalAnalysisUid); UpdateDocument updateDocument = parseAndValidateUpdateParams(parameters, clinicalAuditList, query, queryOptions); Document updateOperation = updateDocument.toFinalUpdateDocument(); - List events = new ArrayList<>(); if (!updateOperation.isEmpty() || !updateDocument.getNestedUpdateList().isEmpty()) { - DataResult update; + DataResult update; if (!updateOperation.isEmpty()) { Bson bsonQuery = Filters.eq(PRIVATE_UID, clinicalAnalysisUid); @@ -270,7 +316,7 @@ OpenCGAResult update(ClientSession clientSession, ClinicalAnalysis clinical, Obj } } - } else { + } else if (result.getNumUpdated() == 0) { throw new CatalogDBException("Nothing to update"); } @@ -679,7 +725,7 @@ public DBIterator iterator(Query query, QueryOptions options) public DBIterator iterator(ClientSession clientSession, Query query, QueryOptions options) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { MongoDBIterator mongoCursor = getMongoCursor(clientSession, query, options, null); - return new ClinicalAnalysisCatalogMongoDBIterator<>(mongoCursor, clientSession, clinicalConverter, dbAdaptorFactory, options); + return new ClinicalAnalysisCatalogMongoDBIterator<>(mongoCursor, clientSession, clinicalConverter, null, dbAdaptorFactory, options); } @Override @@ -694,7 +740,7 @@ private DBIterator nativeIterator(ClientSession clientSession, Query q queryOptions.put(NATIVE_QUERY, true); MongoDBIterator mongoCursor = getMongoCursor(clientSession, query, queryOptions); - return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, clientSession, null, dbAdaptorFactory, queryOptions); + return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, clientSession, null, null, dbAdaptorFactory, queryOptions); } @Override @@ -702,7 +748,12 @@ public DBIterator iterator(long studyUid, Query query, QueryOp throws CatalogDBException, CatalogAuthorizationException, CatalogParameterException { query.put(PRIVATE_STUDY_UID, studyUid); MongoDBIterator mongoCursor = getMongoCursor(query, options, user); - return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, null, clinicalConverter, dbAdaptorFactory, studyUid, user, options); + Document studyDocument = getStudyDocument(null, studyUid); + UnaryOperator iteratorFilter = (d) -> filterAnnotationSets(studyDocument, d, user, + StudyPermissions.Permissions.VIEW_CLINICAL_ANNOTATIONS.name(), + ClinicalAnalysisPermissions.VIEW_ANNOTATIONS.name()); + return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, null, clinicalConverter, iteratorFilter, dbAdaptorFactory, studyUid, + user, options); } @Override @@ -710,10 +761,14 @@ public DBIterator nativeIterator(long studyUid, Query query, QueryOptions option throws CatalogDBException, CatalogAuthorizationException, CatalogParameterException { QueryOptions queryOptions = options != null ? new QueryOptions(options) : new QueryOptions(); queryOptions.put(NATIVE_QUERY, true); - query.put(PRIVATE_STUDY_UID, studyUid); MongoDBIterator mongoCursor = getMongoCursor(query, queryOptions, user); - return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, null, null, dbAdaptorFactory, studyUid, user, options); + Document studyDocument = getStudyDocument(null, studyUid); + UnaryOperator iteratorFilter = (d) -> filterAnnotationSets(studyDocument, d, user, + StudyPermissions.Permissions.VIEW_CLINICAL_ANNOTATIONS.name(), + ClinicalAnalysisPermissions.VIEW_ANNOTATIONS.name()); + return new ClinicalAnalysisCatalogMongoDBIterator(mongoCursor, null, null, iteratorFilter, dbAdaptorFactory, studyUid, user, + options); } private MongoDBIterator getMongoCursor(ClientSession clientSession, Query query, QueryOptions options) @@ -823,14 +878,15 @@ public OpenCGAResult nativeInsert(Map clinicalAnalysis, String u } @Override - public OpenCGAResult insert(long studyId, ClinicalAnalysis clinicalAnalysis, List clinicalAuditList, - QueryOptions options) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { + public OpenCGAResult insert(long studyId, ClinicalAnalysis clinicalAnalysis, List variableSetList, + List clinicalAuditList, QueryOptions options) + throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { try { return runTransaction(clientSession -> { long tmpStartTime = startQuery(); logger.debug("Starting ClinicalAnalysis insert transaction for ClinicalAnalysis id '{}'", clinicalAnalysis.getId()); dbAdaptorFactory.getCatalogStudyDBAdaptor().checkId(studyId); - insert(clientSession, studyId, clinicalAnalysis, clinicalAuditList); + insert(clientSession, studyId, clinicalAnalysis, variableSetList, clinicalAuditList); return endWrite(tmpStartTime, 1, 1, 0, 0, null); }); } catch (Exception e) { @@ -839,7 +895,8 @@ public OpenCGAResult insert(long studyId, ClinicalAnalysis clinicalAnalysis, Lis } } - ClinicalAnalysis insert(ClientSession clientSession, long studyId, ClinicalAnalysis clinicalAnalysis, List clinicalAudit) + ClinicalAnalysis insert(ClientSession clientSession, long studyId, ClinicalAnalysis clinicalAnalysis, List variableSetList, + List clinicalAudit) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { if (clinicalAnalysis.getInterpretation() != null) { InterpretationMongoDBAdaptor interpretationDBAdaptor = dbAdaptorFactory.getInterpretationDBAdaptor(); @@ -865,7 +922,7 @@ ClinicalAnalysis insert(ClientSession clientSession, long studyId, ClinicalAnaly clinicalAnalysis.setUuid(UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.CLINICAL)); } - Document clinicalDocument = clinicalConverter.convertToStorageType(clinicalAnalysis); + Document clinicalDocument = clinicalConverter.convertToStorageType(clinicalAnalysis, variableSetList); if (StringUtils.isNotEmpty(clinicalAnalysis.getCreationDate())) { clinicalDocument.put(PRIVATE_CREATION_DATE, TimeUtils.toDate(clinicalAnalysis.getCreationDate())); } else { @@ -1001,8 +1058,8 @@ void updateClinicalAnalysisFamilyReferences(ClientSession clientSession, Family } ObjectMap params = new ObjectMap(QueryParams.FAMILY.key(), familyCopy); - OpenCGAResult result = dbAdaptorFactory.getClinicalAnalysisDBAdaptor().update(clientSession, clinicalAnalysis, params, - null, QueryOptions.empty()); + OpenCGAResult result = dbAdaptorFactory.getClinicalAnalysisDBAdaptor().privateUpdate(clientSession, clinicalAnalysis, + params, Collections.emptyList(), null, QueryOptions.empty()); if (result.getNumUpdated() != 1) { throw new CatalogDBException("ClinicalAnalysis '" + clinicalAnalysis.getId() + "' could not be updated to the latest " + "family version of '" + family.getId() + "'"); @@ -1059,7 +1116,7 @@ void updateClinicalAnalysisPanelReferences(ClientSession clientSession, Panel pa actionMap.put(PANELS.key(), ParamUtils.BasicUpdateAction.SET); QueryOptions updateOptions = new QueryOptions(Constants.ACTIONS, actionMap); ObjectMap params = new ObjectMap(PANELS.key(), panelList); - update(clientSession, clinicalAnalysis, params, null, updateOptions); + privateUpdate(clientSession, clinicalAnalysis, params, Collections.emptyList(), null, updateOptions); // Update references from Interpretations dbAdaptorFactory.getInterpretationDBAdaptor().updateInterpretationPanelReferences(clientSession, clinicalAnalysis, panel); @@ -1082,6 +1139,7 @@ protected Bson parseQuery(Query query, Document extraQuery) private Bson parseQuery(Query query, Document extraQuery, String user) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { List andBsonList = new ArrayList<>(); + Document annotationDocument = null; Query queryCopy = new Query(query); queryCopy.remove(QueryParams.DELETED.key()); @@ -1094,9 +1152,13 @@ private Bson parseQuery(Query query, Document extraQuery, String user) andBsonList.addAll(AuthorizationMongoDBUtils.parseAclQuery(studyDocument, queryCopy, Enums.Resource.CLINICAL_ANALYSIS, user, configuration)); } else { - // Get the document query needed to check the permissions as well - andBsonList.add(getQueryForAuthorisedEntries(studyDocument, user, - ClinicalAnalysisPermissions.VIEW.name(), Enums.Resource.CLINICAL_ANALYSIS, configuration)); + if (containsAnnotationQuery(query)) { + andBsonList.add(getQueryForAuthorisedEntries(studyDocument, user, + ClinicalAnalysisPermissions.VIEW_ANNOTATIONS.name(), Enums.Resource.CLINICAL_ANALYSIS, configuration)); + } else { + andBsonList.add(getQueryForAuthorisedEntries(studyDocument, user, ClinicalAnalysisPermissions.VIEW.name(), + Enums.Resource.CLINICAL_ANALYSIS, configuration)); + } } queryCopy.remove(ParamConstants.ACL_PARAM); @@ -1107,6 +1169,9 @@ private Bson parseQuery(Query query, Document extraQuery, String user) QueryParams queryParam = QueryParams.getParam(entry.getKey()) != null ? QueryParams.getParam(entry.getKey()) : QueryParams.getParam(key); if (queryParam == null) { + if (Constants.PRIVATE_ANNOTATION_PARAM_TYPES.equals(entry.getKey())) { + continue; + } throw new CatalogDBException("Unexpected parameter " + entry.getKey() + ". The parameter does not exist or cannot be " + "queried for."); } @@ -1154,6 +1219,12 @@ private Bson parseQuery(Query query, Document extraQuery, String user) queryCopy.getString(queryParam.key()))); addAutoOrQuery(INTERNAL_STATUS_ID.key(), queryParam.key(), queryCopy, INTERNAL_STATUS_ID.type(), andBsonList); break; + case ANNOTATION: + if (annotationDocument == null) { + annotationDocument = createAnnotationQuery(queryCopy.getString(QueryParams.ANNOTATION.key()), + queryCopy.get(Constants.PRIVATE_ANNOTATION_PARAM_TYPES, ObjectMap.class)); + } + break; // Other parameter that can be queried. case ID: case UUID: @@ -1179,11 +1250,14 @@ private Bson parseQuery(Query query, Document extraQuery, String user) throw new CatalogDBException("Cannot query by parameter " + queryParam.key()); } } catch (Exception e) { - logger.error("Error with " + entry.getKey() + " " + entry.getValue()); + logger.error("Error with {}: {}", entry.getKey(), entry.getValue()); throw new CatalogDBException(e); } } + if (annotationDocument != null && !annotationDocument.isEmpty()) { + andBsonList.add(annotationDocument); + } if (extraQuery != null && !extraQuery.isEmpty()) { andBsonList.add(extraQuery); } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java index 6437a0293b2..d9c6857200a 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java @@ -625,8 +625,8 @@ private void updateClinicalAnalysisIndividualReferences(ClientSession clientSess ObjectMap params = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.PROBAND.key(), individualCopy); - OpenCGAResult result = dbAdaptorFactory.getClinicalAnalysisDBAdaptor().update(clientSession, clinicalAnalysis, params, null, - QueryOptions.empty()); + OpenCGAResult result = dbAdaptorFactory.getClinicalAnalysisDBAdaptor().privateUpdate(clientSession, clinicalAnalysis, + params, Collections.emptyList(), null, QueryOptions.empty()); if (result.getNumUpdated() != 1) { throw new CatalogDBException("ClinicalAnalysis '" + clinicalAnalysis.getId() + "' could not be updated to the latest " + "individual version of '" + individual.getId() + "'"); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/InterpretationMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/InterpretationMongoDBAdaptor.java index cf2b0a64eaa..97b1d50546b 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/InterpretationMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/InterpretationMongoDBAdaptor.java @@ -200,7 +200,7 @@ private void updateClinicalAnalysisReferences(ClientSession clientSession, Inter } // Update interpretation(s) in ClinicalAnalysis - clinicalDBAdaptor.update(clientSession, ca, params, clinicalAuditList, options); + clinicalDBAdaptor.privateUpdate(clientSession, ca, params, Collections.emptyList(), clinicalAuditList, options); break; case SECONDARY: // Add to secondaryInterpretations array in ClinicalAnalysis @@ -215,7 +215,7 @@ private void updateClinicalAnalysisReferences(ClientSession clientSession, Inter params.put(ClinicalAnalysisDBAdaptor.QueryParams.INTERPRETATION.key(), null); } - clinicalDBAdaptor.update(clientSession, ca, params, clinicalAuditList, options); + clinicalDBAdaptor.privateUpdate(clientSession, ca, params, Collections.emptyList(), clinicalAuditList, options); break; default: throw new IllegalStateException("Unknown action " + action); @@ -785,7 +785,8 @@ private void updateClinicalAnalysisInterpretationReference(ClientSession clientS params = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.SECONDARY_INTERPRETATIONS.key(), interpretationList); } - OpenCGAResult update = clinicalDBAdaptor.update(clientSession, ca, params, clinicalAuditList, options); + OpenCGAResult update = clinicalDBAdaptor.privateUpdate(clientSession, ca, params, Collections.emptyList(), clinicalAuditList, + options); if (update.getNumUpdated() != 1) { throw new CatalogDBException("Could not update interpretation reference in Clinical Analysis to new version"); } @@ -877,7 +878,8 @@ OpenCGAResult delete(ClientSession clientSession, Interpretation interpretation, actions.put(ClinicalAnalysisDBAdaptor.QueryParams.SECONDARY_INTERPRETATIONS.key(), ParamUtils.BasicUpdateAction.REMOVE); clinicalOptions.put(Constants.ACTIONS, actions); } - clinicalDBAdaptor.update(clientSession, clinicalAnalysis, clinicalParams, clinicalAuditList, clinicalOptions); + clinicalDBAdaptor.privateUpdate(clientSession, clinicalAnalysis, clinicalParams, Collections.emptyList(), clinicalAuditList, + clinicalOptions); Query query = new Query() .append(QueryParams.UID.key(), interpretation.getUid()) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java index 1244c9a7b7e..9fb50af19d7 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java @@ -32,7 +32,7 @@ /** * Created by pfurio on 05/06/17. */ -public class ClinicalAnalysisConverter extends OpenCgaMongoConverter { +public class ClinicalAnalysisConverter extends AnnotableConverter { public ClinicalAnalysisConverter() { super(ClinicalAnalysis.class); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/iterators/ClinicalAnalysisCatalogMongoDBIterator.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/iterators/ClinicalAnalysisCatalogMongoDBIterator.java index 05607ed5a68..fa4ead98ef1 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/iterators/ClinicalAnalysisCatalogMongoDBIterator.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/iterators/ClinicalAnalysisCatalogMongoDBIterator.java @@ -21,24 +21,26 @@ import org.bson.Document; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.commons.datastore.mongodb.GenericDocumentComplexConverter; import org.opencb.commons.datastore.mongodb.MongoDBIterator; import org.opencb.opencga.catalog.db.api.*; import org.opencb.opencga.catalog.db.mongodb.*; +import org.opencb.opencga.catalog.db.mongodb.converters.AnnotableConverter; import org.opencb.opencga.catalog.exceptions.CatalogAuthorizationException; import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; import org.opencb.opencga.core.common.JacksonUtils; +import org.opencb.opencga.core.models.common.Annotable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.*; +import java.util.function.UnaryOperator; import static org.opencb.opencga.catalog.db.api.ClinicalAnalysisDBAdaptor.QueryParams.*; import static org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptor.NATIVE_QUERY; -public class ClinicalAnalysisCatalogMongoDBIterator extends CatalogMongoDBIterator { +public class ClinicalAnalysisCatalogMongoDBIterator extends AnnotableCatalogMongoDBIterator { private long studyUid; private String user; @@ -54,8 +56,6 @@ public class ClinicalAnalysisCatalogMongoDBIterator extends CatalogMongoDBIte private QueryOptions interpretationQueryOptions; private QueryOptions panelQueryOptions; - private QueryOptions options; - private Queue clinicalAnalysisListBuffer; private Logger logger; @@ -68,21 +68,20 @@ public class ClinicalAnalysisCatalogMongoDBIterator extends CatalogMongoDBIte private static final String UID_VERSION_SEP = "___"; public ClinicalAnalysisCatalogMongoDBIterator(MongoDBIterator mongoCursor, ClientSession clientSession, - GenericDocumentComplexConverter converter, MongoDBAdaptorFactory dbAdaptorFactory, - QueryOptions options) { - this(mongoCursor, clientSession, converter, dbAdaptorFactory, 0, null, options); + AnnotableConverter converter, UnaryOperator filter, + MongoDBAdaptorFactory dbAdaptorFactory, QueryOptions options) { + this(mongoCursor, clientSession, converter, filter, dbAdaptorFactory, 0, null, options); } public ClinicalAnalysisCatalogMongoDBIterator(MongoDBIterator mongoCursor, ClientSession clientSession, - GenericDocumentComplexConverter converter, MongoDBAdaptorFactory dbAdaptorFactory, - long studyUid, String user, QueryOptions options) { - super(mongoCursor, clientSession, converter, null); + AnnotableConverter converter, UnaryOperator filter, + MongoDBAdaptorFactory dbAdaptorFactory, long studyUid, String user, + QueryOptions options) { + super(mongoCursor, clientSession, converter, filter, options); this.user = user; this.studyUid = studyUid; - this.options = options; - this.fileDBAdaptor = dbAdaptorFactory.getCatalogFileDBAdaptor(); this.familyDBAdaptor = dbAdaptorFactory.getCatalogFamilyDBAdaptor(); this.individualDBAdaptor = dbAdaptorFactory.getCatalogIndividualDBAdaptor(); @@ -110,7 +109,7 @@ public E next() { addAclInformation(next, options); if (converter != null) { - return (E) converter.convertToDataModelType(next); + return (E) converter.convertToDataModelType(next, options); } else { return (E) next; } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java index da22c3da07b..63a0ca46dd6 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java @@ -19,7 +19,10 @@ import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.opencb.biodata.models.clinical.*; +import org.opencb.biodata.models.clinical.ClinicalAnalyst; +import org.opencb.biodata.models.clinical.ClinicalAudit; +import org.opencb.biodata.models.clinical.ClinicalComment; +import org.opencb.biodata.models.clinical.Disorder; import org.opencb.biodata.models.common.Status; import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.ObjectMap; @@ -34,16 +37,19 @@ import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; import org.opencb.opencga.catalog.models.InternalGetDataResult; +import org.opencb.opencga.catalog.utils.AnnotationUtils; import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.catalog.utils.UuidUtils; import org.opencb.opencga.core.api.ParamConstants; +import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.Configuration; import org.opencb.opencga.core.models.AclEntryList; import org.opencb.opencga.core.models.AclParams; import org.opencb.opencga.core.models.audit.AuditRecord; import org.opencb.opencga.core.models.clinical.*; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.models.common.FlagAnnotation; import org.opencb.opencga.core.models.common.FlagValue; @@ -56,6 +62,7 @@ import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.study.StudyPermissions; +import org.opencb.opencga.core.models.study.VariableSet; import org.opencb.opencga.core.models.study.configuration.ClinicalConsent; import org.opencb.opencga.core.models.study.configuration.*; import org.opencb.opencga.core.models.user.User; @@ -64,6 +71,7 @@ import org.slf4j.LoggerFactory; import javax.annotation.Nullable; +import java.io.IOException; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -75,7 +83,7 @@ /** * Created by pfurio on 05/06/17. */ -public class ClinicalAnalysisManager extends ResourceManager { +public class ClinicalAnalysisManager extends AnnotationSetManager { public static final QueryOptions INCLUDE_CLINICAL_IDS = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( ClinicalAnalysisDBAdaptor.QueryParams.ID.key(), ClinicalAnalysisDBAdaptor.QueryParams.UID.key(), @@ -204,9 +212,10 @@ public DBIterator iterator(String studyStr, Query query, Query options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = catalogManager.getUserManager().getUserId(sessionId); - Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); + Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET); fixQueryObject(study, query, userId, sessionId); + AnnotationUtils.fixQueryOptionAnnotation(options); query.append(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); return clinicalDBAdaptor.iterator(study.getUid(), query, options, userId); @@ -222,7 +231,7 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis Boolean skipCreateDefaultInterpretation, QueryOptions options, String token) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(token); - Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, StudyManager.INCLUDE_CONFIGURATION); + Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET_AND_CONFIGURATION); ObjectMap auditParams = new ObjectMap() .append("study", studyStr) @@ -258,6 +267,7 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis clinicalAnalysis.setQualityControl(ParamUtils.defaultObject(clinicalAnalysis.getQualityControl(), ClinicalAnalysisQualityControl::new)); clinicalAnalysis.setPanels(ParamUtils.defaultObject(clinicalAnalysis.getPanels(), Collections.emptyList())); + clinicalAnalysis.setAnnotationSets(ParamUtils.defaultObject(clinicalAnalysis.getAnnotationSets(), Collections.emptyList())); if (clinicalAnalysis.getQualityControl().getComments() != null) { for (ClinicalComment comment : clinicalAnalysis.getQualityControl().getComments()) { @@ -561,7 +571,8 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis clinicalAuditList.add(new ClinicalAudit(userId, ClinicalAudit.Action.CREATE_CLINICAL_ANALYSIS, "Create ClinicalAnalysis '" + clinicalAnalysis.getId() + "'", TimeUtils.getTime())); - OpenCGAResult insert = clinicalDBAdaptor.insert(study.getUid(), clinicalAnalysis, clinicalAuditList, options); + OpenCGAResult insert = clinicalDBAdaptor.insert(study.getUid(), clinicalAnalysis, study.getVariableSets(), + clinicalAuditList, options); insert.addEvents(events); auditManager.auditCreate(userId, Enums.Resource.CLINICAL_ANALYSIS, clinicalAnalysis.getId(), clinicalAnalysis.getUuid(), @@ -966,7 +977,7 @@ public OpenCGAResult update(String studyStr, Query query, Clin public OpenCGAResult update(String studyStr, Query query, ClinicalAnalysisUpdateParams updateParams, boolean ignoreException, QueryOptions options, String token) throws CatalogException { String userId = userManager.getUserId(token); - Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_CONFIGURATION); + Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET_AND_CONFIGURATION); String operationId = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); @@ -988,6 +999,7 @@ public OpenCGAResult update(String studyStr, Query query, Clin DBIterator iterator; try { fixQueryObject(study, query, userId, token); + AnnotationUtils.fixQueryOptionAnnotation(options); query.append(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); iterator = clinicalDBAdaptor.iterator(study.getUid(), query, new QueryOptions(), userId); } catch (CatalogException e) { @@ -1026,7 +1038,7 @@ public OpenCGAResult update(String studyStr, Query query, Clin public OpenCGAResult update(String studyStr, String clinicalId, ClinicalAnalysisUpdateParams updateParams, QueryOptions options, String token) throws CatalogException { String userId = userManager.getUserId(token); - Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_CONFIGURATION); + Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET_AND_CONFIGURATION); String operationId = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); @@ -1097,7 +1109,7 @@ public OpenCGAResult update(String studyStr, List clin public OpenCGAResult update(String studyStr, List clinicalIds, ClinicalAnalysisUpdateParams updateParams, boolean ignoreException, QueryOptions options, String token) throws CatalogException { String userId = userManager.getUserId(token); - Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_CONFIGURATION); + Study study = studyManager.resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET_AND_CONFIGURATION); String operationId = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); @@ -1157,6 +1169,25 @@ public OpenCGAResult update(String studyStr, List clin private OpenCGAResult update(Study study, ClinicalAnalysis clinicalAnalysis, ClinicalAnalysisUpdateParams updateParams, String userId, QueryOptions options) throws CatalogException { + ClinicalAnalysisUpdateParams updateParamsClone; + try { + updateParamsClone = JacksonUtils.copy(updateParams, ClinicalAnalysisUpdateParams.class); + } catch (IOException e) { + throw new CatalogException("Could not clone ClinicalAnalysisUpdateParams object"); + } + + ObjectMap parameters; + if (updateParamsClone != null) { + try { + parameters = updateParamsClone.getUpdateMap(); + } catch (JsonProcessingException e) { + throw new CatalogException("Could not parse ClinicalUpdateParams object: " + e.getMessage(), e); + } + } else { + throw new CatalogException("Empty update parameters. Nothing to update."); + } + ParamUtils.checkUpdateParametersMap(parameters); + options = ParamUtils.defaultObject(options, QueryOptions::new); if (study.getInternal() == null || study.getInternal().getConfiguration() == null || study.getInternal().getConfiguration().getClinical() == null) { @@ -1164,10 +1195,30 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } ClinicalAnalysisStudyConfiguration clinicalConfiguration = study.getInternal().getConfiguration().getClinical(); - authorizationManager.checkClinicalAnalysisPermission(study.getUid(), clinicalAnalysis.getUid(), userId, - ClinicalAnalysisPermissions.WRITE); - List events = new LinkedList<>(); + // Check permissions... + // Only check write annotation permissions if the user wants to update the annotation sets + if (updateParamsClone.getAnnotationSets() != null) { + authorizationManager.checkClinicalAnalysisPermission(study.getUid(), clinicalAnalysis.getUid(), userId, + ClinicalAnalysisPermissions.WRITE_ANNOTATIONS); + } + // Only check update permissions if the user wants to update anything apart from the annotation sets + if ((parameters.size() == 1 && !parameters.containsKey(SampleDBAdaptor.QueryParams.ANNOTATION_SETS.key())) + || parameters.size() > 1) { + authorizationManager.checkClinicalAnalysisPermission(study.getUid(), clinicalAnalysis.getUid(), userId, + ClinicalAnalysisPermissions.WRITE); + } + + if (parameters.containsKey(ClinicalAnalysisDBAdaptor.QueryParams.ANNOTATION_SETS.key())) { + Map actionMap = options.getMap(Constants.ACTIONS, new HashMap<>()); + if (!actionMap.containsKey(AnnotationSetManager.ANNOTATION_SETS) + && !actionMap.containsKey(AnnotationSetManager.ANNOTATIONS)) { + logger.warn("Assuming the user wants to add the list of annotation sets provided"); + actionMap.put(AnnotationSetManager.ANNOTATION_SETS, ParamUtils.BasicUpdateAction.ADD); + options.put(Constants.ACTIONS, actionMap); + } + } + List events = new LinkedList<>(); if (StringUtils.isNotEmpty(clinicalAnalysis.getCreationDate())) { ParamUtils.checkDateFormat(clinicalAnalysis.getCreationDate(), ClinicalAnalysisDBAdaptor.QueryParams.CREATION_DATE.key()); } @@ -1176,29 +1227,17 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli ClinicalAnalysisDBAdaptor.QueryParams.MODIFICATION_DATE.key()); } - ObjectMap parameters; - if (updateParams != null) { - try { - parameters = updateParams.getUpdateMap(); - } catch (JsonProcessingException e) { - throw new CatalogException("Could not parse ClinicalUpdateParams object: " + e.getMessage(), e); - } - } else { - throw new CatalogException("Empty update parameters. Nothing to update."); - } - ParamUtils.checkUpdateParametersMap(parameters); - Map actionMap = options.getMap(Constants.ACTIONS); - if (updateParams.getId() != null) { - ParamUtils.checkIdentifier(updateParams.getId(), ClinicalAnalysisDBAdaptor.QueryParams.ID.key()); + if (updateParamsClone.getId() != null) { + ParamUtils.checkIdentifier(updateParamsClone.getId(), ClinicalAnalysisDBAdaptor.QueryParams.ID.key()); } - if (StringUtils.isNotEmpty(updateParams.getDueDate()) && TimeUtils.toDate(updateParams.getDueDate()) == null) { + if (StringUtils.isNotEmpty(updateParamsClone.getDueDate()) && TimeUtils.toDate(updateParamsClone.getDueDate()) == null) { throw new CatalogException("Unrecognised due date. Accepted format is: yyyyMMddHHmmss"); } - if (updateParams.getComments() != null && !updateParams.getComments().isEmpty()) { - List comments = new ArrayList<>(updateParams.getComments().size()); + if (updateParamsClone.getComments() != null && !updateParamsClone.getComments().isEmpty()) { + List comments = new ArrayList<>(updateParamsClone.getComments().size()); ParamUtils.AddRemoveReplaceAction action = ParamUtils.AddRemoveReplaceAction.from(actionMap, ClinicalAnalysisDBAdaptor.QueryParams.COMMENTS.key(), ParamUtils.AddRemoveReplaceAction.ADD); @@ -1207,7 +1246,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli case ADD: // Ensure each comment has a different milisecond Calendar calendar = Calendar.getInstance(); - for (ClinicalCommentParam comment : updateParams.getComments()) { + for (ClinicalCommentParam comment : updateParamsClone.getComments()) { comments.add(new ClinicalComment(userId, comment.getMessage(), comment.getTags(), TimeUtils.getTimeMillis(calendar.getTime()))); calendar.add(Calendar.MILLISECOND, 1); @@ -1215,7 +1254,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli break; case REMOVE: case REPLACE: - for (ClinicalCommentParam comment : updateParams.getComments()) { + for (ClinicalCommentParam comment : updateParamsClone.getComments()) { if (StringUtils.isEmpty(comment.getDate())) { throw new CatalogException("Missing mandatory 'date' field. This field is mandatory when action is '" + action + "'."); @@ -1231,13 +1270,13 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } if (parameters.get(InterpretationDBAdaptor.QueryParams.ANALYST.key()) != null) { - if (StringUtils.isNotEmpty(updateParams.getAnalyst().getId())) { + if (StringUtils.isNotEmpty(updateParamsClone.getAnalyst().getId())) { QueryOptions userOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.ID.key(), UserDBAdaptor.QueryParams.NAME.key(), UserDBAdaptor.QueryParams.EMAIL.key())); // Check user exists - OpenCGAResult userResult = userDBAdaptor.get(updateParams.getAnalyst().getId(), userOptions); + OpenCGAResult userResult = userDBAdaptor.get(updateParamsClone.getAnalyst().getId(), userOptions); if (userResult.getNumResults() == 0) { - throw new CatalogException("User '" + updateParams.getAnalyst().getId() + "' not found"); + throw new CatalogException("User '" + updateParamsClone.getAnalyst().getId() + "' not found"); } parameters.put(InterpretationDBAdaptor.QueryParams.ANALYST.key(), new ClinicalAnalyst(userResult.first().getId(), @@ -1249,7 +1288,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } } if (parameters.get(ClinicalAnalysisDBAdaptor.QueryParams.QUALITY_CONTROL.key()) != null) { - ClinicalAnalysisQualityControl qualityControl = updateParams.getQualityControl().toClinicalQualityControl(); + ClinicalAnalysisQualityControl qualityControl = updateParamsClone.getQualityControl().toClinicalQualityControl(); if (qualityControl.getComments() != null) { for (ClinicalComment comment : qualityControl.getComments()) { comment.setDate(TimeUtils.getTime()); @@ -1259,27 +1298,28 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.QUALITY_CONTROL.key(), qualityControl); } - if (updateParams.getFiles() != null && !updateParams.getFiles().isEmpty()) { - clinicalAnalysis.setFiles(updateParams.getFiles().stream().map(FileReferenceParam::toFile).collect(Collectors.toList())); + if (updateParamsClone.getFiles() != null && !updateParamsClone.getFiles().isEmpty()) { + clinicalAnalysis.setFiles(updateParamsClone.getFiles().stream().map(FileReferenceParam::toFile).collect(Collectors.toList())); // Validate files validateFiles(study, clinicalAnalysis, userId); } - if (CollectionUtils.isNotEmpty(updateParams.getPanels()) && updateParams.getPanelLock() != null && updateParams.getPanelLock()) { + if (CollectionUtils.isNotEmpty(updateParamsClone.getPanels()) && updateParamsClone.getPanelLock() != null + && updateParamsClone.getPanelLock()) { throw new CatalogException("Updating the list of panels and setting 'panelLock' to true at the same time is not allowed."); } - if (CollectionUtils.isNotEmpty(updateParams.getPanels())) { - if (clinicalAnalysis.isPanelLock() && (updateParams.getPanelLock() == null || updateParams.getPanelLock())) { + if (CollectionUtils.isNotEmpty(updateParamsClone.getPanels())) { + if (clinicalAnalysis.isPanelLock() && (updateParamsClone.getPanelLock() == null || updateParamsClone.getPanelLock())) { throw new CatalogException("Cannot update panels from ClinicalAnalysis '" + clinicalAnalysis.getId() + "'. " + "'panelLocked' field from ClinicalAnalysis is set to true."); } // Validate and get panels - List panelIds = updateParams.getPanels().stream().map(PanelReferenceParam::getId).collect(Collectors.toList()); + List panelIds = updateParamsClone.getPanels().stream().map(PanelReferenceParam::getId).collect(Collectors.toList()); Query query = new Query(PanelDBAdaptor.QueryParams.ID.key(), panelIds); - OpenCGAResult panelResult = + OpenCGAResult panelResult = panelDBAdaptor.get(study.getUid(), query, PanelManager.INCLUDE_PANEL_IDS, userId); if (panelResult.getNumResults() < panelIds.size()) { throw new CatalogException("Some panels were not found or user doesn't have permissions to see them."); @@ -1288,7 +1328,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.PANELS.key(), panelResult.getResults()); } - if (updateParams.getPanelLock() != null && updateParams.getPanelLock() && !clinicalAnalysis.isPanelLock()) { + if (updateParamsClone.getPanelLock() != null && updateParamsClone.getPanelLock() && !clinicalAnalysis.isPanelLock()) { // if user wants to set panelLock to true // We need to check if the CA has interpretations. If so, the interpretations should contain at least one of the case panels // in order to set panelLock to true. Otherwise, that action is not allowed. @@ -1323,17 +1363,17 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } } - if (updateParams.getFiles() != null && !updateParams.getFiles().isEmpty()) { + if (updateParamsClone.getFiles() != null && !updateParamsClone.getFiles().isEmpty()) { parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), clinicalAnalysis.getFiles()); } - if (CollectionUtils.isNotEmpty(updateParams.getPanels())) { + if (CollectionUtils.isNotEmpty(updateParamsClone.getPanels())) { // Get panels Query query = new Query(PanelDBAdaptor.QueryParams.ID.key(), - updateParams.getPanels().stream().map(PanelReferenceParam::getId).collect(Collectors.toList())); - OpenCGAResult panelResult = + updateParamsClone.getPanels().stream().map(PanelReferenceParam::getId).collect(Collectors.toList())); + OpenCGAResult panelResult = panelDBAdaptor.get(study.getUid(), query, PanelManager.INCLUDE_PANEL_IDS, userId); - if (panelResult.getNumResults() < updateParams.getPanels().size()) { + if (panelResult.getNumResults() < updateParamsClone.getPanels().size()) { throw new CatalogException("Some panels were not found or user doesn't have permissions to see them"); } @@ -1342,7 +1382,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli if (parameters.containsKey(ClinicalAnalysisDBAdaptor.QueryParams.DISORDER.key())) { // Assign the disorder to be updated to the clinicalAnalysis obtained from the DB so it can be checked in context - clinicalAnalysis.setDisorder(updateParams.getDisorder().toDisorder()); + clinicalAnalysis.setDisorder(updateParamsClone.getDisorder().toDisorder()); validateDisorder(clinicalAnalysis); // Fill parameter to be updated with complete disorder information parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.DISORDER.key(), clinicalAnalysis.getDisorder()); @@ -1358,7 +1398,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli // Validate user-defined parameters if (parameters.containsKey(ClinicalAnalysisDBAdaptor.QueryParams.PRIORITY.key())) { - clinicalAnalysis.setPriority(updateParams.getPriority().toClinicalPriorityAnnotation()); + clinicalAnalysis.setPriority(updateParamsClone.getPriority().toClinicalPriorityAnnotation()); validateCustomPriorityParameters(clinicalAnalysis, clinicalConfiguration); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.PRIORITY.key(), clinicalAnalysis.getPriority()); } @@ -1368,7 +1408,8 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli currentFlags = clinicalAnalysis.getFlags().stream().map(FlagAnnotation::getId).collect(Collectors.toSet()); } - clinicalAnalysis.setFlags(updateParams.getFlags().stream().map(FlagValueParam::toFlagAnnotation).collect(Collectors.toList())); + clinicalAnalysis.setFlags(updateParamsClone.getFlags().stream().map(FlagValueParam::toFlagAnnotation) + .collect(Collectors.toList())); validateCustomFlagParameters(clinicalAnalysis, clinicalConfiguration); ParamUtils.BasicUpdateAction action = ParamUtils.BasicUpdateAction.from(actionMap, @@ -1389,22 +1430,22 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.FLAGS.key(), clinicalAnalysis.getFlags()); } if (parameters.containsKey(ClinicalAnalysisDBAdaptor.QueryParams.CONSENT.key())) { - clinicalAnalysis.setConsent(updateParams.getConsent().toClinicalConsentAnnotation()); + clinicalAnalysis.setConsent(updateParamsClone.getConsent().toClinicalConsentAnnotation()); validateCustomConsentParameters(clinicalAnalysis, clinicalConfiguration); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.CONSENT.key(), clinicalAnalysis.getConsent()); } if (parameters.containsKey(ClinicalAnalysisDBAdaptor.QueryParams.STATUS.key())) { - clinicalAnalysis.setStatus(updateParams.getStatus().toStatus()); + clinicalAnalysis.setStatus(updateParamsClone.getStatus().toStatus()); validateStatusParameter(clinicalAnalysis, clinicalConfiguration); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.STATUS.key(), clinicalAnalysis.getStatus()); - if (StringUtils.isNotEmpty(updateParams.getStatus().getId())) { + if (StringUtils.isNotEmpty(updateParamsClone.getStatus().getId())) { List clinicalStatusValues = clinicalConfiguration.getStatus().get(clinicalAnalysis.getType()); for (ClinicalStatusValue clinicalStatusValue : clinicalStatusValues) { - if (updateParams.getStatus().getId().equals(clinicalStatusValue.getId())) { + if (updateParamsClone.getStatus().getId().equals(clinicalStatusValue.getId())) { if (clinicalStatusValue.getType() == ClinicalStatusValue.ClinicalStatusType.CLOSED) { String msg = "User '" + userId + "' changed case '" + clinicalAnalysis.getId() + "' to status '" - + updateParams.getStatus().getId() + "', which is of type CLOSED. Automatically locking " + + updateParamsClone.getStatus().getId() + "', which is of type CLOSED. Automatically locking " + "ClinicalAnalysis"; logger.info(msg); parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.LOCKED.key(), true); @@ -1415,9 +1456,11 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } } + checkUpdateAnnotations(study, clinicalAnalysis, parameters, options, VariableSet.AnnotableDataModels.CLINICAL_ANALYSIS, + clinicalDBAdaptor, userId); ClinicalAudit clinicalAudit = new ClinicalAudit(userId, ClinicalAudit.Action.UPDATE_CLINICAL_ANALYSIS, "Update ClinicalAnalysis '" + clinicalAnalysis.getId() + "'", TimeUtils.getTime()); - OpenCGAResult update = clinicalDBAdaptor.update(clinicalAnalysis.getUid(), parameters, + OpenCGAResult update = clinicalDBAdaptor.update(clinicalAnalysis.getUid(), parameters, study.getVariableSets(), Collections.singletonList(clinicalAudit), options); update.addEvents(events); if (options.getBoolean(ParamConstants.INCLUDE_RESULT_PARAM)) { @@ -1494,9 +1537,11 @@ public OpenCGAResult search(String studyId, Query query, Query options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = catalogManager.getUserManager().getUserId(token); - Study study = catalogManager.getStudyManager().resolveId(studyId, userId); + Study study = catalogManager.getStudyManager().resolveId(studyId, userId, StudyManager.INCLUDE_VARIABLE_SET); fixQueryObject(study, query, userId, token); + AnnotationUtils.fixQueryOptionAnnotation(options); + query.append(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); return clinicalDBAdaptor.get(study.getUid(), query, options, userId); @@ -1507,7 +1552,7 @@ public OpenCGAResult distinct(String studyId, List fields, Query quer query = ParamUtils.defaultObject(query, Query::new); String userId = userManager.getUserId(token); - Study study = catalogManager.getStudyManager().resolveId(studyId, userId); + Study study = catalogManager.getStudyManager().resolveId(studyId, userId, StudyManager.INCLUDE_VARIABLE_SET); ObjectMap auditParams = new ObjectMap() .append("studyId", studyId) @@ -1532,6 +1577,9 @@ public OpenCGAResult distinct(String studyId, List fields, Query quer } protected void fixQueryObject(Study study, Query query, String user, String token) throws CatalogException { + // Fix query if it contains any annotation + AnnotationUtils.fixQueryAnnotationSearch(study, query); + changeQueryId(query, ParamConstants.CLINICAL_DISORDER_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.DISORDER.key()); changeQueryId(query, ParamConstants.CLINICAL_ANALYST_ID_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.ANALYST_ID.key()); changeQueryId(query, ParamConstants.CLINICAL_PRIORITY_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.PRIORITY_ID.key()); @@ -1689,7 +1737,7 @@ protected void fixQueryObject(Study study, Query query, String user, String toke public OpenCGAResult count(String studyId, Query query, String token) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(token); - Study study = catalogManager.getStudyManager().resolveId(studyId, userId); + Study study = catalogManager.getStudyManager().resolveId(studyId, userId, StudyManager.INCLUDE_VARIABLE_SET); ObjectMap auditParams = new ObjectMap() .append("studyId", studyId) @@ -1837,7 +1885,7 @@ public OpenCGAResult delete(String studyStr, Query query, QueryOptions options, OpenCGAResult result = OpenCGAResult.empty(); String userId = catalogManager.getUserManager().getUserId(token); - Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); + Study study = catalogManager.getStudyManager().resolveId(studyStr, userId, StudyManager.INCLUDE_VARIABLE_SET); String operationUuid = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); @@ -1855,6 +1903,7 @@ public OpenCGAResult delete(String studyStr, Query query, QueryOptions options, DBIterator iterator; try { fixQueryObject(study, finalQuery, userId, token); + AnnotationUtils.fixQueryOptionAnnotation(options); finalQuery.append(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); iterator = clinicalDBAdaptor.iterator(study.getUid(), finalQuery, INCLUDE_CLINICAL_INTERPRETATION_IDS, userId); @@ -1922,9 +1971,10 @@ public OpenCGAResult groupBy(@Nullable String studyStr, Query query, List updateAnnotations(String studyStr, String clinicalStr, String annotationSetId, + Map annotations, ParamUtils.CompleteUpdateAction action, + QueryOptions options, String token) throws CatalogException { + if (annotations == null || annotations.isEmpty()) { + throw new CatalogException("Missing array of annotations."); + } + ClinicalAnalysisUpdateParams clinicalUpdateParams = new ClinicalAnalysisUpdateParams() + .setAnnotationSets(Collections.singletonList(new AnnotationSet(annotationSetId, null, annotations))); + options = ParamUtils.defaultObject(options, QueryOptions::new); + options.put(Constants.ACTIONS, new ObjectMap(AnnotationSetManager.ANNOTATIONS, action)); + + return update(studyStr, clinicalStr, clinicalUpdateParams, options, token); + } + // ************************** ACLs ******************************** // public OpenCGAResult> getAcls( String studyStr, List clinicalList, String member, boolean ignoreException, String token) throws CatalogException { diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/StudyManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/StudyManager.java index e9e48ab01f4..184bbe18b67 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/StudyManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/StudyManager.java @@ -110,9 +110,12 @@ public class StudyManager extends AbstractManager { public static final QueryOptions INCLUDE_STUDY_IDS = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( StudyDBAdaptor.QueryParams.UID.key(), StudyDBAdaptor.QueryParams.ID.key(), StudyDBAdaptor.QueryParams.UUID.key(), StudyDBAdaptor.QueryParams.FQN.key())); - static final QueryOptions INCLUDE_VARIABLE_SET = new QueryOptions(QueryOptions.INCLUDE, StudyDBAdaptor.QueryParams.VARIABLE_SET.key()); - static final QueryOptions INCLUDE_CONFIGURATION = - new QueryOptions(QueryOptions.INCLUDE, StudyDBAdaptor.QueryParams.INTERNAL_CONFIGURATION.key()); + static final QueryOptions INCLUDE_VARIABLE_SET = keepFieldInQueryOptions(INCLUDE_STUDY_IDS, + StudyDBAdaptor.QueryParams.VARIABLE_SET.key()); + static final QueryOptions INCLUDE_CONFIGURATION = keepFieldInQueryOptions(INCLUDE_STUDY_IDS, + StudyDBAdaptor.QueryParams.INTERNAL_CONFIGURATION.key()); + static final QueryOptions INCLUDE_VARIABLE_SET_AND_CONFIGURATION = keepFieldsInQueryOptions(INCLUDE_STUDY_IDS, + Arrays.asList(StudyDBAdaptor.QueryParams.INTERNAL_CONFIGURATION.key(), StudyDBAdaptor.QueryParams.VARIABLE_SET.key())); protected Logger logger; diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractManagerTest.java index d29de6b553a..fbce0a4576f 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractManagerTest.java @@ -49,7 +49,7 @@ import java.util.List; @Category(MediumTests.class) -public class AbstractManagerTest extends GenericTest { +public class AbstractManagerTest extends GenericTest { @Rule public ExpectedException thrown = ExpectedException.none(); diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java index d703b598e44..2f78a376527 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java @@ -52,6 +52,7 @@ import org.opencb.opencga.core.models.AclEntryList; import org.opencb.opencga.core.models.AclParams; import org.opencb.opencga.core.models.clinical.*; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.FlagAnnotation; import org.opencb.opencga.core.models.common.FlagValue; import org.opencb.opencga.core.models.common.StatusParam; @@ -70,6 +71,8 @@ import org.opencb.opencga.core.models.sample.SamplePermissions; import org.opencb.opencga.core.models.sample.SampleUpdateParams; import org.opencb.opencga.core.models.study.Study; +import org.opencb.opencga.core.models.study.Variable; +import org.opencb.opencga.core.models.study.VariableSet; import org.opencb.opencga.core.models.study.configuration.ClinicalConsent; import org.opencb.opencga.core.models.study.configuration.*; import org.opencb.opencga.core.models.user.Account; @@ -3494,4 +3497,127 @@ public void fetchCasesWithSameProbandAndDifferentSample() throws CatalogExceptio assertEquals(1, result.getResults().get(1).getProband().getSamples().size()); assertEquals(proband.getSamples().get(1).getId(), result.getResults().get(1).getProband().getSamples().get(0).getId()); } + + // Annotation sets + @Test + public void searchByInternalAnnotationSetTest() throws CatalogException { + Set variables = new HashSet<>(); + variables.add(new Variable().setId("a").setType(Variable.VariableType.STRING)); + variables.add(new Variable().setId("b").setType(Variable.VariableType.MAP_INTEGER).setAllowedKeys(Arrays.asList("b1", "b2"))); + VariableSet variableSet = new VariableSet("myInternalVset", "", false, false, true, "", variables, null, 1, null); + catalogManager.getStudyManager().createVariableSet(STUDY, variableSet, sessionIdUser); + + Map annotations = new HashMap<>(); + annotations.put("a", "hello"); + annotations.put("b", new ObjectMap("b1", 2).append("b2", 3)); + AnnotationSet annotationSet = new AnnotationSet("annSet", variableSet.getId(), annotations); + + annotations = new HashMap<>(); + annotations.put("a", "bye"); + annotations.put("b", new ObjectMap("b1", Integer.MAX_VALUE + 1L).append("b2", 5)); + AnnotationSet annotationSet2 = new AnnotationSet("annSet2", variableSet.getId(), annotations); + + DataResult clinicalAnalysisDataResult = createDummyEnvironment(true, true); + ClinicalAnalysis clinicalAnalysis = catalogManager.getClinicalAnalysisManager().update(STUDY, clinicalAnalysisDataResult.first().getId(), + new ClinicalAnalysisUpdateParams().setAnnotationSets(Arrays.asList(annotationSet, annotationSet2)), INCLUDE_RESULT, sessionIdUser).first(); + assertEquals(0, clinicalAnalysis.getAnnotationSets().size()); + + // Create a different case with different annotations + annotations = new HashMap<>(); + annotations.put("a", "hi"); + annotations.put("b", new ObjectMap("b1", 12).append("b2", 13)); + annotationSet = new AnnotationSet("annSet", variableSet.getId(), annotations); + + annotations = new HashMap<>(); + annotations.put("a", "goodbye"); + annotations.put("b", new ObjectMap("b1", 14).append("b2", 15)); + annotationSet2 = new AnnotationSet("annSet2", variableSet.getId(), annotations); + + DataResult clinicalAnalysisDataResult2 = createDummyEnvironment(false, true); + ClinicalAnalysis clinicalAnalysis2 = catalogManager.getClinicalAnalysisManager().update(STUDY, clinicalAnalysisDataResult2.first().getId(), + new ClinicalAnalysisUpdateParams().setAnnotationSets(Arrays.asList(annotationSet, annotationSet2)), INCLUDE_RESULT, sessionIdUser).first(); + assertEquals(0, clinicalAnalysis2.getAnnotationSets().size()); + + // Query by one of the annotations + Query query = new Query(Constants.ANNOTATION, "myInternalVset:a=hello"); + assertEquals(1, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertEquals(clinicalAnalysis.getId(), catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser).first() + .getId()); + + query = new Query(Constants.ANNOTATION, "myInternalVset:b.b1=" + (Integer.MAX_VALUE + 1L)); + assertEquals(1, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertEquals(clinicalAnalysis.getId(), catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser).first() + .getId()); + + query = new Query(Constants.ANNOTATION, "b.b1=14"); + assertEquals(1, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertEquals(clinicalAnalysis2.getId(), catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser).first() + .getId()); + + query = new Query(Constants.ANNOTATION, "a=goodbye"); + assertEquals(1, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertEquals(clinicalAnalysis2.getId(), catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser).first() + .getId()); + + // Update sample annotation to be exactly the same as sample2 + ObjectMap action = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.ANNOTATION_SETS.key(), ParamUtils.BasicUpdateAction.SET); + QueryOptions options = new QueryOptions(Constants.ACTIONS, action); + catalogManager.getClinicalAnalysisManager().update(STUDY, clinicalAnalysis.getId(), + new ClinicalAnalysisUpdateParams().setAnnotationSets(Arrays.asList(annotationSet, annotationSet2)), options, sessionIdUser); + + query = new Query(Constants.ANNOTATION, "myInternalVset:a=hello"); + assertEquals(0, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + + query = new Query(Constants.ANNOTATION, "myInternalVset:b.b1=4"); + assertEquals(0, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + + query = new Query(Constants.ANNOTATION, "b.b1=14"); + assertEquals(2, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertTrue(Arrays.asList(clinicalAnalysis.getId(), clinicalAnalysis2.getId()) + .containsAll(catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser) + .getResults().stream().map(ClinicalAnalysis::getId).collect(Collectors.toList()))); + + query = new Query(Constants.ANNOTATION, "a=goodbye"); + assertEquals(2, catalogManager.getClinicalAnalysisManager().count(STUDY, query, sessionIdUser).getNumMatches()); + assertTrue(Arrays.asList(clinicalAnalysis.getId(), clinicalAnalysis2.getId()) + .containsAll(catalogManager.getClinicalAnalysisManager().search(STUDY, query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS, sessionIdUser) + .getResults().stream().map(ClinicalAnalysis::getId).collect(Collectors.toList()))); + } + + @Test + public void testSearchAnnotation() throws CatalogException { + List variables = new ArrayList<>(); + variables.add(new Variable("var_name", "", "", Variable.VariableType.STRING, "", true, false, Collections.emptyList(), null, 0, "", + "", null, Collections.emptyMap())); + variables.add(new Variable("AGE", "", "", Variable.VariableType.INTEGER, "", false, false, Collections.emptyList(), null, 0, "", "", + null, Collections.emptyMap())); + variables.add(new Variable("HEIGHT", "", "", Variable.VariableType.DOUBLE, "", false, false, Collections.emptyList(), null, 0, "", + "", null, Collections.emptyMap())); + variables.add(new Variable("OTHER", "", "", Variable.VariableType.OBJECT, null, false, false, null, null, 1, "", "", null, + Collections.emptyMap())); + VariableSet vs1 = catalogManager.getStudyManager().createVariableSet(STUDY, "vs1", "vs1", false, false, "", null, variables, + Collections.singletonList(VariableSet.AnnotableDataModels.CLINICAL_ANALYSIS), sessionIdUser).first(); + + ObjectMap annotations = new ObjectMap() + .append("var_name", "Joe") + .append("AGE", 25) + .append("HEIGHT", 180); + AnnotationSet annotationSet = new AnnotationSet("annotation1", vs1.getId(), annotations); + + DataResult clinicalAnalysisDataResult = createDummyEnvironment(true, true); + createDummyEnvironment(false, true); + catalogManager.getClinicalAnalysisManager().update(STUDY, clinicalAnalysisDataResult.first().getId(), + new ClinicalAnalysisUpdateParams().setAnnotationSets(Collections.singletonList(annotationSet)), QueryOptions.empty(), + sessionIdUser); + + Query query = new Query(Constants.ANNOTATION, "var_name=Joe;" + vs1.getId() + ":AGE=25"); + DataResult annotDataResult = catalogManager.getClinicalAnalysisManager().search(STUDY, query, + QueryOptions.empty(), sessionIdUser); + assertEquals(1, annotDataResult.getNumResults()); + + query.put(Constants.ANNOTATION, "var_name=Joe;" + vs1.getId() + ":AGE=23"); + annotDataResult = catalogManager.getClinicalAnalysisManager().search(STUDY, query, QueryOptions.empty(), sessionIdUser); + assertEquals(0, annotDataResult.getNumResults()); + } + } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java index 1ba86bb4d1d..55ffc934572 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java @@ -24,7 +24,8 @@ import org.opencb.commons.annotations.DataClass; import org.opencb.commons.annotations.DataField; import org.opencb.opencga.core.api.FieldConstants; -import org.opencb.opencga.core.models.PrivateStudyUid; +import org.opencb.opencga.core.models.common.Annotable; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.FlagAnnotation; import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.file.File; @@ -41,7 +42,7 @@ */ @DataClass(id = "ClinicalAnalysis", since = "1.0", description = "ClinicalAnalysis data model hosts information about any analysis.") -public class ClinicalAnalysis extends PrivateStudyUid { +public class ClinicalAnalysis extends Annotable { /** * ClinicalAnalysis ID is a mandatory parameter when creating a new ClinicalAnalysis, this ID cannot be changed at the moment. @@ -212,7 +213,7 @@ public ClinicalAnalysis(String id, String description, Type type, Disorder disor ClinicalReport report, ClinicalPriorityAnnotation priority, List flags, String creationDate, String modificationDate, String dueDate, int release, List comments, ClinicalAnalysisQualityControl qualityControl, List audit, ClinicalAnalysisInternal internal, - Map attributes, Status status) { + List annotationSets, Map attributes, Status status) { this.id = id; this.description = description; this.type = type; @@ -238,6 +239,7 @@ public ClinicalAnalysis(String id, String description, Type type, Disorder disor this.comments = comments; this.audit = audit; this.internal = internal; + this.annotationSets = annotationSets; this.attributes = attributes; this.status = status; } @@ -271,6 +273,7 @@ public String toString() { sb.append(", comments=").append(comments); sb.append(", audit=").append(audit); sb.append(", internal=").append(internal); + sb.append(", annotationSets=").append(annotationSets); sb.append(", attributes=").append(attributes); sb.append(", status=").append(status); sb.append('}'); @@ -514,6 +517,12 @@ public ClinicalAnalysis setInternal(ClinicalAnalysisInternal internal) { return this; } + @Override + public ClinicalAnalysis setAnnotationSets(List annotationSets) { + super.setAnnotationSets(annotationSets); + return this; + } + public Map getAttributes() { return attributes; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java index cd0d5243f7b..9d91754d5be 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java @@ -18,6 +18,7 @@ import org.opencb.biodata.models.clinical.ClinicalAnalyst; import org.opencb.opencga.core.common.TimeUtils; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.StatusParam; import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.file.File; @@ -61,6 +62,7 @@ public class ClinicalAnalysisCreateParams { private PriorityParam priority; private List flags; + private List annotationSets; private Map attributes; private StatusParam status; @@ -74,7 +76,8 @@ public ClinicalAnalysisCreateParams(String id, String description, ClinicalAnaly ClinicalConsentAnnotationParam consent, String creationDate, String modificationDate, String dueDate, List comments, ClinicalAnalysisQualityControlUpdateParam qualityControl, PriorityParam priority, - List flags, Map attributes, StatusParam status) { + List flags, List annotationSets, Map attributes, + StatusParam status) { this.id = id; this.description = description; this.type = type; @@ -95,6 +98,7 @@ public ClinicalAnalysisCreateParams(String id, String description, ClinicalAnaly this.qualityControl = qualityControl; this.priority = priority; this.flags = flags; + this.annotationSets = annotationSets; this.attributes = attributes; this.status = status; } @@ -128,6 +132,7 @@ public static ClinicalAnalysisCreateParams of(ClinicalAnalysis clinicalAnalysis) clinicalAnalysis.getFlags() != null ? clinicalAnalysis.getFlags().stream().map(FlagValueParam::of).collect(Collectors.toList()) : null, + clinicalAnalysis.getAnnotationSets(), clinicalAnalysis.getAttributes(), StatusParam.of(clinicalAnalysis.getStatus())); } @@ -154,6 +159,7 @@ public String toString() { sb.append(", comments=").append(comments); sb.append(", priority=").append(priority); sb.append(", flags=").append(flags); + sb.append(", annotationSets=").append(annotationSets); sb.append(", attributes=").append(attributes); sb.append(", status=").append(status); sb.append('}'); @@ -216,7 +222,7 @@ public ClinicalAnalysis toClinicalAnalysis() { flags != null ? flags.stream().map(FlagValueParam::toFlagAnnotation).collect(Collectors.toList()) : null, creationDate, modificationDate, dueDate, 1, comments != null ? comments.stream().map(ClinicalCommentParam::toClinicalComment).collect(Collectors.toList()) : null, qualityControl != null ? qualityControl.toClinicalQualityControl() : null, new LinkedList<>(), null, - attributes, status != null ? status.toStatus() : null); + annotationSets, attributes, status != null ? status.toStatus() : null); } public String getId() { @@ -399,6 +405,15 @@ public ClinicalAnalysisCreateParams setFlags(List flags) { return this; } + public List getAnnotationSets() { + return annotationSets; + } + + public ClinicalAnalysisCreateParams setAnnotationSets(List annotationSets) { + this.annotationSets = annotationSets; + return this; + } + public Map getAttributes() { return attributes; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisPermissions.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisPermissions.java index af45797dbf2..e0cdfadd0c0 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisPermissions.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisPermissions.java @@ -6,7 +6,10 @@ public enum ClinicalAnalysisPermissions { NONE(Collections.emptyList()), VIEW(Collections.emptyList()), WRITE(Collections.singletonList(VIEW)), - DELETE(Arrays.asList(VIEW, WRITE)); + DELETE(Arrays.asList(VIEW, WRITE)), + VIEW_ANNOTATIONS(Collections.singletonList(VIEW)), + WRITE_ANNOTATIONS(Arrays.asList(VIEW_ANNOTATIONS, VIEW)), + DELETE_ANNOTATIONS(Arrays.asList(VIEW_ANNOTATIONS, WRITE_ANNOTATIONS, VIEW)); private final List implicitPermissions; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java index a30f469e7a6..1cec037fb1c 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.core.JsonProcessingException; import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.StatusParam; import org.opencb.opencga.core.models.file.FileReferenceParam; import org.opencb.opencga.core.models.panel.Panel; @@ -62,6 +63,7 @@ public class ClinicalAnalysisUpdateParams { private PriorityParam priority; // id private List flags; // id + private List annotationSets; private Map attributes; private StatusParam status; @@ -74,7 +76,8 @@ public ClinicalAnalysisUpdateParams(String id, String description, ClinicalAnaly ClinicalReport report, ClinicalAnalysisQualityControlUpdateParam qualityControl, ClinicalConsentAnnotationParam consent, String creationDate, String modificationDate, String dueDate, List comments, PriorityParam priority, - List flags, Map attributes, StatusParam status) { + List flags, List annotationSets, Map attributes, + StatusParam status) { this.id = id; this.description = description; this.type = type; @@ -95,6 +98,7 @@ public ClinicalAnalysisUpdateParams(String id, String description, ClinicalAnaly this.comments = comments; this.priority = priority; this.flags = flags; + this.annotationSets = annotationSets; this.attributes = attributes; this.status = status; } @@ -120,7 +124,8 @@ public ClinicalAnalysis toClinicalAnalysis() { flags != null ? flags.stream().map(FlagValueParam::toFlagAnnotation).collect(Collectors.toList()) : null, creationDate, modificationDate, dueDate, 1, comments != null ? comments.stream().map(ClinicalCommentParam::toClinicalComment).collect(Collectors.toList()) : null, - qualityControl != null ? qualityControl.toClinicalQualityControl() : null, null, null, attributes, status != null ? status.toStatus() : null); + qualityControl != null ? qualityControl.toClinicalQualityControl() : null, null, null, annotationSets, attributes, + status != null ? status.toStatus() : null); } @Override @@ -146,6 +151,7 @@ public String toString() { sb.append(", comments=").append(comments); sb.append(", priority=").append(priority); sb.append(", flags=").append(flags); + sb.append(", annotationSets=").append(annotationSets); sb.append(", attributes=").append(attributes); sb.append(", status=").append(status); sb.append('}'); @@ -323,6 +329,15 @@ public ClinicalAnalysisUpdateParams setFlags(List flags) { return this; } + public List getAnnotationSets() { + return annotationSets; + } + + public ClinicalAnalysisUpdateParams setAnnotationSets(List annotationSets) { + this.annotationSets = annotationSets; + return this; + } + public Map getAttributes() { return attributes; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/study/StudyPermissions.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/study/StudyPermissions.java index 3eefb1a5c63..059af8182ab 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/study/StudyPermissions.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/study/StudyPermissions.java @@ -103,7 +103,13 @@ public enum Permissions { WRITE_CLINICAL_ANALYSIS(Collections.singletonList(VIEW_CLINICAL_ANALYSIS), ClinicalAnalysisPermissions.WRITE.name(), CLINICAL_ANALYSIS), DELETE_CLINICAL_ANALYSIS(Arrays.asList(VIEW_CLINICAL_ANALYSIS, WRITE_CLINICAL_ANALYSIS), - ClinicalAnalysisPermissions.DELETE.name(), CLINICAL_ANALYSIS); + ClinicalAnalysisPermissions.DELETE.name(), CLINICAL_ANALYSIS), + VIEW_CLINICAL_ANNOTATIONS(Collections.singletonList(VIEW_CLINICAL_ANALYSIS), ClinicalAnalysisPermissions.VIEW_ANNOTATIONS.name(), + CLINICAL_ANALYSIS), + WRITE_CLINICAL_ANNOTATIONS(Arrays.asList(VIEW_CLINICAL_ANALYSIS, VIEW_CLINICAL_ANNOTATIONS), + ClinicalAnalysisPermissions.WRITE_ANNOTATIONS.name(), CLINICAL_ANALYSIS), + DELETE_CLINICAL_ANNOTATIONS(Arrays.asList(VIEW_CLINICAL_ANALYSIS, VIEW_CLINICAL_ANNOTATIONS, WRITE_CLINICAL_ANNOTATIONS), + ClinicalAnalysisPermissions.DELETE_ANNOTATIONS.name(), CLINICAL_ANALYSIS); private final static Map map; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/study/VariableSet.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/study/VariableSet.java index 7ffdb8a460c..c2ac1f3ba43 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/study/VariableSet.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/study/VariableSet.java @@ -45,7 +45,8 @@ public enum AnnotableDataModels { COHORT, INDIVIDUAL, FAMILY, - FILE + FILE, + CLINICAL_ANALYSIS } public VariableSet() { diff --git a/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/ExecutionDaemon.java b/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/ExecutionDaemon.java index e7920c53303..b014cce49ec 100644 --- a/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/ExecutionDaemon.java +++ b/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/ExecutionDaemon.java @@ -26,6 +26,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.analysis.clinical.ClinicalTsvAnnotationLoader; import org.opencb.opencga.analysis.clinical.exomiser.ExomiserInterpretationAnalysis; import org.opencb.opencga.analysis.clinical.rga.AuxiliarRgaAnalysis; import org.opencb.opencga.analysis.clinical.rga.RgaAnalysis; @@ -242,6 +243,7 @@ public class ExecutionDaemon extends MonitorParentDaemon { put(RgaAnalysis.ID, "clinical " + RgaAnalysis.ID + "-run"); put(AuxiliarRgaAnalysis.ID, "clinical " + AuxiliarRgaAnalysis.ID + "-run"); + put(ClinicalTsvAnnotationLoader.ID, "clinical tsv-load"); put(JulieTool.ID, "variant julie-run"); diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java index 7906588ad23..5c33dd532b2 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java @@ -21,6 +21,7 @@ import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.commons.datastore.core.*; import org.opencb.opencga.analysis.clinical.ClinicalInterpretationManager; +import org.opencb.opencga.analysis.clinical.ClinicalTsvAnnotationLoader; import org.opencb.opencga.analysis.clinical.exomiser.ExomiserInterpretationAnalysis; import org.opencb.opencga.analysis.clinical.rga.AuxiliarRgaAnalysis; import org.opencb.opencga.analysis.clinical.rga.RgaAnalysis; @@ -43,7 +44,9 @@ import org.opencb.opencga.core.models.AclParams; import org.opencb.opencga.core.models.analysis.knockout.*; import org.opencb.opencga.core.models.clinical.*; +import org.opencb.opencga.core.models.common.TsvAnnotationParams; import org.opencb.opencga.core.models.job.Job; +import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.configuration.ClinicalAnalysisStudyConfiguration; import org.opencb.opencga.core.tools.annotations.*; @@ -212,9 +215,14 @@ public Response update( @QueryParam("filesAction") ParamUtils.BasicUpdateAction filesAction, @ApiParam(value = "Action to be performed if the array of panels is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") @QueryParam("panelsAction") ParamUtils.BasicUpdateAction panelsAction, + @ApiParam(value = "Action to be performed if the array of annotationSets is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") + @QueryParam("annotationSetsAction") ParamUtils.BasicUpdateAction annotationSetsAction, @ApiParam(value = ParamConstants.INCLUDE_RESULT_DESCRIPTION, defaultValue = "false") @QueryParam(ParamConstants.INCLUDE_RESULT_PARAM) boolean includeResult, @ApiParam(name = "body", value = "JSON containing clinical analysis information", required = true) ClinicalAnalysisUpdateParams params) { try { + if (annotationSetsAction == null) { + annotationSetsAction = ParamUtils.BasicUpdateAction.ADD; + } if (commentsAction == null) { commentsAction = ParamUtils.AddRemoveReplaceAction.ADD; } @@ -229,6 +237,7 @@ public Response update( } Map actionMap = new HashMap<>(); + actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.ANNOTATION_SETS.key(), annotationSetsAction); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.COMMENTS.key(), commentsAction); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.FLAGS.key(), flagsAction); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), filesAction); @@ -241,6 +250,55 @@ public Response update( } } + @POST + @Path("/annotationSets/load") + @Consumes(MediaType.APPLICATION_JSON) + @ApiOperation(value = "Load annotation sets from a TSV file", response = Job.class) + public Response loadTsvAnnotations( + @ApiParam(value = ParamConstants.STUDY_DESCRIPTION) @QueryParam(ParamConstants.STUDY_PARAM) String studyStr, + @ApiParam(value = ParamConstants.VARIABLE_SET_DESCRIPTION, required = true) @QueryParam("variableSetId") String variableSetId, + @ApiParam(value = "Path where the TSV file is located in OpenCGA or where it should be located.", required = true) + @QueryParam("path") String path, + @ApiParam(value = "Flag indicating whether to create parent directories if they don't exist (only when TSV file was not " + + "previously associated).") + @DefaultValue("false") @QueryParam("parents") boolean parents, + @ApiParam(value = "Annotation set id. If not provided, variableSetId will be used.") @QueryParam("annotationSetId") String annotationSetId, + @ApiParam(value = ParamConstants.TSV_ANNOTATION_DESCRIPTION) TsvAnnotationParams params) { + try { + ObjectMap additionalParams = new ObjectMap() + .append("parents", parents) + .append("annotationSetId", annotationSetId); + + return createOkResponse(catalogManager.getClinicalAnalysisManager().loadTsvAnnotations(studyStr, variableSetId, path, params, + additionalParams, ClinicalTsvAnnotationLoader.ID, token)); + } catch (Exception e) { + return createErrorResponse(e); + } + } + + @POST + @Path("/{clinicalAnalysis}/annotationSets/{annotationSet}/annotations/update") + @Consumes(MediaType.APPLICATION_JSON) + @ApiOperation(value = "Update annotations from an annotationSet", response = Sample.class) + public Response updateAnnotations( + @ApiParam(value = "Clinical analysis ID") @PathParam("clinicalAnalysis") String clinicalId, + @ApiParam(value = ParamConstants.STUDY_DESCRIPTION) @QueryParam(ParamConstants.STUDY_PARAM) String studyStr, + @ApiParam(value = ParamConstants.ANNOTATION_SET_ID) @PathParam("annotationSet") String annotationSetId, + @ApiParam(value = ParamConstants.ANNOTATION_SET_UPDATE_ACTION_DESCRIPTION, allowableValues = "ADD,SET,REMOVE,RESET,REPLACE", + defaultValue = "ADD") + @QueryParam("action") ParamUtils.CompleteUpdateAction action, + @ApiParam(value = ParamConstants.ANNOTATION_SET_UPDATE_PARAMS_DESCRIPTION) Map updateParams) { + try { + if (action == null) { + action = ParamUtils.CompleteUpdateAction.ADD; + } + return createOkResponse(catalogManager.getClinicalAnalysisManager().updateAnnotations(studyStr, clinicalId, annotationSetId, + updateParams, action, queryOptions, token)); + } catch (Exception e) { + return createErrorResponse(e); + } + } + @DELETE @Path("/{clinicalAnalyses}/delete") @ApiOperation(value = "Delete clinical analyses", response = ClinicalAnalysis.class) @@ -263,7 +321,9 @@ public Response delete( @ApiImplicitParam(name = QueryOptions.INCLUDE, value = ParamConstants.INCLUDE_DESCRIPTION, example = "name,attributes", dataType = "string", paramType = "query"), @ApiImplicitParam(name = QueryOptions.EXCLUDE, value = ParamConstants.EXCLUDE_DESCRIPTION, - example = "id,status", dataType = "string", paramType = "query") + example = "id,status", dataType = "string", paramType = "query"), + @ApiImplicitParam(name = ParamConstants.FLATTEN_ANNOTATIONS, value = "Flatten the annotations?", defaultValue = "false", + dataType = "boolean", paramType = "query") }) public Response info( @ApiParam(value = ParamConstants.CLINICAL_ANALYSES_DESCRIPTION) @PathParam(value = "clinicalAnalysis") String clinicalAnalysisStr, @@ -289,7 +349,9 @@ public Response info( @ApiImplicitParam(name = QueryOptions.EXCLUDE, value = ParamConstants.EXCLUDE_DESCRIPTION, example = "id,status", dataType = "string", paramType = "query"), @ApiImplicitParam(name = QueryOptions.LIMIT, value = ParamConstants.LIMIT_DESCRIPTION, dataType = "integer", paramType = "query"), @ApiImplicitParam(name = QueryOptions.SKIP, value = ParamConstants.SKIP_DESCRIPTION, dataType = "integer", paramType = "query"), - @ApiImplicitParam(name = QueryOptions.COUNT, value = ParamConstants.COUNT_DESCRIPTION, defaultValue = "false", dataType = "boolean", paramType = "query") + @ApiImplicitParam(name = QueryOptions.COUNT, value = ParamConstants.COUNT_DESCRIPTION, defaultValue = "false", dataType = "boolean", paramType = "query"), + @ApiImplicitParam(name = ParamConstants.FLATTEN_ANNOTATIONS, value = "Flatten the annotations?", defaultValue = "false", + dataType = "boolean", paramType = "query") }) public Response search( @ApiParam(value = ParamConstants.STUDY_DESCRIPTION) @QueryParam(ParamConstants.STUDY_PARAM) String studyStr, @@ -317,6 +379,7 @@ public Response search( @ApiParam(value = ParamConstants.CLINICAL_RELEASE_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_RELEASE_PARAM) String release, @ApiParam(value = ParamConstants.CLINICAL_STATUS_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_STATUS_PARAM) String status, @ApiParam(value = ParamConstants.CLINICAL_INTERNAL_STATUS_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_INTERNAL_STATUS_PARAM) String internalStatus, + @ApiParam(value = ParamConstants.ANNOTATION_DESCRIPTION) @QueryParam(Constants.ANNOTATION) String annotation, @ApiParam(value = ParamConstants.DELETED_DESCRIPTION) @QueryParam(ParamConstants.DELETED_PARAM) boolean deleted) { try { query.remove(ParamConstants.STUDY_PARAM); @@ -356,6 +419,7 @@ public Response distinct( @ApiParam(value = ParamConstants.CLINICAL_RELEASE_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_RELEASE_PARAM) String release, @ApiParam(value = ParamConstants.CLINICAL_STATUS_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_STATUS_PARAM) String status, @ApiParam(value = ParamConstants.CLINICAL_INTERNAL_STATUS_DESCRIPTION) @QueryParam(ParamConstants.CLINICAL_INTERNAL_STATUS_PARAM) String internalStatus, + @ApiParam(value = ParamConstants.ANNOTATION_DESCRIPTION) @QueryParam(Constants.ANNOTATION) String annotation, @ApiParam(value = ParamConstants.DELETED_DESCRIPTION) @QueryParam(ParamConstants.DELETED_PARAM) boolean deleted, @ApiParam(value = ParamConstants.DISTINCT_FIELD_DESCRIPTION, required = true) @QueryParam(ParamConstants.DISTINCT_FIELD_PARAM) String field) { try { From 6b9c5ecb7a6749721c01d2793ae81bb1c76b4c63 Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 16 Nov 2023 16:32:28 +0100 Subject: [PATCH 164/354] app: add annotationset migration for cases, #TASK-5198 --- .../AddAnnotationSetsInClinicalAnalysis.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java new file mode 100644 index 00000000000..d61a6cb8a09 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java @@ -0,0 +1,41 @@ +package org.opencb.opencga.app.migrations.v2_12_0.catalog; + + +import com.mongodb.client.MongoCollection; +import com.mongodb.client.model.Filters; +import org.bson.Document; +import org.bson.conversions.Bson; +import org.opencb.opencga.catalog.db.mongodb.AnnotationMongoDBAdaptor; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.catalog.migration.MigrationTool; + +import java.util.Arrays; +import java.util.Collections; + +@Migration(id = "add_annotation_sets_to_clinical_analysis" , + description = "Add private annotation fields to ClinicalAnalysis documents", + version = "2.12.0", + domain = Migration.MigrationDomain.CATALOG, + language = Migration.MigrationLanguage.JAVA, + date = 20231116 +) +public class AddAnnotationSetsInClinicalAnalysis extends MigrationTool { + + @Override + protected void run() throws Exception { + Bson query = Filters.exists(AnnotationMongoDBAdaptor.AnnotationSetParams.ANNOTATION_SETS.key(), false); + Document update = new Document("$set", new Document() + .append(AnnotationMongoDBAdaptor.AnnotationSetParams.ANNOTATION_SETS.key(), Collections.emptyList()) + .append(AnnotationMongoDBAdaptor.AnnotationSetParams.INTERNAL_ANNOTATION_SETS.key(), Collections.emptyList()) + .append(AnnotationMongoDBAdaptor.AnnotationSetParams.PRIVATE_VARIABLE_SET_MAP.key(), Collections.emptyMap()) + .append(AnnotationMongoDBAdaptor.AnnotationSetParams.PRIVATE_INTERNAL_VARIABLE_SET_MAP.key(), Collections.emptyMap()) + ); + // Initialise private fields in all Clinical Analysis documents + for (String collection : Arrays.asList(MongoDBAdaptorFactory.CLINICAL_ANALYSIS_COLLECTION, + MongoDBAdaptorFactory.DELETED_CLINICAL_ANALYSIS_COLLECTION)) { + MongoCollection mongoCollection = getMongoCollection(collection); + mongoCollection.updateMany(query, update); + } + } +} From 31fdc712bf118f620334dbd2fa364ebfb9ef5e5d Mon Sep 17 00:00:00 2001 From: pfurio Date: Fri, 17 Nov 2023 11:01:49 +0100 Subject: [PATCH 165/354] app: log the documents updated, #TASK-5198 --- .../v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java index d61a6cb8a09..018b0cc28e7 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java @@ -3,6 +3,7 @@ import com.mongodb.client.MongoCollection; import com.mongodb.client.model.Filters; +import com.mongodb.client.result.UpdateResult; import org.bson.Document; import org.bson.conversions.Bson; import org.opencb.opencga.catalog.db.mongodb.AnnotationMongoDBAdaptor; @@ -35,7 +36,8 @@ protected void run() throws Exception { for (String collection : Arrays.asList(MongoDBAdaptorFactory.CLINICAL_ANALYSIS_COLLECTION, MongoDBAdaptorFactory.DELETED_CLINICAL_ANALYSIS_COLLECTION)) { MongoCollection mongoCollection = getMongoCollection(collection); - mongoCollection.updateMany(query, update); + UpdateResult updateResult = mongoCollection.updateMany(query, update); + logger.info("{} clinical analysis documents updated from the {} collection", updateResult.getModifiedCount(), collection); } } } From a3efd9a32ed68d2ef7745fd5d82526b02895e7b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Fri, 27 Oct 2023 13:47:52 +0200 Subject: [PATCH 166/354] analysis: add exomiser analysis YML file, #TASK-5190 --- .../ExomiserWrapperAnalysisExecutor.java | 14 +++- .../ExomiserInterpretationAnalysisTest.java | 5 +- .../variant/OpenCGATestExternalResource.java | 10 +++ .../analysis/exomiser/exomiser-analysis.yml | 70 +++++++++++++++++++ 4 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 opencga-app/app/analysis/exomiser/exomiser-analysis.yml diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java index 099d3c6c7db..86bb3760b3c 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java @@ -147,7 +147,15 @@ public void run() throws ToolException { Path openCgaHome = getOpencgaHomePath(); Path exomiserDataPath = getAnalysisDataPath(ExomiserWrapperAnalysis.ID); - // And copy the application.properties + // Copy the analysis + try { + FileUtils.copyFile(openCgaHome.resolve("analysis/exomiser/" + EXOMISER_ANALYSIS_TEMPLATE_FILENAME).toFile(), + getOutDir().resolve(EXOMISER_ANALYSIS_TEMPLATE_FILENAME).toFile()); + } catch (IOException e) { + throw new ToolException("Error copying Exomiser analysis file", e); + } + + // Copy the application.properties try { FileUtils.copyFile(openCgaHome.resolve("analysis/exomiser/" + EXOMISER_PROPERTIES_TEMPLATE_FILENAME).toFile(), getOutDir().resolve(EXOMISER_PROPERTIES_TEMPLATE_FILENAME).toFile()); @@ -155,7 +163,7 @@ public void run() throws ToolException { throw new ToolException("Error copying Exomiser properties file", e); } - // And copy the output options + // Copy the output options try { FileUtils.copyFile(openCgaHome.resolve("analysis/exomiser/" + EXOMISER_OUTPUT_OPTIONS_FILENAME).toFile(), getOutDir().resolve(EXOMISER_OUTPUT_OPTIONS_FILENAME).toFile()); @@ -174,7 +182,7 @@ public void run() throws ToolException { appendCommand("", sb); // Append input file params -// sb.append(" --analysis /jobdir/").append(EXOMISER_ANALYSIS_TEMPLATE_FILENAME) + sb.append(" --analysis /jobdir/").append(EXOMISER_ANALYSIS_TEMPLATE_FILENAME); sb.append(" --sample /jobdir/").append(sampleFile.getName()); if (pedigreeFile != null && pedigreeFile.exists()) { sb.append(" --ped /jobdir/").append(pedigreeFile.getName()); diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java index 9889af6e563..001e44792cf 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java @@ -31,6 +31,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeThat; @Category(MediumTests.class) @@ -93,7 +94,7 @@ public void singleExomiserAnalysis() throws IOException, CatalogException, ToolE clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() .get(clinicalTest.studyFqn, clinicalTest.CA_ID2, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); - assertEquals(22, clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size()); + assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); } @Test @@ -119,7 +120,7 @@ public void familyExomiserAnalysis() throws IOException, CatalogException, ToolE clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() .get(clinicalTest.studyFqn, clinicalTest.CA_ID3, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); - assertEquals(2, clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size()); + assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); System.out.println("results at out dir = " + outDir.toAbsolutePath()); } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/OpenCGATestExternalResource.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/OpenCGATestExternalResource.java index 95f0ef297d5..38782aef1f0 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/OpenCGATestExternalResource.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/OpenCGATestExternalResource.java @@ -49,7 +49,9 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -260,6 +262,14 @@ public Path isolateOpenCGA() throws IOException { inputStream = new FileInputStream("../opencga-app/app/analysis/pedigree-graph/ped.R"); Files.copy(inputStream, analysisPath.resolve("ped.R"), StandardCopyOption.REPLACE_EXISTING); + // Exomiser analysis files + analysisPath = Files.createDirectories(opencgaHome.resolve("analysis/exomiser")).toAbsolutePath(); + List exomiserFiles = Arrays.asList("application.properties", "exomiser-analysis.yml", "output.yml"); + for (String exomiserFile : exomiserFiles) { + inputStream = new FileInputStream("../opencga-app/app/analysis/exomiser/" + exomiserFile); + Files.copy(inputStream, analysisPath.resolve(exomiserFile), StandardCopyOption.REPLACE_EXISTING); + } + return opencgaHome; } diff --git a/opencga-app/app/analysis/exomiser/exomiser-analysis.yml b/opencga-app/app/analysis/exomiser/exomiser-analysis.yml new file mode 100644 index 00000000000..5ec7d93d508 --- /dev/null +++ b/opencga-app/app/analysis/exomiser/exomiser-analysis.yml @@ -0,0 +1,70 @@ +--- +analysisMode: PASS_ONLY +inheritanceModes: { + AUTOSOMAL_DOMINANT: 0.1, + AUTOSOMAL_RECESSIVE_HOM_ALT: 0.1, + AUTOSOMAL_RECESSIVE_COMP_HET: 2.0, + X_DOMINANT: 0.1, + X_RECESSIVE_HOM_ALT: 0.1, + X_RECESSIVE_COMP_HET: 2.0, + MITOCHONDRIAL: 0.2 +} +frequencySources: [ + THOUSAND_GENOMES, + TOPMED, + UK10K, + + ESP_AFRICAN_AMERICAN, ESP_EUROPEAN_AMERICAN, ESP_ALL, + + EXAC_AFRICAN_INC_AFRICAN_AMERICAN, EXAC_AMERICAN, + EXAC_SOUTH_ASIAN, EXAC_EAST_ASIAN, + EXAC_FINNISH, EXAC_NON_FINNISH_EUROPEAN, + EXAC_OTHER, + + GNOMAD_E_AFR, + GNOMAD_E_AMR, + # GNOMAD_E_ASJ, + GNOMAD_E_EAS, + GNOMAD_E_FIN, + GNOMAD_E_NFE, + GNOMAD_E_OTH, + GNOMAD_E_SAS, + + GNOMAD_G_AFR, + GNOMAD_G_AMR, + # GNOMAD_G_ASJ, + GNOMAD_G_EAS, + GNOMAD_G_FIN, + GNOMAD_G_NFE, + GNOMAD_G_OTH, + GNOMAD_G_SAS +] +# Possible pathogenicitySources: (POLYPHEN, MUTATION_TASTER, SIFT), (REVEL, MVP), CADD, REMM +# REMM is trained on non-coding regulatory regions +# *WARNING* if you enable CADD or REMM ensure that you have downloaded and installed the CADD/REMM tabix files +# and updated their location in the application.properties. Exomiser will not run without this. +pathogenicitySources: [ REVEL, MVP ] +#this is the standard exomiser order. +steps: [ + failedVariantFilter: { }, + variantEffectFilter: { + remove: [ + FIVE_PRIME_UTR_EXON_VARIANT, + FIVE_PRIME_UTR_INTRON_VARIANT, + THREE_PRIME_UTR_EXON_VARIANT, + THREE_PRIME_UTR_INTRON_VARIANT, + NON_CODING_TRANSCRIPT_EXON_VARIANT, + NON_CODING_TRANSCRIPT_INTRON_VARIANT, + CODING_TRANSCRIPT_INTRON_VARIANT, + UPSTREAM_GENE_VARIANT, + DOWNSTREAM_GENE_VARIANT, + INTERGENIC_VARIANT, + REGULATORY_REGION_VARIANT + ] + }, + frequencyFilter: { maxFrequency: 2.0 }, + pathogenicityFilter: { keepNonPathogenic: true }, + inheritanceFilter: { }, + omimPrioritiser: { }, + hiPhivePrioritiser: { } +] From 72ebe63e5bfe5444e116c4c47d94e57271022715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Fri, 17 Nov 2023 16:58:04 +0100 Subject: [PATCH 167/354] analysis: take into account the assembly when executing genome/circos plot analysis, #TASK-5113 --- .../analysis/variant/circos/CircosAnalysis.java | 6 ++++++ .../circos/CircosLocalAnalysisExecutor.java | 8 ++++++++ .../variant/genomePlot/GenomePlotAnalysis.java | 5 +++++ .../GenomePlotLocalAnalysisExecutor.java | 13 +++++++++---- .../core/tools/variant/CircosAnalysisExecutor.java | 10 ++++++++++ .../tools/variant/GenomePlotAnalysisExecutor.java | 14 +++++++++++++- .../server/rest/analysis/VariantWebService.java | 6 ++++-- 7 files changed, 55 insertions(+), 7 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java index 2ed3cf65913..9def10b1bb6 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java @@ -16,6 +16,7 @@ package org.opencb.opencga.analysis.variant.circos; +import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.tools.OpenCgaTool; import org.opencb.opencga.core.exceptions.ToolException; import org.opencb.opencga.core.models.common.Enums; @@ -34,6 +35,8 @@ public class CircosAnalysis extends OpenCgaTool { private String study; private CircosAnalysisParams circosParams; + private String assembly; + @Override protected void check() throws Exception { super.check(); @@ -58,6 +61,8 @@ protected void check() throws Exception { // } // // addAttribute("sampleName", sampleName); + + assembly = ResourceUtils.getAssembly(catalogManager, study, token); } @Override @@ -65,6 +70,7 @@ protected void run() throws ToolException { step(getId(), () -> { getToolExecutor(CircosAnalysisExecutor.class) .setStudy(study) + .setAssembly(assembly) .setCircosParams(circosParams) .execute(); }); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java index 40f829ecd6c..d87b46c8858 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java @@ -138,10 +138,18 @@ public void run() throws ToolException, IOException { AbstractMap.SimpleEntry outputBinding = new AbstractMap.SimpleEntry<>(getOutDir() .toAbsolutePath().toString(), DOCKER_OUTPUT_PATH); + + // Get genome version + String genomeVersion = "hg38"; + if (StringUtils.isNotEmpty(getAssembly()) && getAssembly().toUpperCase(Locale.ROOT).equals("GRCH37")) { + genomeVersion = "hg19"; + } + String scriptParams = "R CMD Rscript --vanilla " + DOCKER_INPUT_PATH + "/circos.R" + (plotCopynumber ? "" : " --no_copynumber") + (plotIndels ? "" : " --no_indels") + (plotRearrangements ? "" : " --no_rearrangements") + + " --genome_version " + genomeVersion + " --out_path " + DOCKER_OUTPUT_PATH + " " + DOCKER_OUTPUT_PATH + "/" + snvsFile.getName() + " " + DOCKER_OUTPUT_PATH + "/" + indelsFile.getName() diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java index f7f63f37706..56c3feb0b57 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java @@ -21,6 +21,7 @@ import org.opencb.biodata.models.clinical.qc.GenomePlotConfig; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.analysis.AnalysisUtils; +import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.tools.OpenCgaToolScopeStudy; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.exceptions.ToolException; @@ -51,6 +52,7 @@ public class GenomePlotAnalysis extends OpenCgaToolScopeStudy { private GenomePlotAnalysisParams genomePlotParams = new GenomePlotAnalysisParams(); private java.io.File configFile; + private String assembly; @Override protected void check() throws Exception { @@ -71,6 +73,8 @@ protected void check() throws Exception { if (!configFile.exists()) { throw new ToolException("Invalid parameters: genome plot configuration file does not exist (" + configFile + ")"); } + + assembly = ResourceUtils.getAssembly(catalogManager, study, token); } @Override @@ -78,6 +82,7 @@ protected void run() throws ToolException { step(getId(), () -> { getToolExecutor(GenomePlotAnalysisExecutor.class) .setStudy(study) + .setAssembly(assembly) .setConfigFile(configFile) .execute(); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java index 4246e142d55..bcbc6b77599 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java @@ -46,10 +46,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.*; import static org.opencb.opencga.analysis.wrappers.executors.DockerWrapperAnalysisExecutor.DOCKER_INPUT_PATH; @@ -125,10 +122,18 @@ public void run() throws ToolException, IOException { inputBindings.add(new AbstractMap.SimpleEntry<>(rScriptPath, DOCKER_INPUT_PATH)); AbstractMap.SimpleEntry outputBinding = new AbstractMap.SimpleEntry<>(getOutDir() .toAbsolutePath().toString(), DOCKER_OUTPUT_PATH); + + // Get genome version + String genomeVersion = "hg38"; + if (StringUtils.isNotEmpty(getAssembly()) && getAssembly().toUpperCase(Locale.ROOT).equals("GRCH37")) { + genomeVersion = "hg19"; + } + String scriptParams = "R CMD Rscript --vanilla " + DOCKER_INPUT_PATH + "/circos.R" + (plotCopynumber ? "" : " --no_copynumber") + (plotIndels ? "" : " --no_indels") + (plotRearrangements ? "" : " --no_rearrangements") + + " --genome_version " + genomeVersion + " --out_path " + DOCKER_OUTPUT_PATH + " " + DOCKER_OUTPUT_PATH + "/" + snvsFile.getName() + " " + DOCKER_OUTPUT_PATH + "/" + indelsFile.getName() diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java index 89f1b7cc569..c23dce7931a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java @@ -22,6 +22,7 @@ public abstract class CircosAnalysisExecutor extends OpenCgaToolExecutor { private String study; + private String assembly; private CircosAnalysisParams circosParams; public CircosAnalysisExecutor() { @@ -41,6 +42,15 @@ public CircosAnalysisExecutor setStudy(String study) { return this; } + public String getAssembly() { + return assembly; + } + + public CircosAnalysisExecutor setAssembly(String assembly) { + this.assembly = assembly; + return this; + } + public CircosAnalysisParams getCircosParams() { return circosParams; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java index 2205143c670..a7d6b7a7ca8 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java @@ -23,13 +23,15 @@ public abstract class GenomePlotAnalysisExecutor extends OpenCgaToolExecutor { private String study; + private String assembly; private File configFile; public GenomePlotAnalysisExecutor() { } - public GenomePlotAnalysisExecutor(String study, File configFile) { + public GenomePlotAnalysisExecutor(String study, String assembly, File configFile) { this.study = study; + this.assembly = assembly; this.configFile = configFile; } @@ -37,6 +39,7 @@ public GenomePlotAnalysisExecutor(String study, File configFile) { public String toString() { final StringBuilder sb = new StringBuilder("GenomePlotAnalysisExecutor{"); sb.append("study='").append(study).append('\''); + sb.append("assembly='").append(assembly).append('\''); sb.append(", configFile=").append(configFile); sb.append('}'); return sb.toString(); @@ -51,6 +54,15 @@ public GenomePlotAnalysisExecutor setStudy(String study) { return this; } + public String getAssembly() { + return assembly; + } + + public GenomePlotAnalysisExecutor setAssembly(String assembly) { + this.assembly = assembly; + return this; + } + public File getConfigFile() { return configFile; } diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java index 6ac26bbb92e..29bae7fe514 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java @@ -30,6 +30,7 @@ import org.opencb.commons.annotations.DataField; import org.opencb.commons.datastore.core.*; import org.opencb.opencga.analysis.AnalysisUtils; +import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.family.qc.FamilyQcAnalysis; import org.opencb.opencga.analysis.individual.qc.IndividualQcAnalysis; import org.opencb.opencga.analysis.individual.qc.IndividualQcUtils; @@ -1333,6 +1334,7 @@ public Response circos( // Create and set up Circos executor CircosLocalAnalysisExecutor executor = new CircosLocalAnalysisExecutor(study, params, variantManager); + executor.setAssembly(ResourceUtils.getAssembly(catalogManager, study, token)); ObjectMap executorParams = new ObjectMap(); executorParams.put("opencgaHome", opencgaHome); @@ -1361,13 +1363,13 @@ public Response circos( } else { return createErrorResponse(new Exception("Error plotting Circos graph")); } - } catch (ToolException | IOException e) { + } catch (ToolException | IOException | CatalogException e) { return createErrorResponse(e); } finally { if (outDir != null) { // Delete temporal directory try { - if (outDir.exists() && !params.getTitle().startsWith("no.delete.")) { + if (outDir.exists()) { FileUtils.deleteDirectory(outDir); } } catch (IOException e) { From 9131896050580f0e278ced8a0cba83a25fbe8e2c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 10:43:19 +0100 Subject: [PATCH 168/354] Prepare release 2.12.0 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 8de461ca8ff..2ef003c553e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 46f81a55515..f14bbb3e38c 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 8ef41bfcd62..d05e1e7d814 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 93f3520ff03..bdc03b8f77e 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 19d37d3c9e7..7412d5aaaee 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index c23f4838246..6c6db300e24 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 815ee677068..332aef4e55a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 93f262d0e55..74e990ea730 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 6251ca298e4..234542e6f9b 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 7bed75cc27f..fd6da29a682 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 37db6614e4a..2880adf4c22 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 4db6f65b8fc..0541cd18102 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 76ffc1e9ce3..7c90805eeb6 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 09519b23291..39458481ca3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 8d284fb1f33..8ea9de0e6b1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index c7ebb3e1923..ff075f94af5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 05620a5144b..e8f914a300b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 31fb09510bd..2a6bcc82554 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 0b4bd7d486f..f6720eba79b 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 70e0db7be37..4864339fd69 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/pom.xml b/pom.xml index 2d3eb5c6346..61d7d5a410d 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0-SNAPSHOT + 2.12.0 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.0_dev - 2.12.0_dev - 5.8.0-SNAPSHOT - 2.12.0-SNAPSHOT - 4.12.0-SNAPSHOT - 2.12.0-SNAPSHOT + 2.12.0 + 2.12.0 + 5.7.0 + 2.12.0 + 4.12.0 + 2.12.0 0.2.0 2.11.4 From 798c27db52c60cee62fe57033446d5be9bb7dbff Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 10:46:06 +0100 Subject: [PATCH 169/354] Prepare new development branch release-2.12.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 2ef003c553e..625ffd2fe21 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index f14bbb3e38c..7a3f1198825 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index d05e1e7d814..d55580e9771 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index bdc03b8f77e..719034642cd 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 7412d5aaaee..68060d55ac2 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 6c6db300e24..760d7322c7d 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 332aef4e55a..312572202db 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 74e990ea730..19845c9f6e5 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 234542e6f9b..de4e12b5310 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index fd6da29a682..d242fe2d96c 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 2880adf4c22..70424b4383f 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0541cd18102..f36ee69795e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 7c90805eeb6..65c4454d0ca 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 39458481ca3..85bd2644a77 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 8ea9de0e6b1..afae54a1eed 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index ff075f94af5..e756e8671f3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index e8f914a300b..7c572c7e0c3 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 2a6bcc82554..e910f2f9a13 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index f6720eba79b..3cf09aff1db 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 4864339fd69..7e3c399852a 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 61d7d5a410d..d100ef4838c 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.0 + 2.13.0-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.0 - 2.12.0 - 5.7.0 - 2.12.0 - 4.12.0 - 2.12.0 + 2.13.0_dev + 2.13.0_dev + 5.8.0-SNAPSHOT + 2.13.0-SNAPSHOT + 4.13.0-SNAPSHOT + 2.13.0-SNAPSHOT 0.2.0 2.11.4 From 75352a37e3be0f48dde30065d427a4171f6c8715 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 10:46:36 +0100 Subject: [PATCH 170/354] Prepare new development branch release-2.12.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 625ffd2fe21..88d4374e0f9 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 7a3f1198825..59e15247036 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index d55580e9771..abbb53edf3e 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 719034642cd..3aa9a99212f 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 68060d55ac2..841aa96f57c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 760d7322c7d..c6e630f91e4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 312572202db..aed060a2adf 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 19845c9f6e5..b11b2cd5d98 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index de4e12b5310..828b8c37583 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index d242fe2d96c..71e1178ba0e 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 70424b4383f..e296ba4f592 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index f36ee69795e..59a7f4570bb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 65c4454d0ca..3166bf65687 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 85bd2644a77..617ef5f79a5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index afae54a1eed..d19c4962810 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index e756e8671f3..4d1bda4e8b5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 7c572c7e0c3..e0d4f2f7293 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index e910f2f9a13..ec2f9f3f874 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 3cf09aff1db..774813d3b36 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 7e3c399852a..747b775e9d9 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index d100ef4838c..521a6ab3d97 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.13.0_dev - 2.13.0_dev - 5.8.0-SNAPSHOT - 2.13.0-SNAPSHOT - 4.13.0-SNAPSHOT - 2.13.0-SNAPSHOT + 2.12.1_dev + 2.12.1_dev + 5.7.1-SNAPSHOT + 2.12.1-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.1-SNAPSHOT 0.2.0 2.11.4 From 3fc28d9a93e2939330548647eb9223bae43722d9 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 11:48:43 +0100 Subject: [PATCH 171/354] Prepare new development branch release-2.12.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 88d4374e0f9..625ffd2fe21 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 59e15247036..7a3f1198825 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index abbb53edf3e..d55580e9771 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 3aa9a99212f..719034642cd 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 841aa96f57c..68060d55ac2 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index c6e630f91e4..760d7322c7d 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index aed060a2adf..312572202db 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index b11b2cd5d98..19845c9f6e5 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 828b8c37583..de4e12b5310 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 71e1178ba0e..d242fe2d96c 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index e296ba4f592..70424b4383f 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 59a7f4570bb..f36ee69795e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 3166bf65687..65c4454d0ca 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 617ef5f79a5..85bd2644a77 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index d19c4962810..afae54a1eed 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 4d1bda4e8b5..e756e8671f3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index e0d4f2f7293..7c572c7e0c3 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index ec2f9f3f874..e910f2f9a13 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 774813d3b36..3cf09aff1db 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 747b775e9d9..7e3c399852a 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 521a6ab3d97..988ffda38ca 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.13.0-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.1_dev - 2.12.1_dev - 5.7.1-SNAPSHOT - 2.12.1-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.1-SNAPSHOT + 2.13.0_dev + 2.13.0_dev + 5.9.0-SNAPSHOT + 2.13.0-SNAPSHOT + 4.13.0-SNAPSHOT + 2.13.0-SNAPSHOT 0.2.0 2.11.4 From 812ccbad6d9cb677bdff9e5981bb8c7af8c1af98 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 11:49:13 +0100 Subject: [PATCH 172/354] Prepare new development branch release-2.12.x --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 625ffd2fe21..88d4374e0f9 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 7a3f1198825..59e15247036 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index d55580e9771..abbb53edf3e 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 719034642cd..3aa9a99212f 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 68060d55ac2..841aa96f57c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 760d7322c7d..c6e630f91e4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 312572202db..aed060a2adf 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 19845c9f6e5..b11b2cd5d98 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index de4e12b5310..828b8c37583 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index d242fe2d96c..71e1178ba0e 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 70424b4383f..e296ba4f592 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index f36ee69795e..59a7f4570bb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 65c4454d0ca..3166bf65687 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 85bd2644a77..617ef5f79a5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index afae54a1eed..d19c4962810 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index e756e8671f3..4d1bda4e8b5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 7c572c7e0c3..e0d4f2f7293 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index e910f2f9a13..ec2f9f3f874 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 3cf09aff1db..774813d3b36 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 7e3c399852a..747b775e9d9 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 988ffda38ca..b3ac04f3d10 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.13.0-SNAPSHOT + 2.12.1-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.13.0_dev - 2.13.0_dev - 5.9.0-SNAPSHOT - 2.13.0-SNAPSHOT - 4.13.0-SNAPSHOT - 2.13.0-SNAPSHOT + 2.12.1_dev + 2.12.1_dev + 5.8.1-SNAPSHOT + 2.12.1-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.1-SNAPSHOT 0.2.0 2.11.4 From 634edcca9558d1fa916604cfadebce3a6eea24be Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 11:57:56 +0100 Subject: [PATCH 173/354] Fix version --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 88d4374e0f9..2ef003c553e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 59e15247036..f14bbb3e38c 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index abbb53edf3e..d05e1e7d814 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 3aa9a99212f..bdc03b8f77e 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 841aa96f57c..7412d5aaaee 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index c6e630f91e4..6c6db300e24 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index aed060a2adf..332aef4e55a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index b11b2cd5d98..74e990ea730 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 828b8c37583..234542e6f9b 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 71e1178ba0e..fd6da29a682 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index e296ba4f592..2880adf4c22 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 59a7f4570bb..0541cd18102 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 3166bf65687..7c90805eeb6 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 617ef5f79a5..39458481ca3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index d19c4962810..8ea9de0e6b1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 4d1bda4e8b5..ff075f94af5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index e0d4f2f7293..e8f914a300b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index ec2f9f3f874..2a6bcc82554 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 774813d3b36..f6720eba79b 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 747b775e9d9..4864339fd69 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 ../pom.xml diff --git a/pom.xml b/pom.xml index 521a6ab3d97..38c2a7bedbe 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.0 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.1_dev - 2.12.1_dev - 5.7.1-SNAPSHOT - 2.12.1-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.1-SNAPSHOT + 2.12.0 + 2.12.0 + 5.8.0 + 2.12.0 + 4.12.0 + 2.12.0 0.2.0 2.11.4 From 6ada500e75841a5fd3d3edbb2666df60a6147a4e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 12:38:23 +0100 Subject: [PATCH 174/354] Fix azure-storage-blob --- opencga-storage/opencga-storage-core/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 2880adf4c22..e27ddc37612 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -198,10 +198,6 @@ com.esotericsoftware.kryo kryo - - com.microsoft.azure - azure-storage-blob - org.apache.httpcomponents httpclient From aee95af26999bec5e56f7f63c5a3106e94add58f Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 20 Nov 2023 12:59:01 +0100 Subject: [PATCH 175/354] Fix opencga-storage-hadoop-deps.artifactId shaded dependency --- opencga-analysis/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 2ef003c553e..d3f6e2c9d08 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -72,8 +72,8 @@ org.opencb.opencga ${opencga-storage-hadoop-deps.artifactId} + ${project.parent.version} shaded - test org.opencb.opencga @@ -274,6 +274,7 @@ com.google.code.findbugs:jsr305:jar:3.0.2 + * * From 3d309d4c3e27bd5ee545ad614b5681f0b870621b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 21 Nov 2023 15:54:49 +0100 Subject: [PATCH 176/354] Prepare Port Patch 1.6.6 -> 1.10.1 #TASK-5279 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index d0c275a1018..881cd411faa 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 25666510d61..e9f0e6bb071 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 38fc83e954b..64697f47df3 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 433bb6fd1b2..8084e557ad3 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 8036793b3ed..1dfa023780f 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 33315ba11c1..4f882040e5a 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index b3be1aea114..cf2c9e0013b 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index c186a98f496..193843b8d0e 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index be44ddec7cf..2a1b27e6e81 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 0b332bdb89a..59af932fbce 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index cc4f4fa7496..e9032ab9051 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -25,7 +25,7 @@ org.opencb.opencga opencga-storage - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index c0f70ba8746..fa7a2067bc7 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index e5f67d7a6ca..3166bf65687 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index b6c1bd893fb..617ef5f79a5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 270a8977b7d..d19c4962810 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index a2ea99fc31e..a0fb9edd278 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 4c0e2ef0984..e0d4f2f7293 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index fc833ae2a71..007994965fe 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 3d38521c1a8..06b35df3fd0 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 013e3283386..56284b3469c 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 958197fcda8..5e0a1fd4030 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.8.5 + 2.12.1-SNAPSHOT pom OpenCGA OenCGA projects implements a big data platform for genomic data analysis From f5dd58f59f1a1cdb4bab8eefe0fce89bd20ae5b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 23 Nov 2023 09:52:30 +0100 Subject: [PATCH 177/354] analysis: add genome version when calling the R script to plot the Circos, #TASK-5113 --- .../analysis/variant/circos/CircosAnalysis.java | 1 - .../circos/CircosLocalAnalysisExecutor.java | 10 ++++++---- .../variant/genomePlot/GenomePlotAnalysis.java | 4 ---- .../GenomePlotLocalAnalysisExecutor.java | 7 +++++-- .../core/tools/variant/CircosAnalysisExecutor.java | 10 ---------- .../tools/variant/GenomePlotAnalysisExecutor.java | 14 +------------- .../server/rest/analysis/VariantWebService.java | 1 - 7 files changed, 12 insertions(+), 35 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java index 9def10b1bb6..96bf18034c0 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosAnalysis.java @@ -70,7 +70,6 @@ protected void run() throws ToolException { step(getId(), () -> { getToolExecutor(CircosAnalysisExecutor.class) .setStudy(study) - .setAssembly(assembly) .setCircosParams(circosParams) .execute(); }); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java index d87b46c8858..356d53d1d84 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/circos/CircosLocalAnalysisExecutor.java @@ -28,8 +28,10 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.utils.DockerUtils; +import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.StorageToolExecutor; import org.opencb.opencga.analysis.variant.manager.VariantStorageManager; +import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.core.common.GitRepositoryState; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.exceptions.ToolException; @@ -93,7 +95,7 @@ public VariantStorageManager getVariantStorageManager() throws ToolExecutorExcep } @Override - public void run() throws ToolException, IOException { + public void run() throws ToolException, IOException, CatalogException { // Create query Query query = new Query(); @@ -128,7 +130,6 @@ public void run() throws ToolException, IOException { throw new ToolException("Error launching threads when executing the Circos analysis", e); } - if (MapUtils.isEmpty(errors)) { // Execute R script // circos.R ./snvs.tsv ./indels.tsv ./cnvs.tsv ./rearrs.tsv SampleId @@ -141,8 +142,9 @@ public void run() throws ToolException, IOException { // Get genome version String genomeVersion = "hg38"; - if (StringUtils.isNotEmpty(getAssembly()) && getAssembly().toUpperCase(Locale.ROOT).equals("GRCH37")) { - genomeVersion = "hg19"; + String assembly = ResourceUtils.getAssembly(storageManager.getCatalogManager(), getStudy(), getToken()); + if (StringUtils.isNotEmpty(assembly) && assembly.toUpperCase(Locale.ROOT).equals("GRCH37")) { + genomeVersion = "hg19"; } String scriptParams = "R CMD Rscript --vanilla " + DOCKER_INPUT_PATH + "/circos.R" diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java index 56c3feb0b57..04a5241623f 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotAnalysis.java @@ -52,7 +52,6 @@ public class GenomePlotAnalysis extends OpenCgaToolScopeStudy { private GenomePlotAnalysisParams genomePlotParams = new GenomePlotAnalysisParams(); private java.io.File configFile; - private String assembly; @Override protected void check() throws Exception { @@ -73,8 +72,6 @@ protected void check() throws Exception { if (!configFile.exists()) { throw new ToolException("Invalid parameters: genome plot configuration file does not exist (" + configFile + ")"); } - - assembly = ResourceUtils.getAssembly(catalogManager, study, token); } @Override @@ -82,7 +79,6 @@ protected void run() throws ToolException { step(getId(), () -> { getToolExecutor(GenomePlotAnalysisExecutor.class) .setStudy(study) - .setAssembly(assembly) .setConfigFile(configFile) .execute(); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java index bcbc6b77599..a86cc797287 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/genomePlot/GenomePlotLocalAnalysisExecutor.java @@ -30,8 +30,10 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.utils.DockerUtils; +import org.opencb.opencga.analysis.ResourceUtils; import org.opencb.opencga.analysis.StorageToolExecutor; import org.opencb.opencga.analysis.variant.manager.VariantStorageManager; +import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.core.common.GitRepositoryState; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.common.TimeUtils; @@ -76,7 +78,7 @@ public class GenomePlotLocalAnalysisExecutor extends GenomePlotAnalysisExecutor private Logger logger = LoggerFactory.getLogger(this.getClass()); @Override - public void run() throws ToolException, IOException { + public void run() throws ToolException, IOException, CatalogException { plotConfig = JacksonUtils.getDefaultObjectMapper().readerFor(GenomePlotConfig.class).readValue(getConfigFile()); @@ -125,7 +127,8 @@ public void run() throws ToolException, IOException { // Get genome version String genomeVersion = "hg38"; - if (StringUtils.isNotEmpty(getAssembly()) && getAssembly().toUpperCase(Locale.ROOT).equals("GRCH37")) { + String assembly = ResourceUtils.getAssembly(storageManager.getCatalogManager(), getStudy(), getToken()); + if (StringUtils.isNotEmpty(assembly) && assembly.toUpperCase(Locale.ROOT).equals("GRCH37")) { genomeVersion = "hg19"; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java index c23dce7931a..89f1b7cc569 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/CircosAnalysisExecutor.java @@ -22,7 +22,6 @@ public abstract class CircosAnalysisExecutor extends OpenCgaToolExecutor { private String study; - private String assembly; private CircosAnalysisParams circosParams; public CircosAnalysisExecutor() { @@ -42,15 +41,6 @@ public CircosAnalysisExecutor setStudy(String study) { return this; } - public String getAssembly() { - return assembly; - } - - public CircosAnalysisExecutor setAssembly(String assembly) { - this.assembly = assembly; - return this; - } - public CircosAnalysisParams getCircosParams() { return circosParams; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java index a7d6b7a7ca8..2205143c670 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/variant/GenomePlotAnalysisExecutor.java @@ -23,15 +23,13 @@ public abstract class GenomePlotAnalysisExecutor extends OpenCgaToolExecutor { private String study; - private String assembly; private File configFile; public GenomePlotAnalysisExecutor() { } - public GenomePlotAnalysisExecutor(String study, String assembly, File configFile) { + public GenomePlotAnalysisExecutor(String study, File configFile) { this.study = study; - this.assembly = assembly; this.configFile = configFile; } @@ -39,7 +37,6 @@ public GenomePlotAnalysisExecutor(String study, String assembly, File configFile public String toString() { final StringBuilder sb = new StringBuilder("GenomePlotAnalysisExecutor{"); sb.append("study='").append(study).append('\''); - sb.append("assembly='").append(assembly).append('\''); sb.append(", configFile=").append(configFile); sb.append('}'); return sb.toString(); @@ -54,15 +51,6 @@ public GenomePlotAnalysisExecutor setStudy(String study) { return this; } - public String getAssembly() { - return assembly; - } - - public GenomePlotAnalysisExecutor setAssembly(String assembly) { - this.assembly = assembly; - return this; - } - public File getConfigFile() { return configFile; } diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java index 29bae7fe514..0d7a5b0a51f 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java @@ -1334,7 +1334,6 @@ public Response circos( // Create and set up Circos executor CircosLocalAnalysisExecutor executor = new CircosLocalAnalysisExecutor(study, params, variantManager); - executor.setAssembly(ResourceUtils.getAssembly(catalogManager, study, token)); ObjectMap executorParams = new ObjectMap(); executorParams.put("opencgaHome", opencgaHome); From 1e99097b35e63efc26425c3ce8c55952031ae2a2 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 23 Nov 2023 19:34:34 +0100 Subject: [PATCH 178/354] pom: Delete scope test of commons-io #5300 --- opencga-app/pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 7a3f1198825..7e86ac13394 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -221,7 +221,6 @@ commons-io commons-io - test junit @@ -612,6 +611,9 @@ * + + * + From f79c126b99d5b8b4b5c5b1665b3b67f6ca8091ec Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 27 Nov 2023 16:57:57 +0100 Subject: [PATCH 179/354] OpencgaCommandExecutor: code refactor #TASK-5160 --- .../app/cli/main/executors/OpencgaCommandExecutor.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java index b46e5f387ab..8f935c36ff8 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java @@ -225,7 +225,7 @@ public OpencgaCommandExecutor setOpenCGAClient(OpenCGAClient openCGAClient) { } public String getObjectAsJSON(String objectCategory, String objectPath) throws Exception { - String jsonInString = "\n"; + StringBuilder jsonInString = new StringBuilder("\n"); try { ObjectMap queryParams = new ObjectMap(); queryParams.putIfNotEmpty("category", objectCategory); @@ -241,11 +241,11 @@ public String getObjectAsJSON(String objectCategory, String objectPath) throws E //jsonInString += parameter.getName()+":"+parameter.getAllowedValues()+"\n"; if (parameter.getData() != null) { enc = true; - jsonInString += printBody(parameter.getData(), ""); + jsonInString.append(printBody(parameter.getData(), "")); } } if (!enc) { - jsonInString += "No model available"; + jsonInString.append("No model available"); } // } @@ -253,10 +253,10 @@ public String getObjectAsJSON(String objectCategory, String objectPath) throws E } } } catch (Exception e) { - jsonInString = "Data model not found."; + jsonInString = new StringBuilder("Data model not found."); CommandLineUtils.error(e); } - return jsonInString; + return jsonInString.toString(); } private String printBody(List data, String tabs) { From 67fe7a2b1004fd0ab321e997c02c7b033a1edd24 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 28 Nov 2023 14:21:23 +0100 Subject: [PATCH 180/354] cli: Autogenerated CLI and clients for release 2.12.1 --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- opencga-client/src/main/R/R/Admin-methods.R | 2 +- opencga-client/src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 16 ++++++++-------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- opencga-client/src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- opencga-client/src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 2 +- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../opencga/client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../client/rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../opencga/client/rest/clients/FileClient.java | 2 +- .../opencga/client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../opencga/client/rest/clients/JobClient.java | 2 +- .../opencga/client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../opencga/client/rest/clients/StudyClient.java | 2 +- .../opencga/client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- opencga-client/src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- opencga-client/src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../pyopencga/rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../python/pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../pyopencga/rest_clients/individual_client.py | 2 +- .../python/pyopencga/rest_clients/job_client.py | 2 +- .../python/pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../python/pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- 71 files changed, 86 insertions(+), 86 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index b80af90ba5e..4044ac48785 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-21 OpenCB +* Copyright 2015-2023-11-28 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index a02dfa83516..cd4539d7081 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-11-21 OpenCB +* Copyright 2015-2023-11-28 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index ae477210b1e..7edd463fead 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 8560a244847..8135945335d 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index b0068c9950b..80478a6a723 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, templateId, members, studies, variableSet, study, group, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, members, variableSet, group, studies, templateId, study, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, members, file, annotationSet, files, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, annotationSet, members, folder, files, file, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, annotationSet, members, samples, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, sample, members, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, individual, members, individuals, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, annotationSet, members, families, family, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohorts, members, cohort, annotationSet, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, cohort, members, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, members, interpretation, interpretations, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index fab63cdbd0a..497a2a4e445 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -58,7 +58,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, clinicalAnalysis, clinicalAnalyses, members, interpretation, interpretations, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, members, interpretation, clinicalAnalysis, clinicalAnalyses, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 81c5bfaf062..6741defa9a8 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohorts, members, cohort, annotationSet, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, cohort, members, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 82c680e4aa1..0bc8e789cae 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, family, members, families, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, members, families, family, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 224889cbec9..d8b546b1355 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, members, file, annotationSet, files, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, annotationSet, members, folder, files, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 26788aad18d..9519d1e4e0d 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index c2b5f47ee01..46cca7764b8 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, members, individuals, annotationSet, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, individual, members, individuals, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index ed99e482cc8..7f0068090ec 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index dd5036d5550..a44217acaf5 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index dd9eb327ea9..28b608bb78a 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 541d68f22e9..5e341b9d767 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 14d48a37e54..1509cf6470e 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 43d03aec39d..2f1eb1494c3 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, members, samples, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, sample, members, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 5b77ac8bf5c..1121835fa7d 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, members, studies, variableSet, study, group, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, members, variableSet, group, studies, templateId, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 0ded200ca86..43a27f93168 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 6d2f29fe872..05d2a81c35f 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-11-21 +# Autogenerated on: 2023-11-28 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index ea9053acf3e..f91feeafed7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 9c00f1476bc..292d2a1d7a7 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 97d4dc4846c..bee2385969b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -51,7 +51,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index 8991b50f7b8..ee62858466e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index fc3bce5fd21..57f3e8020fc 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index f0b96f0ad27..8bf553d4885 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 26420fe0854..483ec904b76 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 23247404844..2df19bf3ac2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 563387f83f9..4c5291d9592 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 44c77b3ce80..1591b8722ce 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index ef9f54e6ebe..8da55a76d03 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index aae1fef2033..2a5f21b3ff5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 12346da3ee2..34dd6c9076a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 59756fd7d52..5e16287a2b2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index c90bfd45d6b..0bfcaa59932 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index ca8635f527a..6ee33c331df 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 0010eb4f421..2637e2ebeb3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-11-21 +* Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index ae4ecad6de0..ef4a5ef42b9 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 74e50dd5dfc..55672582aa7 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index ed55809ab52..9359eff7999 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 60b4352621f..1aba25258cd 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index f6bbac654c9..a72675f7fcf 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 0269e3aade4..85170821c51 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index c1bc508be19..a83abdb15f6 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index 24a2b3549b7..1b018b3cad5 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index e2379cf23c1..ac584fa65a2 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 6ad0b13df0a..02b18815c69 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 36ae34309b9..7553b05f43d 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index b885aa0f47d..fd0de7a20c6 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index df98105cf52..314c05f5726 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index e49505ffb54..39d27e28279 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index ce5c939d795..6768443952a 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index c20587da1a2..07963160849 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 1258093c63a..89fd13f071a 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-11-21 + * Autogenerated on: 2023-11-28 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 4a5396ee94d..a9fab8bb5ca 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index ddd22c8b5f6..262aa8310fa 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 349eadc2182..eb5c777e105 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 1de3e0ed592..e8dbcb72224 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 60340ec0b23..bd716eec69d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index dc4009aec05..49dc4fda423 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 3f5c805c15d..d8d5e48f981 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index 5abb3fe6d58..4f12022699d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 2b1fa810d9a..f93b1b7bc45 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index ae188fd17cc..ac1beb600a7 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 6b5eaca3dc0..69a0504d168 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 7a80400e608..6061ee85a37 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 6308e43511f..5158e8e6942 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 5eba973d147..ed4f05a5533 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 60d21d9ce9b..01a30231982 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 08c8e1b19fb..b8bcda16371 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index c07754aa34d..0f374b14d97 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-11-21 + Autogenerated on: 2023-11-28 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From e1ca92f2670ab71cfb6a70fa1368e1a6ba8b0bce Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 28 Nov 2023 17:00:40 +0100 Subject: [PATCH 181/354] catalog: add new fields to Clinical report, #TASK-5198 --- ...ationSetsInClinicalAnalysisMigration.java} | 4 +- ...pleteClinicalReportDataModelMigration.java | 32 ++ .../db/api/ClinicalAnalysisDBAdaptor.java | 58 +++- .../ClinicalAnalysisMongoDBAdaptor.java | 42 ++- .../db/mongodb/StudyMongoDBAdaptor.java | 7 + .../converters/ClinicalAnalysisConverter.java | 47 ++- .../managers/ClinicalAnalysisManager.java | 306 +++++++++++++++--- .../opencga/catalog/managers/FileUtils.java | 3 + .../managers/ClinicalAnalysisManagerTest.java | 201 +++++++++++- .../opencga/core/api/FieldConstants.java | 7 +- .../models/clinical/ClinicalAnalysis.java | 58 +++- .../ClinicalAnalysisCreateParams.java | 66 +++- ...icalAnalysisQualityControlUpdateParam.java | 19 ++ .../ClinicalAnalysisUpdateParams.java | 48 ++- .../core/models/clinical/ClinicalReport.java | 52 ++- .../core/models/clinical/ClinicalRequest.java | 80 +++++ .../models/clinical/ClinicalResponsible.java | 115 +++++++ .../opencb/opencga/core/models/file/File.java | 1 + .../rest/analysis/ClinicalWebService.java | 6 + 19 files changed, 1032 insertions(+), 120 deletions(-) rename opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/{AddAnnotationSetsInClinicalAnalysis.java => AddAnnotationSetsInClinicalAnalysisMigration.java} (95%) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java create mode 100644 opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalRequest.java create mode 100644 opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalResponsible.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysisMigration.java similarity index 95% rename from opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java rename to opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysisMigration.java index 018b0cc28e7..0ab4fceb81a 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysis.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/AddAnnotationSetsInClinicalAnalysisMigration.java @@ -15,13 +15,13 @@ import java.util.Collections; @Migration(id = "add_annotation_sets_to_clinical_analysis" , - description = "Add private annotation fields to ClinicalAnalysis documents", + description = "Add private annotation fields to ClinicalAnalysis documents #TASK-5198", version = "2.12.0", domain = Migration.MigrationDomain.CATALOG, language = Migration.MigrationLanguage.JAVA, date = 20231116 ) -public class AddAnnotationSetsInClinicalAnalysis extends MigrationTool { +public class AddAnnotationSetsInClinicalAnalysisMigration extends MigrationTool { @Override protected void run() throws Exception { diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java new file mode 100644 index 00000000000..b4fa490c90a --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java @@ -0,0 +1,32 @@ +package org.opencb.opencga.app.migrations.v2_12_0.catalog; + +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Projections; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.catalog.migration.MigrationTool; + +import java.util.Arrays; +import java.util.Collections; + +@Migration(id = "complete_clinical_report_data_model" , + description = "Complete Clinical Report data model #TASK-5198", + version = "2.12.0", + domain = Migration.MigrationDomain.CATALOG, + language = Migration.MigrationLanguage.JAVA, + date = 20231128 +) +public class CompleteClinicalReportDataModelMigration extends MigrationTool { + + @Override + protected void run() throws Exception { + migrateCollection( + Arrays.asList(MongoDBAdaptorFactory.CLINICAL_ANALYSIS_COLLECTION, MongoDBAdaptorFactory.DELETED_CLINICAL_ANALYSIS_COLLECTION), + Filters.exists("analyst"), + Projections.include(Collections.singletonList("analyst")), + (document, bulk) -> { + + }); + } + +} diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java index ac30c48e9d2..a4b3d8f19b4 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java @@ -69,10 +69,14 @@ enum QueryParams implements QueryParam { CONSENT("consent", OBJECT, ""), PRIORITY("priority", OBJECT, ""), PRIORITY_ID("priority.id", TEXT, ""), - ANALYST("analyst", TEXT_ARRAY, ""), - ANALYST_ID("analyst.id", TEXT, ""), - ANALYST_ASSIGNED_BY("analyst.assignedBy", TEXT, ""), + ANALYSTS("analysts", TEXT_ARRAY, ""), + ANALYSTS_ID("analysts.id", TEXT, ""), + ANALYSTS_ASSIGNED_BY("analysts.assignedBy", TEXT, ""), REPORT("report", OBJECT, ""), + REPORT_SUPPORTING_EVIDENCES("report.supportingEvidences", TEXT_ARRAY, ""), + REPORT_FILES("report.files", TEXT_ARRAY, ""), + REQUEST("request", OBJECT, ""), + RESPONSIBLE("responsible", OBJECT, ""), FLAGS("flags", OBJECT, ""), FLAGS_ID("flags.id", TEXT, ""), RELEASE("release", INTEGER, ""), @@ -160,6 +164,54 @@ public static QueryParams getParam(String key) { } } + enum ReportQueryParams implements QueryParam { + COMMENTS("comments", OBJECT, ""), + SUPPORTING_EVIDENCES("supportingEvidences", TEXT_ARRAY, ""), + FILES("files", TEXT_ARRAY, ""); + + private static Map map; + + static { + map = new LinkedMap(); + for (ReportQueryParams params : ReportQueryParams.values()) { + map.put(params.key(), params); + } + } + + private final String key; + private Type type; + private String description; + + ReportQueryParams(String key, Type type, String description) { + this.key = key; + this.type = type; + this.description = description; + } + + @Override + public String key() { + return key; + } + + @Override + public Type type() { + return type; + } + + @Override + public String description() { + return description; + } + + public static Map getMap() { + return map; + } + + public static ReportQueryParams getParam(String key) { + return map.get(key); + } + } + default boolean exists(long clinicalAnalysisId) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { return count(new Query(QueryParams.UID.key(), clinicalAnalysisId)).getNumMatches() > 0; } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java index 67f9a035aa0..996a7eaac48 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.time.StopWatch; import org.bson.Document; import org.bson.conversions.Bson; +import org.opencb.biodata.models.clinical.ClinicalAnalyst; import org.opencb.biodata.models.clinical.ClinicalAudit; import org.opencb.biodata.models.clinical.ClinicalComment; import org.opencb.commons.datastore.core.*; @@ -155,6 +156,20 @@ static void fixFilesForRemoval(ObjectMap parameters) { parameters.put(FILES.key(), fileParamList); } + static void fixAnalystsForRemoval(ObjectMap parameters) { + if (parameters.get(ANALYSTS.key()) == null) { + return; + } + + List analystParamList = new LinkedList<>(); + for (Object analyst : parameters.getAsList(ANALYSTS.key())) { + if (analyst instanceof ClinicalAnalyst) { + analystParamList.add(new Document("id", ((ClinicalAnalyst) analyst).getId())); + } + } + parameters.put(ANALYSTS.key(), analystParamList); + } + @Override public OpenCGAResult getAnnotationSet(long id, @Nullable String annotationSetName) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { @@ -382,8 +397,8 @@ UpdateDocument parseAndValidateUpdateParams(ObjectMap parameters, List actionMap = queryOptions.getMap(Constants.ACTIONS, new HashMap<>()); @@ -420,8 +436,26 @@ UpdateDocument parseAndValidateUpdateParams(ObjectMap parameters, List variableSetList) { + Document document = super.convertToStorageType(clinicalAnalysis, variableSetList); document.put(ClinicalAnalysisDBAdaptor.QueryParams.UID.key(), clinicalAnalysis.getUid()); document.put(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), clinicalAnalysis.getStudyUid()); @@ -56,6 +55,24 @@ public void validateDocumentToUpdate(Document document) { validateProbandToUpdate(document); validatePanelsToUpdate(document); validateFilesToUpdate(document); + validateReportToUpdate(document); + } + + public void validateReportToUpdate(Document document) { + Document report = document.get(ClinicalAnalysisDBAdaptor.QueryParams.REPORT.key(), Document.class); + if (report != null) { + List files = report.getList(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), Document.class); + if (CollectionUtils.isNotEmpty(files)) { + List filteredFiles = getReducedFileDocuments(files); + report.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), filteredFiles); + } + + files = report.getList(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), Document.class); + if (CollectionUtils.isNotEmpty(files)) { + List filteredFiles = getReducedFileDocuments(files); + report.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), filteredFiles); + } + } } public void validateInterpretationToUpdate(Document document) { @@ -141,6 +158,11 @@ public void validatePanelsToUpdate(Document document) { public void validateFilesToUpdate(Document document) { List files = (List) document.get(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key()); + List reducedFiles = getReducedFileDocuments(files); + document.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), reducedFiles); + } + + private static List getReducedFileDocuments(List files) { if (files != null) { // We make sure we don't store duplicates Map fileMap = new HashMap<>(); @@ -154,12 +176,13 @@ public void validateFilesToUpdate(Document document) { } } - document.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), - fileMap.entrySet().stream() - .map(entry -> new Document() - .append(FileDBAdaptor.QueryParams.PATH.key(), entry.getValue().getPath()) - .append(FileDBAdaptor.QueryParams.UID.key(), entry.getValue().getUid())) - .collect(Collectors.toList())); + return fileMap.values().stream() + .map(file -> new Document() + .append(FileDBAdaptor.QueryParams.PATH.key(), file.getPath()) + .append(FileDBAdaptor.QueryParams.UID.key(), file.getUid())) + .collect(Collectors.toList()); + } else { + return Collections.emptyList(); } } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java index 63a0ca46dd6..069a8e25d4e 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java @@ -37,10 +37,7 @@ import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; import org.opencb.opencga.catalog.models.InternalGetDataResult; -import org.opencb.opencga.catalog.utils.AnnotationUtils; -import org.opencb.opencga.catalog.utils.Constants; -import org.opencb.opencga.catalog.utils.ParamUtils; -import org.opencb.opencga.catalog.utils.UuidUtils; +import org.opencb.opencga.catalog.utils.*; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.common.TimeUtils; @@ -268,6 +265,25 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis ClinicalAnalysisQualityControl::new)); clinicalAnalysis.setPanels(ParamUtils.defaultObject(clinicalAnalysis.getPanels(), Collections.emptyList())); clinicalAnalysis.setAnnotationSets(ParamUtils.defaultObject(clinicalAnalysis.getAnnotationSets(), Collections.emptyList())); + clinicalAnalysis.setResponsible(ParamUtils.defaultObject(clinicalAnalysis.getResponsible(), ClinicalResponsible::new)); + clinicalAnalysis.setRequest(ParamUtils.defaultObject(clinicalAnalysis.getRequest(), ClinicalRequest::new)); + + // ---------- Check and init report fields + validateAndInitReport(study, clinicalAnalysis.getReport(), userId); + + // ---------- Check and init responsible fields + ClinicalResponsible responsible = clinicalAnalysis.getResponsible(); + if (StringUtils.isEmpty(responsible.getId())) { + responsible.setId(userId); + } + fillResponsible(responsible); + + // ---------- Check and init request fields + ClinicalRequest request = clinicalAnalysis.getRequest(); + if (StringUtils.isNotEmpty(request.getId())) { + request.setDate(ParamUtils.checkDateOrGetCurrentDate(request.getDate(), "request.date")); + fillResponsible(request.getResponsible()); + } if (clinicalAnalysis.getQualityControl().getComments() != null) { for (ClinicalComment comment : clinicalAnalysis.getQualityControl().getComments()) { @@ -301,20 +317,29 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis } // Analyst + List userList; QueryOptions userInclude = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.ID.key(), UserDBAdaptor.QueryParams.NAME.key(), UserDBAdaptor.QueryParams.EMAIL.key())); - User user; - if (clinicalAnalysis.getAnalyst() == null || StringUtils.isEmpty(clinicalAnalysis.getAnalyst().getId())) { - user = userDBAdaptor.get(userId, userInclude).first(); + if (clinicalAnalysis.getAnalysts() == null) { + userList = userDBAdaptor.get(userId, userInclude).getResults(); } else { - // Validate user - OpenCGAResult result = userDBAdaptor.get(clinicalAnalysis.getAnalyst().getId(), userInclude); - if (result.getNumResults() == 0) { - throw new CatalogException("User '" + clinicalAnalysis.getAnalyst().getId() + "' not found"); + // Validate users + Set userIds = new HashSet<>(); + for (ClinicalAnalyst analyst : clinicalAnalysis.getAnalysts()) { + userIds.add(analyst.getId()); + } + Query query = new Query(UserDBAdaptor.QueryParams.ID.key(), userIds); + OpenCGAResult result = userDBAdaptor.get(query, userInclude); + if (result.getNumResults() < userIds.size()) { + throw new CatalogException("Some clinical analysts could not be found."); } - user = result.first(); + userList = result.getResults(); } - clinicalAnalysis.setAnalyst(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, TimeUtils.getTime())); + List clinicalAnalystList = new ArrayList<>(userList.size()); + for (User user : userList) { + clinicalAnalystList.add(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, TimeUtils.getTime())); + } + clinicalAnalysis.setAnalysts(clinicalAnalystList); if (TimeUtils.toDate(clinicalAnalysis.getDueDate()) == null) { throw new CatalogException("Unrecognised due date. Accepted format is: yyyyMMddHHmmss"); @@ -511,10 +536,17 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis } } } + List files = obtainFiles(study, clinicalAnalysis, userId); if (clinicalAnalysis.getFiles() != null && !clinicalAnalysis.getFiles().isEmpty()) { - validateFiles(study, clinicalAnalysis, userId); + Set fileIds = clinicalAnalysis.getFiles().stream().map(File::getId).collect(Collectors.toSet()); + String notFoundFiles = files.stream().map(File::getId).filter(f -> !fileIds.contains(f)).collect(Collectors.joining(", ")); + if (StringUtils.isNotEmpty(notFoundFiles)) { + throw new CatalogException("Files '" + notFoundFiles + "' not found or do not belong to any participant."); + } + List filteredFiles = files.stream().filter(f -> fileIds.contains(f.getId())).collect(Collectors.toList()); + clinicalAnalysis.setFiles(filteredFiles); } else { - obtainFiles(study, clinicalAnalysis, userId); + clinicalAnalysis.setFiles(files); } clinicalAnalysis.setCreationDate(ParamUtils.checkDateOrGetCurrentDate(clinicalAnalysis.getCreationDate(), @@ -593,6 +625,43 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis } } + private void validateAndInitReport(Study study, ClinicalReport report, String userId) throws CatalogException { + if (report == null) { + return; + } + if (StringUtils.isNotEmpty(report.getTitle()) || StringUtils.isNotEmpty(report.getOverview())) { + report.setDate(ParamUtils.checkDateOrGetCurrentDate(report.getDate(), "report.date")); + } + if (report.getComments() != null) { + for (ClinicalComment comment : report.getComments()) { + comment.setDate(TimeUtils.getTime()); + comment.setAuthor(userId); + } + } + if (CollectionUtils.isNotEmpty(report.getFiles())) { + List files = obtainFiles(study, userId, report.getFiles()); + report.setFiles(files); + } + if (CollectionUtils.isNotEmpty(report.getSupportingEvidences())) { + List files = obtainFiles(study, userId, report.getSupportingEvidences()); + report.setSupportingEvidences(files); + } + } + + private void fillResponsible(ClinicalResponsible responsible) throws CatalogException { + if (responsible == null) { + return; + } + QueryOptions userInclude = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.ID.key(), + UserDBAdaptor.QueryParams.NAME.key(), UserDBAdaptor.QueryParams.EMAIL.key())); + OpenCGAResult result = userDBAdaptor.get(responsible.getId(), userInclude); + if (result.getNumResults() == 0) { + throw new CatalogException("Responsible user '" + responsible.getId() + "' not found."); + } + responsible.setName(ParamUtils.defaultString(responsible.getName(), result.first().getName())); + responsible.setEmail(ParamUtils.defaultString(responsible.getEmail(), result.first().getEmail())); + } + private void validateStatusParameter(ClinicalAnalysis clinicalAnalysis, ClinicalAnalysisStudyConfiguration clinicalConfiguration) throws CatalogException { // Status @@ -758,7 +827,7 @@ private void validateDisorder(ClinicalAnalysis clinicalAnalysis) throws CatalogE } } - private void obtainFiles(Study study, ClinicalAnalysis clinicalAnalysis, String userId) throws CatalogException { + private List obtainFiles(Study study, ClinicalAnalysis clinicalAnalysis, String userId) throws CatalogException { Set sampleSet = new HashSet<>(); if (clinicalAnalysis.getFamily() != null && clinicalAnalysis.getFamily().getMembers() != null) { for (Individual member : clinicalAnalysis.getFamily().getMembers()) { @@ -783,8 +852,18 @@ private void obtainFiles(Study study, ClinicalAnalysis clinicalAnalysis, String .append(FileDBAdaptor.QueryParams.SAMPLE_IDS.key(), new ArrayList<>(sampleSet)) .append(FileDBAdaptor.QueryParams.BIOFORMAT.key(), Arrays.asList(File.Bioformat.ALIGNMENT, File.Bioformat.VARIANT)); OpenCGAResult fileResults = fileDBAdaptor.get(study.getUid(), query, FileManager.INCLUDE_FILE_URI_PATH, userId); - clinicalAnalysis.setFiles(fileResults.getResults()); + return fileResults.getResults(); } + return Collections.emptyList(); + } + + private List obtainFiles(Study study, String userId, List files) throws CatalogException { + Query query = new Query(FileDBAdaptor.QueryParams.ID.key(), files.stream().map(File::getId).collect(Collectors.toSet())); + List results = fileDBAdaptor.get(study.getUid(), query, FileManager.INCLUDE_FILE_URI_PATH, userId).getResults(); + if (results.size() < files.size()) { + throw new CatalogException("Some of the files were not found"); + } + return results; } private void validateFiles(Study study, ClinicalAnalysis clinicalAnalysis, String userId) throws CatalogException { @@ -855,6 +934,103 @@ private void validateFiles(Study study, ClinicalAnalysis clinicalAnalysis, Strin // } } +// private void obtainFiles(Study study, ClinicalAnalysis clinicalAnalysis, String userId) throws CatalogException { +// Set sampleSet = new HashSet<>(); +// if (clinicalAnalysis.getFamily() != null && clinicalAnalysis.getFamily().getMembers() != null) { +// for (Individual member : clinicalAnalysis.getFamily().getMembers()) { +// if (member.getSamples() != null) { +// for (Sample sample : member.getSamples()) { +// sampleSet.add(sample.getId()); +// } +// } +// } +// } else if (clinicalAnalysis.getProband() != null && clinicalAnalysis.getProband().getSamples() != null) { +// for (Sample sample : clinicalAnalysis.getProband().getSamples()) { +// sampleSet.add(sample.getId()); +// } +// } +// +// if (clinicalAnalysis.getFiles() != null && !clinicalAnalysis.getFiles().isEmpty()) { +// throw new CatalogException("Cannot obtain map of files if this is already provided"); +// } +// +// if (!sampleSet.isEmpty()) { +// Query query = new Query() +// .append(FileDBAdaptor.QueryParams.SAMPLE_IDS.key(), new ArrayList<>(sampleSet)) +// .append(FileDBAdaptor.QueryParams.BIOFORMAT.key(), Arrays.asList(File.Bioformat.ALIGNMENT, File.Bioformat.VARIANT)); +// OpenCGAResult fileResults = fileDBAdaptor.get(study.getUid(), query, FileManager.INCLUDE_FILE_URI_PATH, userId); +// clinicalAnalysis.setFiles(fileResults.getResults()); +// } +// } + +// private void validateFiles(Study study, ClinicalAnalysis clinicalAnalysis, String userId) throws CatalogException { +// Map sampleMap = new HashMap<>(); +// if (clinicalAnalysis.getFamily() != null && clinicalAnalysis.getFamily().getMembers() != null) { +// for (Individual member : clinicalAnalysis.getFamily().getMembers()) { +// if (member.getSamples() != null) { +// for (Sample sample : member.getSamples()) { +// sampleMap.put(sample.getId(), sample.getUid()); +// } +// } +// } +// } else if (clinicalAnalysis.getProband() != null && clinicalAnalysis.getProband().getSamples() != null) { +// for (Sample sample : clinicalAnalysis.getProband().getSamples()) { +// sampleMap.put(sample.getId(), sample.getUid()); +// } +// } +// +// if (clinicalAnalysis.getFiles() == null || clinicalAnalysis.getFiles().isEmpty()) { +// throw new CatalogException("Found empty map of files"); +// } +// +// // Look for all the samples associated to the files +// Query query = new Query(FileDBAdaptor.QueryParams.ID.key(), +// clinicalAnalysis.getFiles().stream().map(File::getId).collect(Collectors.toList())); +// QueryOptions fileOptions = keepFieldInQueryOptions(FileManager.INCLUDE_FILE_URI_PATH, FileDBAdaptor.QueryParams.SAMPLE_IDS.key()); +// OpenCGAResult fileResults = fileDBAdaptor.get(study.getUid(), query, fileOptions, userId); +// +// if (fileResults.getNumResults() != clinicalAnalysis.getFiles().size()) { +// Set fileIds = clinicalAnalysis.getFiles().stream().map(File::getId).collect(Collectors.toSet()); +// String notFoundFiles = fileResults.getResults().stream().map(File::getId).filter(f -> !fileIds.contains(f)) +// .collect(Collectors.joining(", ")); +// throw new CatalogException("Files '" + notFoundFiles + "' not found"); +// } +// +// // Complete file information +// clinicalAnalysis.setFiles(fileResults.getResults()); +// +// // Validate the file ids passed are related to the samples +// for (File file : clinicalAnalysis.getFiles()) { +// if (CollectionUtils.isNotEmpty(file.getSampleIds())) { +// boolean found = false; +// for (String sampleId : file.getSampleIds()) { +// if (sampleMap.containsKey(sampleId)) { +// found = true; +// break; +// } +// } +// if (!found) { +// throw new CatalogException("Clinical analysis file (" + file.getId() + ") contains sample ids not related to any " +// + "member/proband"); +// } +// } +// } +// +//// for (File caFile : clinicalAnalysis.getFiles()) { +//// List fileIds = caFile.getFiles().stream().map(File::getId).collect(Collectors.toList()); +//// InternalGetDataResult fileResult = catalogManager.getFileManager().internalGet(study.getUid(), fileIds, new Query(), +//// new QueryOptions(), userId, false); +//// // Validate sample id belongs to files +//// for (File file : fileResult.getResults()) { +//// if (!file.getSamples().stream().map(Sample::getUid).collect(Collectors.toSet()) +//// .contains(sampleMap.get(caFile.getSampleId()))) { +//// throw new CatalogException("Associated file '" + file.getPath() + "' seems not to be related to sample '" +//// + caFile.getSampleId() + "'."); +//// } +//// } +//// } +// } + private Family getFullValidatedFamily(Family family, Study study, String sessionId) throws CatalogException { if (family == null) { return null; @@ -1175,16 +1351,30 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } catch (IOException e) { throw new CatalogException("Could not clone ClinicalAnalysisUpdateParams object"); } + if (updateParamsClone == null) { + throw new CatalogException("Empty update parameters. Nothing to update."); + } + + validateAndInitReport(study, updateParamsClone.getReport(), userId); + + // ---------- Check and init responsible fields + ClinicalResponsible responsible = updateParamsClone.getResponsible(); + if (responsible != null && StringUtils.isNotEmpty(responsible.getId())) { + fillResponsible(responsible); + } + + // ---------- Check and init request fields + ClinicalRequest request = updateParamsClone.getRequest(); + if (request != null && StringUtils.isNotEmpty(request.getId())) { + request.setDate(ParamUtils.checkDateOrGetCurrentDate(request.getDate(), "request.date")); + fillResponsible(request.getResponsible()); + } ObjectMap parameters; - if (updateParamsClone != null) { - try { - parameters = updateParamsClone.getUpdateMap(); - } catch (JsonProcessingException e) { - throw new CatalogException("Could not parse ClinicalUpdateParams object: " + e.getMessage(), e); - } - } else { - throw new CatalogException("Empty update parameters. Nothing to update."); + try { + parameters = updateParamsClone.getUpdateMap(); + } catch (JsonProcessingException e) { + throw new CatalogException("Could not parse ClinicalUpdateParams object: " + e.getMessage(), e); } ParamUtils.checkUpdateParametersMap(parameters); @@ -1269,22 +1459,44 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.COMMENTS.key(), comments); } - if (parameters.get(InterpretationDBAdaptor.QueryParams.ANALYST.key()) != null) { - if (StringUtils.isNotEmpty(updateParamsClone.getAnalyst().getId())) { - QueryOptions userOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.ID.key(), - UserDBAdaptor.QueryParams.NAME.key(), UserDBAdaptor.QueryParams.EMAIL.key())); - // Check user exists - OpenCGAResult userResult = userDBAdaptor.get(updateParamsClone.getAnalyst().getId(), userOptions); - if (userResult.getNumResults() == 0) { - throw new CatalogException("User '" + updateParamsClone.getAnalyst().getId() + "' not found"); - } + if (parameters.get(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key()) != null) { + ParamUtils.BasicUpdateAction action = ParamUtils.BasicUpdateAction.from(actionMap, + ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), ParamUtils.BasicUpdateAction.ADD); + List analystList = updateParamsClone.getAnalysts(); + switch (action) { + case ADD: + case SET: + QueryOptions userOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.ID.key(), + UserDBAdaptor.QueryParams.NAME.key(), UserDBAdaptor.QueryParams.EMAIL.key())); - parameters.put(InterpretationDBAdaptor.QueryParams.ANALYST.key(), new ClinicalAnalyst(userResult.first().getId(), - userResult.first().getName(), userResult.first().getEmail(), userId, TimeUtils.getTime())); - } else { - // Remove assignee - parameters.put(InterpretationDBAdaptor.QueryParams.ANALYST.key(), new ClinicalAnalyst("", "", "", userId, - TimeUtils.getTime())); + Set analystIdList = new HashSet<>(); + for (ClinicalAnalystParam clinicalAnalystParam : analystList) { + analystIdList.add(clinicalAnalystParam.getId()); + } + + List clinicalAnalystList = new ArrayList<>(analystIdList.size()); + // Check analysts exist + if (!analystIdList.isEmpty()) { + Query query = new Query(UserDBAdaptor.QueryParams.ID.key(), analystIdList); + OpenCGAResult userResult = userDBAdaptor.get(query, userOptions); + if (userResult.getNumResults() < analystIdList.size()) { + throw new CatalogException("Some analysts were not found."); + } + for (User user : userResult.getResults()) { + clinicalAnalystList.add(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, + TimeUtils.getTime())); + } + } + parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), clinicalAnalystList); + break; + case REMOVE: + // Directly add those analysts. No need to check + List analysts = analystList.stream().map(ClinicalAnalystParam::toClinicalAnalyst) + .collect(Collectors.toList()); + parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), analysts); + break; + default: + throw new IllegalStateException("Unknown analysts action " + action); } } if (parameters.get(ClinicalAnalysisDBAdaptor.QueryParams.QUALITY_CONTROL.key()) != null) { @@ -1298,11 +1510,19 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.QUALITY_CONTROL.key(), qualityControl); } + if (updateParamsClone.getReport() != null && CollectionUtils.isNotEmpty(updateParamsClone.getReport().getFiles())) { + parameters.putNested(ClinicalAnalysisDBAdaptor.QueryParams.REPORT_FILES.key(), updateParamsClone.getReport().getFiles(), false); + } + if (updateParamsClone.getReport() != null && CollectionUtils.isNotEmpty(updateParamsClone.getReport().getSupportingEvidences())) { + parameters.putNested(ClinicalAnalysisDBAdaptor.QueryParams.REPORT_SUPPORTING_EVIDENCES.key(), + updateParamsClone.getReport().getSupportingEvidences(), false); + } if (updateParamsClone.getFiles() != null && !updateParamsClone.getFiles().isEmpty()) { clinicalAnalysis.setFiles(updateParamsClone.getFiles().stream().map(FileReferenceParam::toFile).collect(Collectors.toList())); // Validate files validateFiles(study, clinicalAnalysis, userId); + parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), clinicalAnalysis.getFiles()); } if (CollectionUtils.isNotEmpty(updateParamsClone.getPanels()) && updateParamsClone.getPanelLock() != null @@ -1363,10 +1583,6 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } } - if (updateParamsClone.getFiles() != null && !updateParamsClone.getFiles().isEmpty()) { - parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), clinicalAnalysis.getFiles()); - } - if (CollectionUtils.isNotEmpty(updateParamsClone.getPanels())) { // Get panels Query query = new Query(PanelDBAdaptor.QueryParams.ID.key(), @@ -1581,7 +1797,7 @@ protected void fixQueryObject(Study study, Query query, String user, String toke AnnotationUtils.fixQueryAnnotationSearch(study, query); changeQueryId(query, ParamConstants.CLINICAL_DISORDER_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.DISORDER.key()); - changeQueryId(query, ParamConstants.CLINICAL_ANALYST_ID_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.ANALYST_ID.key()); + changeQueryId(query, ParamConstants.CLINICAL_ANALYST_ID_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS_ID.key()); changeQueryId(query, ParamConstants.CLINICAL_PRIORITY_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.PRIORITY_ID.key()); changeQueryId(query, ParamConstants.CLINICAL_FLAGS_PARAM, ClinicalAnalysisDBAdaptor.QueryParams.FLAGS_ID.key()); changeQueryId(query, ParamConstants.CLINICAL_QUALITY_CONTROL_SUMMARY_PARAM, diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileUtils.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileUtils.java index 46423ef9a2f..02f5cae855b 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileUtils.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileUtils.java @@ -261,6 +261,7 @@ public static File.Bioformat detectBioformat(URI uri, File.Format format, File.C case BINARY: case UNKNOWN: case XML: + case PDF: return File.Bioformat.NONE; default: break; @@ -398,6 +399,8 @@ public static File.Format detectFormat(URI uri) { case "jpeg": case "tif": return File.Format.IMAGE; + case "pdf": + return File.Format.PDF; default: break; } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java index 2f78a376527..400c85e23af 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java @@ -24,10 +24,7 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.ExpectedException; -import org.opencb.biodata.models.clinical.ClinicalAudit; -import org.opencb.biodata.models.clinical.ClinicalComment; -import org.opencb.biodata.models.clinical.ClinicalDiscussion; -import org.opencb.biodata.models.clinical.Disorder; +import org.opencb.biodata.models.clinical.*; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantEvidence; import org.opencb.biodata.models.clinical.interpretation.InterpretationMethod; @@ -59,10 +56,7 @@ import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.family.FamilyPermissions; import org.opencb.opencga.core.models.family.FamilyUpdateParams; -import org.opencb.opencga.core.models.file.File; -import org.opencb.opencga.core.models.file.FileLinkParams; -import org.opencb.opencga.core.models.file.FileReferenceParam; -import org.opencb.opencga.core.models.file.FileUpdateParams; +import org.opencb.opencga.core.models.file.*; import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.models.individual.IndividualPermissions; import org.opencb.opencga.core.models.panel.Panel; @@ -76,6 +70,7 @@ import org.opencb.opencga.core.models.study.configuration.ClinicalConsent; import org.opencb.opencga.core.models.study.configuration.*; import org.opencb.opencga.core.models.user.Account; +import org.opencb.opencga.core.models.user.User; import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; @@ -292,6 +287,196 @@ public void createMultipleCasesSameFamily() throws CatalogException { } } + @Test + public void updateClinicalAnalystsTest() throws CatalogException { + ClinicalAnalysis case1 = createDummyEnvironment(true, true).first(); + + catalogManager.getUserManager().create(new User().setId("u1").setName("u1").setAccount(new Account()), TestParamConstants.PASSWORD, opencgaToken); + catalogManager.getUserManager().create(new User().setId("u2").setName("u2").setAccount(new Account()), TestParamConstants.PASSWORD, opencgaToken); + + // Add analysts + OpenCGAResult result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setAnalysts( + Arrays.asList(new ClinicalAnalystParam("u1"), new ClinicalAnalystParam("u2"))), INCLUDE_RESULT, sessionIdUser); + assertEquals(3, result.first().getAnalysts().size()); + assertTrue(result.first().getAnalysts().stream().map(ClinicalAnalyst::getId).collect(Collectors.toSet()).containsAll(Arrays.asList("u1", "u2"))); + + // Check analyst params + for (ClinicalAnalyst analyst : result.first().getAnalysts()) { + assertNotNull(analyst.getId()); + assertNotNull(analyst.getName()); + assertNotNull(analyst.getDate()); + assertEquals("user", analyst.getAssignedBy()); + } + + // Remove analysts + Map actionMap = new HashMap<>(); + actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), ParamUtils.BasicUpdateAction.REMOVE); + QueryOptions options = new QueryOptions() + .append(Constants.ACTIONS, actionMap) + .append(ParamConstants.INCLUDE_RESULT_PARAM, true); + result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setAnalysts( + Arrays.asList(new ClinicalAnalystParam("u1"), new ClinicalAnalystParam("u2"))), options, sessionIdUser); + assertEquals(1, result.first().getAnalysts().size()); + assertTrue(result.first().getAnalysts().stream().map(ClinicalAnalyst::getId).noneMatch(x -> Arrays.asList("u1", "u2").contains(x))); + + // Set analysts + actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), ParamUtils.BasicUpdateAction.SET); + options = new QueryOptions() + .append(Constants.ACTIONS, actionMap) + .append(ParamConstants.INCLUDE_RESULT_PARAM, true); + result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setAnalysts( + Arrays.asList(new ClinicalAnalystParam("u1"), new ClinicalAnalystParam("u2"))), options, sessionIdUser); + assertEquals(2, result.first().getAnalysts().size()); + assertTrue(result.first().getAnalysts().stream().map(ClinicalAnalyst::getId).allMatch(x -> Arrays.asList("u1", "u2").contains(x))); + + thrown.expect(CatalogException.class); + thrown.expectMessage("not found"); + catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setAnalysts( + Arrays.asList(new ClinicalAnalystParam("unknown"), new ClinicalAnalystParam("u2"))), options, sessionIdUser); + } + + @Test + public void updateClinicalAnalysisRequest() throws CatalogException { + ClinicalAnalysis case1 = createDummyEnvironment(true, true).first(); + assertTrue(StringUtils.isEmpty(case1.getRequest().getId())); + + catalogManager.getUserManager().create(new User().setId("u1").setName("u1").setEmail("mail@mail.com").setAccount(new Account()), + TestParamConstants.PASSWORD, opencgaToken); + + ClinicalRequest request = new ClinicalRequest("requestId", "bla", null, new ClinicalResponsible().setId("u1"), new HashMap<>()); + + // Change request + OpenCGAResult result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setRequest(request), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getRequest()); + assertTrue(StringUtils.isNotEmpty(result.first().getRequest().getDate())); + assertEquals("requestId", result.first().getRequest().getId()); + assertEquals("u1", result.first().getRequest().getResponsible().getId()); + assertEquals("u1", result.first().getRequest().getResponsible().getName()); + assertEquals("mail@mail.com", result.first().getRequest().getResponsible().getEmail()); + + // Remove request responsible + request.setResponsible(null); + result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setRequest(request), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getRequest()); + assertTrue(StringUtils.isNotEmpty(result.first().getRequest().getDate())); + assertEquals("requestId", result.first().getRequest().getId()); + assertNull(result.first().getRequest().getResponsible()); + + // Add non existing request responsible user id + request.setResponsible(new ClinicalResponsible().setId("unknown")); + thrown.expect(CatalogException.class); + thrown.expectMessage("not found"); + catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setRequest(request), INCLUDE_RESULT, sessionIdUser); + } + + @Test + public void updateClinicalAnalysisResponsible() throws CatalogException { + ClinicalAnalysis case1 = createDummyEnvironment(true, true).first(); + assertEquals("user", case1.getResponsible().getId()); + + catalogManager.getUserManager().create(new User().setId("u1").setName("u1").setEmail("mail@mail.com").setAccount(new Account()), + TestParamConstants.PASSWORD, opencgaToken); + + ClinicalResponsible responsible = new ClinicalResponsible().setId("u1"); + + // Change responsible + OpenCGAResult result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setResponsible(responsible), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getResponsible()); + assertEquals("u1", result.first().getResponsible().getId()); + assertEquals("u1", result.first().getResponsible().getName()); + assertEquals("mail@mail.com", result.first().getResponsible().getEmail()); + + // Change to non existing request responsible user id + responsible.setId("unknown"); + thrown.expect(CatalogException.class); + thrown.expectMessage("not found"); + catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setResponsible(responsible), INCLUDE_RESULT, sessionIdUser); + } + + @Test + public void updateClinicalAnalysisReport() throws CatalogException { + ClinicalAnalysis case1 = createDummyEnvironment(true, true).first(); + assertNull(case1.getReport()); + + ClinicalReport report = new ClinicalReport() + .setTitle("my report") + .setComments(Arrays.asList(new ClinicalComment("author", "msg", null, null), new ClinicalComment("author2", "msg", null, null))); + + // Change report + OpenCGAResult result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getReport()); + assertEquals(report.getTitle(), result.first().getReport().getTitle()); + assertEquals(2, result.first().getReport().getComments().size()); + for (ClinicalComment comment : result.first().getReport().getComments()) { + assertEquals("user", comment.getAuthor()); + assertTrue(StringUtils.isNotEmpty(comment.getDate())); + } + + // Add files + catalogManager.getFileManager().create(STUDY, + new FileCreateParams() + .setContent(RandomStringUtils.randomAlphanumeric(1000)) + .setPath("/data/file1.txt") + .setType(File.Type.FILE), + true, sessionIdUser); + catalogManager.getFileManager().create(STUDY, + new FileCreateParams() + .setContent(RandomStringUtils.randomAlphanumeric(1000)) + .setPath("/data/file2.txt") + .setType(File.Type.FILE), + true, sessionIdUser); + + List fileList = Arrays.asList(new File().setId("data:file1.txt"), new File().setId("data:file2.txt")); + report.setSupportingEvidences(fileList); + result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getReport()); + assertEquals(report.getTitle(), result.first().getReport().getTitle()); + assertEquals(2, result.first().getReport().getComments().size()); + for (ClinicalComment comment : result.first().getReport().getComments()) { + assertEquals("user", comment.getAuthor()); + assertTrue(StringUtils.isNotEmpty(comment.getDate())); + } + assertEquals(2, result.first().getReport().getSupportingEvidences().size()); + assertEquals("data/file1.txt", result.first().getReport().getSupportingEvidences().get(0).getPath()); + assertEquals("data/file2.txt", result.first().getReport().getSupportingEvidences().get(1).getPath()); + assertNull(result.first().getReport().getFiles()); + + report.setFiles(fileList); + result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getReport()); + assertEquals(report.getTitle(), result.first().getReport().getTitle()); + assertEquals(2, result.first().getReport().getComments().size()); + for (ClinicalComment comment : result.first().getReport().getComments()) { + assertEquals("user", comment.getAuthor()); + assertTrue(StringUtils.isNotEmpty(comment.getDate())); + } + assertEquals(2, result.first().getReport().getSupportingEvidences().size()); + assertEquals("data/file1.txt", result.first().getReport().getSupportingEvidences().get(0).getPath()); + assertEquals("data/file2.txt", result.first().getReport().getSupportingEvidences().get(1).getPath()); + assertEquals(2, result.first().getReport().getFiles().size()); + assertEquals("data/file1.txt", result.first().getReport().getFiles().get(0).getPath()); + assertEquals("data/file2.txt", result.first().getReport().getFiles().get(1).getPath()); + + // Provide non existing file + report.setFiles(Collections.singletonList(new File().setId("nonexisting.txt"))); + thrown.expect(CatalogException.class); + thrown.expectMessage("not found"); + catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); + } + @Test public void createAndUpdateClinicalAnalysisWithQualityControl() throws CatalogException, InterruptedException { Individual individual = new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2"))); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java index 4cccaaae80b..36fce194f36 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java @@ -187,8 +187,10 @@ public class FieldConstants { public static final String CLINICAL_ANALYSIS_INTERPRETATION = "Interpretation of the clinical analysis."; public static final String CLINICAL_ANALYSIS_SECONDARY_INTERPRETATION = "List of Interpretations containing the second and consecutive."; public static final String CLINICAL_ANALYSIS_CONSENT = "Object contains consent annotations of clinical analysis."; - public static final String CLINICAL_ANALYSIS_ANALYST = "The analyst of the clinical analysis."; + public static final String CLINICAL_ANALYSIS_ANALYST = "The analysts of the clinical analysis."; public static final String CLINICAL_ANALYSIS_REPORT = "Report of the clinical analysis."; + public static final String CLINICAL_ANALYSIS_REQUEST = "Request of the clinical analysis."; + public static final String CLINICAL_ANALYSIS_RESPONSIBLE = "Responsible of the clinical analysis."; public static final String CLINICAL_ANALYSIS_PRIORITY = "Priority of the clinical analysis."; public static final String CLINICAL_ANALYSIS_FLAGS = "List of flags for the clinical analysis."; public static final String CLINICAL_ANALYSIS_DUE_DATE_DESCRIPTION = "Due date of the clinical analysis."; @@ -212,6 +214,9 @@ public class FieldConstants { public static final String CLINICAL_REPORT_SIGNED_BY = "Indicates who has signed the report."; public static final String CLINICAL_REPORT_SIGNATURE = "Report signature."; public static final String CLINICAL_REPORT_DATE = "Report date."; + public static final String CLINICAL_REPORT_COMMENTS = "Report comments."; + public static final String CLINICAL_REPORT_SUPPORTING_EVIDENCES = "Report supporting evidences."; + public static final String CLINICAL_REPORT_FILES = "Report files."; //ClinicalPriorityAnnotation public static final String CLINICAL_PRIORITY_ANNOTATION_RANK_DESCRIPTION = "ClinicalPriorityAnnotation rank."; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java index 55ffc934572..1c9ffd04027 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java @@ -117,14 +117,22 @@ public class ClinicalAnalysis extends Annotable { description = FieldConstants.CLINICAL_ANALYSIS_CONSENT) private ClinicalConsentAnnotation consent; - @DataField(id = "analyst", indexed = true, + @DataField(id = "analysts", indexed = true, description = FieldConstants.CLINICAL_ANALYSIS_ANALYST) - private ClinicalAnalyst analyst; + private List analysts; @DataField(id = "report", indexed = true, description = FieldConstants.CLINICAL_ANALYSIS_REPORT) private ClinicalReport report; + @DataField(id = "request", since = "2.12.0", + description = FieldConstants.CLINICAL_ANALYSIS_REPORT) + private ClinicalRequest request; + + @DataField(id = "responsible", since = "2.12.0", + description = FieldConstants.CLINICAL_ANALYSIS_RESPONSIBLE) + private ClinicalResponsible responsible; + @DataField(id = "priority", indexed = true, description = FieldConstants.CLINICAL_ANALYSIS_PRIORITY) private ClinicalPriorityAnnotation priority; @@ -209,11 +217,12 @@ public ClinicalAnalysis() { public ClinicalAnalysis(String id, String description, Type type, Disorder disorder, List files, Individual proband, Family family, List panels, boolean panelLock, boolean locked, Interpretation interpretation, - List secondaryInterpretations, ClinicalConsentAnnotation consent, ClinicalAnalyst analyst, - ClinicalReport report, ClinicalPriorityAnnotation priority, List flags, String creationDate, - String modificationDate, String dueDate, int release, List comments, - ClinicalAnalysisQualityControl qualityControl, List audit, ClinicalAnalysisInternal internal, - List annotationSets, Map attributes, Status status) { + List secondaryInterpretations, ClinicalConsentAnnotation consent, + List analysts, ClinicalReport report, ClinicalRequest request, ClinicalResponsible responsible, + ClinicalPriorityAnnotation priority, List flags, String creationDate, String modificationDate, + String dueDate, int release, List comments, ClinicalAnalysisQualityControl qualityControl, + List audit, ClinicalAnalysisInternal internal, List annotationSets, + Map attributes, Status status) { this.id = id; this.description = description; this.type = type; @@ -227,8 +236,10 @@ public ClinicalAnalysis(String id, String description, Type type, Disorder disor this.interpretation = interpretation; this.secondaryInterpretations = secondaryInterpretations; this.consent = consent; - this.analyst = analyst; + this.analysts = analysts; this.report = report; + this.request = request; + this.responsible = responsible; this.priority = priority; this.flags = flags; this.creationDate = creationDate; @@ -261,8 +272,10 @@ public String toString() { sb.append(", interpretation=").append(interpretation); sb.append(", secondaryInterpretations=").append(secondaryInterpretations); sb.append(", consent=").append(consent); - sb.append(", analyst=").append(analyst); + sb.append(", analysts=").append(analysts); sb.append(", report=").append(report); + sb.append(", request=").append(request); + sb.append(", responsible=").append(responsible); sb.append(", priority=").append(priority); sb.append(", flags=").append(flags); sb.append(", creationDate='").append(creationDate).append('\''); @@ -273,7 +286,6 @@ public String toString() { sb.append(", comments=").append(comments); sb.append(", audit=").append(audit); sb.append(", internal=").append(internal); - sb.append(", annotationSets=").append(annotationSets); sb.append(", attributes=").append(attributes); sb.append(", status=").append(status); sb.append('}'); @@ -409,12 +421,12 @@ public ClinicalAnalysis setConsent(ClinicalConsentAnnotation consent) { return this; } - public ClinicalAnalyst getAnalyst() { - return analyst; + public List getAnalysts() { + return analysts; } - public ClinicalAnalysis setAnalyst(ClinicalAnalyst analyst) { - this.analyst = analyst; + public ClinicalAnalysis setAnalysts(List analysts) { + this.analysts = analysts; return this; } @@ -427,6 +439,24 @@ public ClinicalAnalysis setReport(ClinicalReport report) { return this; } + public ClinicalRequest getRequest() { + return request; + } + + public ClinicalAnalysis setRequest(ClinicalRequest request) { + this.request = request; + return this; + } + + public ClinicalResponsible getResponsible() { + return responsible; + } + + public ClinicalAnalysis setResponsible(ClinicalResponsible responsible) { + this.responsible = responsible; + return this; + } + public ClinicalPriorityAnnotation getPriority() { return priority; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java index 9d91754d5be..301db1b3b54 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java @@ -48,8 +48,10 @@ public class ClinicalAnalysisCreateParams { private List panels; private Boolean panelLock; - private ClinicalAnalystParam analyst; + private List analysts; private ClinicalReport report; + private ClinicalRequest request; + private ClinicalResponsible responsible; private InterpretationCreateParams interpretation; private ClinicalAnalysisQualityControlUpdateParam qualityControl; @@ -71,10 +73,10 @@ public ClinicalAnalysisCreateParams() { public ClinicalAnalysisCreateParams(String id, String description, ClinicalAnalysis.Type type, DisorderReferenceParam disorder, List files, ProbandParam proband, FamilyParam family, - List panels, Boolean panelLock, ClinicalAnalystParam analyst, - ClinicalReport report, InterpretationCreateParams interpretation, - ClinicalConsentAnnotationParam consent, String creationDate, String modificationDate, - String dueDate, List comments, + List panels, Boolean panelLock, List analysts, + ClinicalReport report, ClinicalRequest request, ClinicalResponsible responsible, + InterpretationCreateParams interpretation, ClinicalConsentAnnotationParam consent, + String creationDate, String modificationDate, String dueDate, List comments, ClinicalAnalysisQualityControlUpdateParam qualityControl, PriorityParam priority, List flags, List annotationSets, Map attributes, StatusParam status) { @@ -88,7 +90,9 @@ public ClinicalAnalysisCreateParams(String id, String description, ClinicalAnaly this.panels = panels; this.panelLock = panelLock; this.report = report; - this.analyst = analyst; + this.request = request; + this.responsible = responsible; + this.analysts = analysts; this.interpretation = interpretation; this.consent = consent; this.creationDate = creationDate; @@ -115,8 +119,10 @@ public static ClinicalAnalysisCreateParams of(ClinicalAnalysis clinicalAnalysis) ? clinicalAnalysis.getPanels().stream().map(p -> new PanelReferenceParam(p.getId())).collect(Collectors.toList()) : null, clinicalAnalysis.isPanelLock(), - clinicalAnalysis.getAnalyst() != null ? ClinicalAnalystParam.of(clinicalAnalysis.getAnalyst()) : null, - clinicalAnalysis.getReport(), + clinicalAnalysis.getAnalysts() != null + ? clinicalAnalysis.getAnalysts().stream().map(ClinicalAnalystParam::of).collect(Collectors.toList()) + : null, + clinicalAnalysis.getReport(), clinicalAnalysis.getRequest(), clinicalAnalysis.getResponsible(), clinicalAnalysis.getInterpretation() != null ? InterpretationCreateParams.of(clinicalAnalysis.getInterpretation()) : null, @@ -148,8 +154,10 @@ public String toString() { sb.append(", family=").append(family); sb.append(", panels=").append(panels); sb.append(", panelLock=").append(panelLock); - sb.append(", analyst=").append(analyst); + sb.append(", analysts=").append(analysts); sb.append(", report=").append(report); + sb.append(", request=").append(request); + sb.append(", responsible=").append(responsible); sb.append(", interpretation=").append(interpretation); sb.append(", qualityControl=").append(qualityControl); sb.append(", consent=").append(consent); @@ -198,7 +206,13 @@ public ClinicalAnalysis toClinicalAnalysis() { Interpretation primaryInterpretation = interpretation != null ? interpretation.toClinicalInterpretation() : null; - String assignee = analyst != null ? analyst.getId() : ""; + List clinicalAnalystList = null; + if (analysts != null) { + clinicalAnalystList = new ArrayList<>(analysts.size()); + for (ClinicalAnalystParam analyst : analysts) { + clinicalAnalystList.add(new ClinicalAnalyst(analyst.getId(), analyst.getId(), "", "", TimeUtils.getTime())); + } + } List caFiles = new LinkedList<>(); if (files != null) { @@ -217,11 +231,11 @@ public ClinicalAnalysis toClinicalAnalysis() { return new ClinicalAnalysis(id, description, type, disorder != null ? disorder.toDisorder() : null, caFiles, individual, f, diseasePanelList, panelLock != null ? panelLock : false, false, primaryInterpretation, new LinkedList<>(), consent != null ? consent.toClinicalConsentAnnotation() : null, - new ClinicalAnalyst(assignee, assignee, "", "", TimeUtils.getTime()), report, - priority != null ? priority.toClinicalPriorityAnnotation() : null, + clinicalAnalystList, report, request, responsible, priority != null ? priority.toClinicalPriorityAnnotation() : null, flags != null ? flags.stream().map(FlagValueParam::toFlagAnnotation).collect(Collectors.toList()) : null, creationDate, modificationDate, dueDate, 1, - comments != null ? comments.stream().map(ClinicalCommentParam::toClinicalComment).collect(Collectors.toList()) : null, qualityControl != null ? qualityControl.toClinicalQualityControl() : null, new LinkedList<>(), null, + comments != null ? comments.stream().map(ClinicalCommentParam::toClinicalComment).collect(Collectors.toList()) : null, + qualityControl != null ? qualityControl.toClinicalQualityControl() : null, new LinkedList<>(), null, annotationSets, attributes, status != null ? status.toStatus() : null); } @@ -306,12 +320,12 @@ public ClinicalAnalysisCreateParams setPanelLock(Boolean panelLock) { return this; } - public ClinicalAnalystParam getAnalyst() { - return analyst; + public List getAnalysts() { + return analysts; } - public ClinicalAnalysisCreateParams setAnalyst(ClinicalAnalystParam analyst) { - this.analyst = analyst; + public ClinicalAnalysisCreateParams setAnalysts(List analysts) { + this.analysts = analysts; return this; } @@ -324,6 +338,24 @@ public ClinicalAnalysisCreateParams setReport(ClinicalReport report) { return this; } + public ClinicalRequest getRequest() { + return request; + } + + public ClinicalAnalysisCreateParams setRequest(ClinicalRequest request) { + this.request = request; + return this; + } + + public ClinicalResponsible getResponsible() { + return responsible; + } + + public ClinicalAnalysisCreateParams setResponsible(ClinicalResponsible responsible) { + this.responsible = responsible; + return this; + } + public InterpretationCreateParams getInterpretation() { return interpretation; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisQualityControlUpdateParam.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisQualityControlUpdateParam.java index d2634228641..98e957bc234 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisQualityControlUpdateParam.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisQualityControlUpdateParam.java @@ -49,6 +49,7 @@ public String toString() { final StringBuilder sb = new StringBuilder("ClinicalAnalysisQualityControlUpdateParam{"); sb.append("summary=").append(summary); sb.append(", comments=").append(comments); + sb.append(", files=").append(files); sb.append('}'); return sb.toString(); } @@ -61,4 +62,22 @@ public ClinicalAnalysisQualityControlUpdateParam setSummary(ClinicalAnalysisQual this.summary = summary; return this; } + + public List getComments() { + return comments; + } + + public ClinicalAnalysisQualityControlUpdateParam setComments(List comments) { + this.comments = comments; + return this; + } + + public List getFiles() { + return files; + } + + public ClinicalAnalysisQualityControlUpdateParam setFiles(List files) { + this.files = files; + return this; + } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java index 1cec037fb1c..b32711af25b 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java @@ -48,9 +48,10 @@ public class ClinicalAnalysisUpdateParams { private FamilyParam family; private Boolean locked; - private ClinicalAnalystParam analyst; + private List analysts; private ClinicalReport report; - + private ClinicalRequest request; + private ClinicalResponsible responsible; private ClinicalAnalysisQualityControlUpdateParam qualityControl; @@ -72,8 +73,9 @@ public ClinicalAnalysisUpdateParams() { public ClinicalAnalysisUpdateParams(String id, String description, ClinicalAnalysis.Type type, DisorderReferenceParam disorder, List files, ProbandParam proband, FamilyParam family, - List panels, Boolean panelLock, Boolean locked, ClinicalAnalystParam analyst, - ClinicalReport report, ClinicalAnalysisQualityControlUpdateParam qualityControl, + List panels, Boolean panelLock, Boolean locked, + List analysts, ClinicalReport report, ClinicalRequest request, + ClinicalResponsible responsible, ClinicalAnalysisQualityControlUpdateParam qualityControl, ClinicalConsentAnnotationParam consent, String creationDate, String modificationDate, String dueDate, List comments, PriorityParam priority, List flags, List annotationSets, Map attributes, @@ -88,8 +90,10 @@ public ClinicalAnalysisUpdateParams(String id, String description, ClinicalAnaly this.panels = panels; this.panelLock = panelLock; this.locked = locked; - this.analyst = analyst; + this.analysts = analysts; this.report = report; + this.request = request; + this.responsible = responsible; this.qualityControl = qualityControl; this.consent = consent; this.creationDate = creationDate; @@ -119,7 +123,10 @@ public ClinicalAnalysis toClinicalAnalysis() { locked != null && locked, null, null, consent != null ? consent.toClinicalConsentAnnotation() : null, - analyst != null ? analyst.toClinicalAnalyst() : null, report, + analysts != null + ? analysts.stream().map(ClinicalAnalystParam::toClinicalAnalyst).collect(Collectors.toList()) + : null, + report, request, responsible, priority != null ? priority.toClinicalPriorityAnnotation() : null, flags != null ? flags.stream().map(FlagValueParam::toFlagAnnotation).collect(Collectors.toList()) : null, creationDate, modificationDate, dueDate, 1, @@ -141,8 +148,10 @@ public String toString() { sb.append(", proband=").append(proband); sb.append(", family=").append(family); sb.append(", locked=").append(locked); - sb.append(", analyst=").append(analyst); + sb.append(", analysts=").append(analysts); sb.append(", report=").append(report); + sb.append(", request=").append(request); + sb.append(", responsible=").append(responsible); sb.append(", qualityControl=").append(qualityControl); sb.append(", consent=").append(consent); sb.append(", creationDate='").append(creationDate).append('\''); @@ -248,12 +257,12 @@ public ClinicalAnalysisUpdateParams setLocked(Boolean locked) { return this; } - public ClinicalAnalystParam getAnalyst() { - return analyst; + public List getAnalysts() { + return analysts; } - public ClinicalAnalysisUpdateParams setAnalyst(ClinicalAnalystParam analyst) { - this.analyst = analyst; + public ClinicalAnalysisUpdateParams setAnalysts(List analysts) { + this.analysts = analysts; return this; } @@ -365,4 +374,21 @@ public ClinicalAnalysisUpdateParams setReport(ClinicalReport report) { return this; } + public ClinicalRequest getRequest() { + return request; + } + + public ClinicalAnalysisUpdateParams setRequest(ClinicalRequest request) { + this.request = request; + return this; + } + + public ClinicalResponsible getResponsible() { + return responsible; + } + + public ClinicalAnalysisUpdateParams setResponsible(ClinicalResponsible responsible) { + this.responsible = responsible; + return this; + } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalReport.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalReport.java index 8303fdc7a1b..fca6fd5c418 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalReport.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalReport.java @@ -1,8 +1,12 @@ package org.opencb.opencga.core.models.clinical; +import org.opencb.biodata.models.clinical.ClinicalComment; import org.opencb.biodata.models.clinical.ClinicalDiscussion; import org.opencb.commons.annotations.DataField; import org.opencb.opencga.core.api.FieldConstants; +import org.opencb.opencga.core.models.file.File; + +import java.util.List; public class ClinicalReport { @@ -34,11 +38,20 @@ public class ClinicalReport { description = FieldConstants.CLINICAL_REPORT_DATE) private String date; + @DataField(id = "comments", description = FieldConstants.CLINICAL_REPORT_COMMENTS, since = "2.12.0") + private List comments; + + @DataField(id = "supportingEvidences", description = FieldConstants.CLINICAL_REPORT_SUPPORTING_EVIDENCES, since = "2.12.0") + private List supportingEvidences; + + @DataField(id = "files", description = FieldConstants.CLINICAL_REPORT_FILES, since = "2.12.0") + private List files; + public ClinicalReport() { } - public ClinicalReport(String title, String overview, ClinicalDiscussion discussion, String logo, String signedBy, - String signature, String date) { + public ClinicalReport(String title, String overview, ClinicalDiscussion discussion, String logo, String signedBy, String signature, + String date, List comments, List supportingEvidences, List files) { this.title = title; this.overview = overview; this.discussion = discussion; @@ -46,6 +59,9 @@ public ClinicalReport(String title, String overview, ClinicalDiscussion discussi this.signedBy = signedBy; this.signature = signature; this.date = date; + this.comments = comments; + this.supportingEvidences = supportingEvidences; + this.files = files; } @Override @@ -53,11 +69,14 @@ public String toString() { final StringBuilder sb = new StringBuilder("ClinicalReport{"); sb.append("title='").append(title).append('\''); sb.append(", overview='").append(overview).append('\''); - sb.append(", discussion='").append(discussion).append('\''); + sb.append(", discussion=").append(discussion); sb.append(", logo='").append(logo).append('\''); sb.append(", signedBy='").append(signedBy).append('\''); sb.append(", signature='").append(signature).append('\''); sb.append(", date='").append(date).append('\''); + sb.append(", comments=").append(comments); + sb.append(", supportingEvidences=").append(supportingEvidences); + sb.append(", files=").append(files); sb.append('}'); return sb.toString(); } @@ -124,4 +143,31 @@ public ClinicalReport setDate(String date) { this.date = date; return this; } + + public List getComments() { + return comments; + } + + public ClinicalReport setComments(List comments) { + this.comments = comments; + return this; + } + + public List getSupportingEvidences() { + return supportingEvidences; + } + + public ClinicalReport setSupportingEvidences(List supportingEvidences) { + this.supportingEvidences = supportingEvidences; + return this; + } + + public List getFiles() { + return files; + } + + public ClinicalReport setFiles(List files) { + this.files = files; + return this; + } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalRequest.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalRequest.java new file mode 100644 index 00000000000..38998b4bb0d --- /dev/null +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalRequest.java @@ -0,0 +1,80 @@ +package org.opencb.opencga.core.models.clinical; + +import java.util.Map; + +public class ClinicalRequest { + + private String id; + private String justification; + private String date; + private ClinicalResponsible responsible; + private Map attributes; + + public ClinicalRequest() { + } + + public ClinicalRequest(String id, String justification, String date, ClinicalResponsible responsible, Map attributes) { + this.id = id; + this.justification = justification; + this.date = date; + this.responsible = responsible; + this.attributes = attributes; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("ClinicalRequest{"); + sb.append("id='").append(id).append('\''); + sb.append(", justification='").append(justification).append('\''); + sb.append(", date='").append(date).append('\''); + sb.append(", responsible=").append(responsible); + sb.append(", attributes=").append(attributes); + sb.append('}'); + return sb.toString(); + } + + public String getId() { + return id; + } + + public ClinicalRequest setId(String id) { + this.id = id; + return this; + } + + public String getJustification() { + return justification; + } + + public ClinicalRequest setJustification(String justification) { + this.justification = justification; + return this; + } + + public String getDate() { + return date; + } + + public ClinicalRequest setDate(String date) { + this.date = date; + return this; + } + + public ClinicalResponsible getResponsible() { + return responsible; + } + + public ClinicalRequest setResponsible(ClinicalResponsible responsible) { + this.responsible = responsible; + return this; + } + + public Map getAttributes() { + return attributes; + } + + public ClinicalRequest setAttributes(Map attributes) { + this.attributes = attributes; + return this; + } +} diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalResponsible.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalResponsible.java new file mode 100644 index 00000000000..3e8967b552a --- /dev/null +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalResponsible.java @@ -0,0 +1,115 @@ +package org.opencb.opencga.core.models.clinical; + +public class ClinicalResponsible { + + private String id; + private String name; + private String email; + private String organization; + private String department; + private String address; + private String city; + private String postcode; + + public ClinicalResponsible() { + } + + public ClinicalResponsible(String id, String name, String email, String organization, String department, String address, String city, + String postcode) { + this.id = id; + this.name = name; + this.email = email; + this.organization = organization; + this.department = department; + this.address = address; + this.city = city; + this.postcode = postcode; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("ClinicalResponsible{"); + sb.append("id='").append(id).append('\''); + sb.append(", name='").append(name).append('\''); + sb.append(", email='").append(email).append('\''); + sb.append(", organization='").append(organization).append('\''); + sb.append(", department='").append(department).append('\''); + sb.append(", address='").append(address).append('\''); + sb.append(", city='").append(city).append('\''); + sb.append(", postcode='").append(postcode).append('\''); + sb.append('}'); + return sb.toString(); + } + + public String getId() { + return id; + } + + public ClinicalResponsible setId(String id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public ClinicalResponsible setName(String name) { + this.name = name; + return this; + } + + public String getEmail() { + return email; + } + + public ClinicalResponsible setEmail(String email) { + this.email = email; + return this; + } + + public String getOrganization() { + return organization; + } + + public ClinicalResponsible setOrganization(String organization) { + this.organization = organization; + return this; + } + + public String getDepartment() { + return department; + } + + public ClinicalResponsible setDepartment(String department) { + this.department = department; + return this; + } + + public String getAddress() { + return address; + } + + public ClinicalResponsible setAddress(String address) { + this.address = address; + return this; + } + + public String getCity() { + return city; + } + + public ClinicalResponsible setCity(String city) { + this.city = city; + return this; + } + + public String getPostcode() { + return postcode; + } + + public ClinicalResponsible setPostcode(String postcode) { + this.postcode = postcode; + return this; + } +} diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/File.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/File.java index 28a2a05980f..581cc6d6dd1 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/File.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/File.java @@ -562,6 +562,7 @@ public enum Format { TAB_SEPARATED_VALUES, COMMA_SEPARATED_VALUES, XML, PROTOCOL_BUFFER, JSON, AVRO, PARQUET, //Serialization formats + PDF, IMAGE, PLAIN, BINARY, diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java index 5c33dd532b2..fdaa1e84449 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java @@ -211,6 +211,8 @@ public Response update( @QueryParam("commentsAction") ParamUtils.AddRemoveReplaceAction commentsAction, @ApiParam(value = "Action to be performed if the array of flags is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") @QueryParam("flagsAction") ParamUtils.BasicUpdateAction flagsAction, + @ApiParam(value = "Action to be performed if the array of analysts is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") + @QueryParam("analystsAction") ParamUtils.BasicUpdateAction analystsAction, @ApiParam(value = "Action to be performed if the array of files is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") @QueryParam("filesAction") ParamUtils.BasicUpdateAction filesAction, @ApiParam(value = "Action to be performed if the array of panels is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") @@ -235,6 +237,9 @@ public Response update( if (panelsAction == null) { panelsAction = ParamUtils.BasicUpdateAction.ADD; } + if (analystsAction == null) { + analystsAction = ParamUtils.BasicUpdateAction.ADD; + } Map actionMap = new HashMap<>(); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.ANNOTATION_SETS.key(), annotationSetsAction); @@ -242,6 +247,7 @@ public Response update( actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.FLAGS.key(), flagsAction); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), filesAction); actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.PANELS.key(), panelsAction); + actionMap.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), analystsAction); queryOptions.put(Constants.ACTIONS, actionMap); return createOkResponse(clinicalManager.update(studyStr, getIdList(clinicalAnalysisStr), params, true, queryOptions, token)); From afe43bbf2dd548c60c7bd1176ccb3917b8d125fe Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 29 Nov 2023 10:44:10 +0100 Subject: [PATCH 182/354] app: add data model migration, #TASK-5198 --- ...pleteClinicalReportDataModelMigration.java | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java index b4fa490c90a..f7e6123b223 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_0/catalog/CompleteClinicalReportDataModelMigration.java @@ -2,6 +2,9 @@ import com.mongodb.client.model.Filters; import com.mongodb.client.model.Projections; +import com.mongodb.client.model.UpdateOneModel; +import org.bson.Document; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptor; import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; import org.opencb.opencga.catalog.migration.Migration; import org.opencb.opencga.catalog.migration.MigrationTool; @@ -9,6 +12,8 @@ import java.util.Arrays; import java.util.Collections; +import static com.mongodb.client.model.Filters.eq; + @Migration(id = "complete_clinical_report_data_model" , description = "Complete Clinical Report data model #TASK-5198", version = "2.12.0", @@ -23,10 +28,35 @@ protected void run() throws Exception { migrateCollection( Arrays.asList(MongoDBAdaptorFactory.CLINICAL_ANALYSIS_COLLECTION, MongoDBAdaptorFactory.DELETED_CLINICAL_ANALYSIS_COLLECTION), Filters.exists("analyst"), - Projections.include(Collections.singletonList("analyst")), + Projections.include(Arrays.asList("analyst", "report")), (document, bulk) -> { + Document analyst = document.get("analyst", Document.class); + analyst.remove("assignedBy"); + analyst.remove("date"); + + Document report = document.get("report", Document.class); + if (report != null) { + report.put("comments", Collections.emptyList()); + report.put("supportingEvidences", Collections.emptyList()); + report.put("files", Collections.emptyList()); + } + MongoDBAdaptor.UpdateDocument updateDocument = new MongoDBAdaptor.UpdateDocument(); + updateDocument.getSet().put("report", report); + updateDocument.getSet().put("request", new Document()); + updateDocument.getSet().put("responsible", new Document() + .append("id", analyst.get("id")) + .append("name", analyst.get("name")) + .append("email", analyst.get("email")) + ); + updateDocument.getSet().put("analysts", Collections.singletonList(analyst)); + updateDocument.getUnset().add("analyst"); + + bulk.add(new UpdateOneModel<>( + eq("_id", document.get("_id")), + updateDocument.toFinalUpdateDocument() + ) + ); }); } - } From e46d9ba2c44b871746bb6b6cde7c6cf892671913 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 29 Nov 2023 12:40:14 +0100 Subject: [PATCH 183/354] catalog: fix biodata changes, #TASK-5198 --- .../analysis/clinical/ClinicalInterpretationManager.java | 2 +- .../opencga/catalog/managers/ClinicalAnalysisManager.java | 4 ++-- .../opencga/catalog/managers/InterpretationManager.java | 6 +++--- .../catalog/managers/ClinicalAnalysisManagerTest.java | 4 ++-- .../core/models/clinical/ClinicalAnalysisCreateParams.java | 3 +-- .../opencga/core/models/clinical/ClinicalAnalystParam.java | 5 +++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java index 50e6d32da75..3ca18fe0eb9 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java @@ -824,7 +824,7 @@ public ClinicalAnalyst getAnalyst(String token) throws ToolException { OpenCGAResult userQueryResult = catalogManager.getUserManager().get(userId, new QueryOptions(QueryOptions.INCLUDE, Arrays.asList(UserDBAdaptor.QueryParams.EMAIL.key(), UserDBAdaptor.QueryParams.ORGANIZATION.key())), token); User user = userQueryResult.first(); - return new ClinicalAnalyst(userId, user.getName(), user.getEmail(), "", ""); + return new ClinicalAnalyst(userId, user.getName(), user.getEmail(), "", Collections.emptyMap()); } catch (CatalogException e) { throw new ToolException(e); } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java index 069a8e25d4e..13be28039cc 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java @@ -337,7 +337,7 @@ public OpenCGAResult create(String studyStr, ClinicalAnalysis } List clinicalAnalystList = new ArrayList<>(userList.size()); for (User user : userList) { - clinicalAnalystList.add(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, TimeUtils.getTime())); + clinicalAnalystList.add(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, Collections.emptyMap())); } clinicalAnalysis.setAnalysts(clinicalAnalystList); @@ -1484,7 +1484,7 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli } for (User user : userResult.getResults()) { clinicalAnalystList.add(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, - TimeUtils.getTime())); + Collections.emptyMap())); } } parameters.put(ClinicalAnalysisDBAdaptor.QueryParams.ANALYSTS.key(), clinicalAnalystList); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/InterpretationManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/InterpretationManager.java index 4294998ca19..0ab582184d0 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/InterpretationManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/InterpretationManager.java @@ -388,7 +388,7 @@ void validateNewInterpretation(Study study, Interpretation interpretation, Clini } user = result.first(); } - interpretation.setAnalyst(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, TimeUtils.getTime())); + interpretation.setAnalyst(new ClinicalAnalyst(user.getId(), user.getName(), user.getEmail(), userId, Collections.emptyMap())); } public OpenCGAResult clear(String studyStr, String clinicalAnalysisId, List interpretationList, String token) @@ -984,11 +984,11 @@ private OpenCGAResult update(Study study, Interpretation interpretation, Interpr throw new CatalogException("User '" + updateParams.getAnalyst().getId() + "' not found"); } parameters.put(InterpretationDBAdaptor.QueryParams.ANALYST.key(), new ClinicalAnalyst(userResult.first().getId(), - userResult.first().getName(), userResult.first().getEmail(), userId, TimeUtils.getTime())); + userResult.first().getName(), userResult.first().getEmail(), userId, Collections.emptyMap())); } else { // Remove assignee parameters.put(InterpretationDBAdaptor.QueryParams.ANALYST.key(), new ClinicalAnalyst("", "", "", userId, - TimeUtils.getTime())); + Collections.emptyMap())); } } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java index 400c85e23af..e07d53338b9 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java @@ -305,8 +305,8 @@ public void updateClinicalAnalystsTest() throws CatalogException { for (ClinicalAnalyst analyst : result.first().getAnalysts()) { assertNotNull(analyst.getId()); assertNotNull(analyst.getName()); - assertNotNull(analyst.getDate()); - assertEquals("user", analyst.getAssignedBy()); + assertNotNull(analyst.getRole()); + assertNotNull(analyst.getAttributes()); } // Remove analysts diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java index 301db1b3b54..ee4ab6d703b 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java @@ -17,7 +17,6 @@ package org.opencb.opencga.core.models.clinical; import org.opencb.biodata.models.clinical.ClinicalAnalyst; -import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.StatusParam; import org.opencb.opencga.core.models.family.Family; @@ -210,7 +209,7 @@ public ClinicalAnalysis toClinicalAnalysis() { if (analysts != null) { clinicalAnalystList = new ArrayList<>(analysts.size()); for (ClinicalAnalystParam analyst : analysts) { - clinicalAnalystList.add(new ClinicalAnalyst(analyst.getId(), analyst.getId(), "", "", TimeUtils.getTime())); + clinicalAnalystList.add(new ClinicalAnalyst(analyst.getId(), analyst.getId(), "", "", Collections.emptyMap())); } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalystParam.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalystParam.java index 91861b29d0b..ad3a3cd13f7 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalystParam.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalystParam.java @@ -1,7 +1,8 @@ package org.opencb.opencga.core.models.clinical; import org.opencb.biodata.models.clinical.ClinicalAnalyst; -import org.opencb.opencga.core.common.TimeUtils; + +import java.util.Collections; public class ClinicalAnalystParam { @@ -23,7 +24,7 @@ public static ClinicalAnalystParam of(ClinicalAnalyst clinicalAnalyst) { } public ClinicalAnalyst toClinicalAnalyst() { - return new ClinicalAnalyst(id != null ? id : "", "", "", "", TimeUtils.getTime()); + return new ClinicalAnalyst(id != null ? id : "", "", "", "", Collections.emptyMap()); } @Override From 0c6871351f9aaec3e51c1886b32bdcfe97d5a685 Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 29 Nov 2023 13:01:41 +0100 Subject: [PATCH 184/354] storage: ignore test --- .../variant/annotation/annotators/VariantAnnotatorTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java index 02b84fc38a9..ecc48098006 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/annotators/VariantAnnotatorTest.java @@ -1,20 +1,19 @@ package org.opencb.opencga.storage.core.variant.annotation.annotators; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.junit.Before; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.ExpectedException; import org.opencb.biodata.models.variant.Variant; -import org.opencb.biodata.models.variant.avro.EvidenceEntry; import org.opencb.biodata.models.variant.avro.VariantAnnotation; import org.opencb.cellbase.core.result.CellBaseDataResult; import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.core.testclassification.duration.ShortTests; import org.opencb.opencga.storage.core.StorageEngine; -import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotatorException; @@ -111,6 +110,7 @@ public void testErrorVariant() throws VariantAnnotatorException { testAnnotator.annotate(Arrays.asList(new Variant("10:999:A:C"), new Variant("10:1000:A:C"), new Variant("10:1001:A:C"))); } + @Ignore @Test public void useCellBaseApiKeys() throws VariantAnnotatorException { storageConfiguration.getCellbase().setUrl("https://uk.ws.zettagenomics.com/cellbase/"); From 76eef6f17ce1c4ad398129ba2d8a62fa1a7262b9 Mon Sep 17 00:00:00 2001 From: pfurio Date: Fri, 1 Dec 2023 15:00:42 +0100 Subject: [PATCH 185/354] catalog: update report with actions, #TASK-5349 --- .../db/api/ClinicalAnalysisDBAdaptor.java | 8 + .../ClinicalAnalysisMongoDBAdaptor.java | 88 ++++++++++- .../catalog/db/mongodb/MongoDBUtils.java | 15 +- .../converters/ClinicalAnalysisConverter.java | 10 +- .../managers/ClinicalAnalysisManager.java | 87 ++++++++++- .../managers/ClinicalAnalysisManagerTest.java | 145 ++++++++++++++++++ .../rest/analysis/ClinicalWebService.java | 45 ++++++ 7 files changed, 384 insertions(+), 14 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java index a4b3d8f19b4..9ba04a571c1 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/ClinicalAnalysisDBAdaptor.java @@ -73,6 +73,7 @@ enum QueryParams implements QueryParam { ANALYSTS_ID("analysts.id", TEXT, ""), ANALYSTS_ASSIGNED_BY("analysts.assignedBy", TEXT, ""), REPORT("report", OBJECT, ""), + REPORT_UPDATE("report_update", OBJECT, ""), // Made up key to be able to set inner fields and not the entire object REPORT_SUPPORTING_EVIDENCES("report.supportingEvidences", TEXT_ARRAY, ""), REPORT_FILES("report.files", TEXT_ARRAY, ""), REQUEST("request", OBJECT, ""), @@ -165,6 +166,13 @@ public static QueryParams getParam(String key) { } enum ReportQueryParams implements QueryParam { + TITLE("title", STRING, ""), + OVERVIEW("overview", STRING, ""), + DISCUSSION("discussion", OBJECT, ""), + LOGO("logo", STRING, ""), + SIGNED_BY("signedBy", STRING, ""), + SIGNATURE("signature", STRING, ""), + DATE("date", STRING, ""), COMMENTS("comments", OBJECT, ""), SUPPORTING_EVIDENCES("supportingEvidences", TEXT_ARRAY, ""), FILES("files", TEXT_ARRAY, ""); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java index 996a7eaac48..c0ea18866a4 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java @@ -142,18 +142,18 @@ static void fixPanelsForRemoval(ObjectMap parameters) { parameters.put(PANELS.key(), panelParamList); } - static void fixFilesForRemoval(ObjectMap parameters) { - if (parameters.get(FILES.key()) == null) { + static void fixFilesForRemoval(ObjectMap parameters, String key) { + if (parameters.get(key) == null) { return; } List fileParamList = new LinkedList<>(); - for (Object file : parameters.getAsList(FILES.key())) { + for (Object file : parameters.getAsList(key)) { if (file instanceof File) { fileParamList.add(new Document("uid", ((File) file).getUid())); } } - parameters.put(FILES.key(), fileParamList); + parameters.put(key, fileParamList); } static void fixAnalystsForRemoval(ObjectMap parameters) { @@ -410,13 +410,87 @@ UpdateDocument parseAndValidateUpdateParams(ObjectMap parameters, List actionMap = queryOptions.getMap(Constants.ACTIONS, new HashMap<>()); + + if (parameters.containsKey(REPORT_UPDATE.key())) { + ObjectMap reportParameters = parameters.getNestedMap(REPORT_UPDATE.key()); + reportParameters.put(ReportQueryParams.DATE.key(), TimeUtils.getTime()); + String[] stringParams = {ReportQueryParams.TITLE.key(), ReportQueryParams.OVERVIEW.key(), ReportQueryParams.LOGO.key(), + ReportQueryParams.SIGNED_BY.key(), ReportQueryParams.SIGNATURE.key(), ReportQueryParams.DATE.key(), }; + filterStringParams(reportParameters, document.getSet(), stringParams, REPORT.key() + "."); + + String[] objectParams = {ReportQueryParams.DISCUSSION.key()}; + filterObjectParams(reportParameters, document.getSet(), objectParams, REPORT.key() + "."); + + String[] commentParams = {ReportQueryParams.COMMENTS.key()}; + ParamUtils.AddRemoveReplaceAction basicOperation = ParamUtils.AddRemoveReplaceAction + .from(actionMap, ReportQueryParams.COMMENTS.key(), ParamUtils.AddRemoveReplaceAction.ADD); + switch (basicOperation) { + case REMOVE: + fixCommentsForRemoval(reportParameters); + filterObjectParams(reportParameters, document.getPull(), commentParams, REPORT.key() + "."); + break; + case ADD: + filterObjectParams(reportParameters, document.getAddToSet(), commentParams, REPORT.key() + "."); + break; + case REPLACE: + filterReplaceParams(reportParameters.getAsList(ReportQueryParams.COMMENTS.key(), ClinicalComment.class), document, + ClinicalComment::getDate, QueryParams.REPORT.key() + "." + QueryParams.COMMENTS_DATE.key()); + break; + default: + throw new IllegalStateException("Unknown operation " + basicOperation); + } + + String[] filesParams = new String[]{ReportQueryParams.FILES.key()}; + ParamUtils.BasicUpdateAction operation = ParamUtils.BasicUpdateAction.from(actionMap, ReportQueryParams.FILES.key(), + ParamUtils.BasicUpdateAction.ADD); + switch (operation) { + case SET: + filterObjectParams(reportParameters, document.getSet(), filesParams, QueryParams.REPORT.key() + "."); + clinicalConverter.validateFilesToUpdate(document.getSet(), QueryParams.REPORT.key() + "." + + ReportQueryParams.FILES.key()); + break; + case REMOVE: + fixFilesForRemoval(reportParameters, ReportQueryParams.FILES.key()); + filterObjectParams(reportParameters, document.getPull(), filesParams, QueryParams.REPORT.key() + "."); + break; + case ADD: + filterObjectParams(reportParameters, document.getAddToSet(), filesParams, QueryParams.REPORT.key() + "."); + clinicalConverter.validateFilesToUpdate(document.getAddToSet(), QueryParams.REPORT.key() + "." + + ReportQueryParams.FILES.key()); + break; + default: + throw new IllegalStateException("Unknown operation " + basicOperation); + } + + String[] supportingEvidencesParams = new String[]{ReportQueryParams.SUPPORTING_EVIDENCES.key()}; + operation = ParamUtils.BasicUpdateAction.from(actionMap, ReportQueryParams.SUPPORTING_EVIDENCES.key(), + ParamUtils.BasicUpdateAction.ADD); + switch (operation) { + case SET: + filterObjectParams(reportParameters, document.getSet(), supportingEvidencesParams, QueryParams.REPORT.key() + "."); + clinicalConverter.validateFilesToUpdate(document.getSet(), QueryParams.REPORT.key() + "." + + ReportQueryParams.SUPPORTING_EVIDENCES.key()); + break; + case REMOVE: + fixFilesForRemoval(reportParameters, ReportQueryParams.SUPPORTING_EVIDENCES.key()); + filterObjectParams(reportParameters, document.getPull(), supportingEvidencesParams, QueryParams.REPORT.key() + "."); + break; + case ADD: + filterObjectParams(reportParameters, document.getAddToSet(), supportingEvidencesParams, QueryParams.REPORT.key() + "."); + clinicalConverter.validateFilesToUpdate(document.getAddToSet(), QueryParams.REPORT.key() + "." + + ReportQueryParams.SUPPORTING_EVIDENCES.key()); + break; + default: + throw new IllegalStateException("Unknown operation " + basicOperation); + } + } + clinicalConverter.validateInterpretationToUpdate(document.getSet()); clinicalConverter.validateFamilyToUpdate(document.getSet()); clinicalConverter.validateProbandToUpdate(document.getSet()); clinicalConverter.validateReportToUpdate(document.getSet()); - Map actionMap = queryOptions.getMap(Constants.ACTIONS, new HashMap<>()); - String[] objectAcceptedParams = new String[]{QueryParams.COMMENTS.key()}; ParamUtils.AddRemoveReplaceAction basicOperation = ParamUtils.AddRemoveReplaceAction.from(actionMap, QueryParams.COMMENTS.key(), ParamUtils.AddRemoveReplaceAction.ADD); @@ -463,7 +537,7 @@ UpdateDocument parseAndValidateUpdateParams(ObjectMap parameters, List filter } static void filterStringParams(ObjectMap parameters, Map filteredParams, String[] acceptedParams) { + filterStringParams(parameters, filteredParams, acceptedParams, ""); + } + + static void filterStringParams(ObjectMap parameters, Map filteredParams, String[] acceptedParams, String dbKeyPrefix) { for (String s : acceptedParams) { if (parameters.containsKey(s)) { - filteredParams.put(s, parameters.getString(s)); + filteredParams.put(dbKeyPrefix + s, parameters.getString(s)); } } } @@ -361,6 +365,11 @@ static void filterMapParams(ObjectMap parameters, Map filteredPa } static void filterObjectParams(ObjectMap parameters, Map filteredParams, String[] acceptedMapParams) { + filterObjectParams(parameters, filteredParams, acceptedMapParams, ""); + } + + static void filterObjectParams(ObjectMap parameters, Map filteredParams, String[] acceptedMapParams, + String dbKeyPrefix) { for (String s : acceptedMapParams) { if (parameters.containsKey(s)) { Document document; @@ -371,10 +380,10 @@ static void filterObjectParams(ObjectMap parameters, Map filtere for (Object object : originalList) { documentList.add(getMongoDBDocument(object, s)); } - filteredParams.put(s, documentList); + filteredParams.put(dbKeyPrefix + s, documentList); } else { document = getMongoDBDocument(parameters.get(s), s); - filteredParams.put(s, document); + filteredParams.put(dbKeyPrefix + s, document); } } catch (CatalogDBException e) { logger.warn("Skipping key '" + s + "': " + e.getMessage(), e); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java index 45fff9dd2f3..ed7494ae2c9 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/ClinicalAnalysisConverter.java @@ -156,10 +156,14 @@ public void validatePanelsToUpdate(Document document) { } } - public void validateFilesToUpdate(Document document) { - List files = (List) document.get(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key()); + public void validateFilesToUpdate(Document document, String key) { + List files = (List) document.get(key); List reducedFiles = getReducedFileDocuments(files); - document.put(ClinicalAnalysisDBAdaptor.QueryParams.FILES.key(), reducedFiles); + document.put(key, reducedFiles); + } + + public void validateFilesToUpdate(Document document) { + validateFilesToUpdate(document, ClinicalAnalysisDBAdaptor.QueryParams.FILES.key()); } private static List getReducedFileDocuments(List files) { diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java index 13be28039cc..7d22001ea66 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManager.java @@ -37,7 +37,10 @@ import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; import org.opencb.opencga.catalog.models.InternalGetDataResult; -import org.opencb.opencga.catalog.utils.*; +import org.opencb.opencga.catalog.utils.AnnotationUtils; +import org.opencb.opencga.catalog.utils.Constants; +import org.opencb.opencga.catalog.utils.ParamUtils; +import org.opencb.opencga.catalog.utils.UuidUtils; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.common.TimeUtils; @@ -1688,6 +1691,88 @@ private OpenCGAResult update(Study study, ClinicalAnalysis cli return update; } + public OpenCGAResult updateReport(String studyStr, String clinicalAnalysisId, ClinicalReport report, + QueryOptions options, String token) throws CatalogException { + String userId = userManager.getUserId(token); + Study study = studyManager.resolveId(studyStr, userId); + + String operationId = UuidUtils.generateOpenCgaUuid(UuidUtils.Entity.AUDIT); + + ObjectMap auditParams = new ObjectMap() + .append("study", studyStr) + .append("clinicalAnalysisId", clinicalAnalysisId) + .append("report", report) + .append("options", options) + .append("token", token); + + String caseId = clinicalAnalysisId; + String caseUuid = ""; + try { + options = ParamUtils.defaultObject(options, QueryOptions::new); + ClinicalAnalysis clinicalAnalysis = internalGet(study.getUid(), clinicalAnalysisId, INCLUDE_CLINICAL_IDS, userId).first(); + authorizationManager.checkClinicalAnalysisPermission(study.getUid(), clinicalAnalysis.getUid(), userId, + ClinicalAnalysisPermissions.WRITE); + caseId = clinicalAnalysis.getId(); + caseUuid = clinicalAnalysis.getUuid(); + + ObjectMap updateMap; + try { + updateMap = new ObjectMap(getUpdateObjectMapper().writeValueAsString(report)); + } catch (JsonProcessingException e) { + throw new CatalogException("Could not parse report object: " + e.getMessage(), e); + } + + Map actionMap = options.getMap(ParamConstants.ACTION, new HashMap<>()); + if (report.getComments() != null) { + ParamUtils.AddRemoveReplaceAction basicOperation = ParamUtils.AddRemoveReplaceAction + .from(actionMap, ClinicalAnalysisDBAdaptor.ReportQueryParams.COMMENTS.key(), ParamUtils.AddRemoveReplaceAction.ADD); + if (basicOperation != ParamUtils.AddRemoveReplaceAction.ADD) { + for (ClinicalComment comment : report.getComments()) { + comment.setDate(TimeUtils.getTime()); + comment.setAuthor(userId); + } + } + updateMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.COMMENTS.key(), report.getComments()); + } + if (CollectionUtils.isNotEmpty(report.getFiles())) { + List files = obtainFiles(study, userId, report.getFiles()); + updateMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), files, false); + } + if (CollectionUtils.isNotEmpty(report.getSupportingEvidences())) { + List files = obtainFiles(study, userId, report.getSupportingEvidences()); + updateMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), files, false); + } + ClinicalAudit clinicalAudit = new ClinicalAudit(userId, ClinicalAudit.Action.UPDATE_CLINICAL_ANALYSIS, + "Update ClinicalAnalysis '" + clinicalAnalysis.getId() + "' report.", TimeUtils.getTime()); + + // Add custom key to ensure it is properly updated + updateMap = new ObjectMap(ClinicalAnalysisDBAdaptor.QueryParams.REPORT_UPDATE.key(), updateMap); + OpenCGAResult update = clinicalDBAdaptor.update(clinicalAnalysis.getUid(), updateMap, null, + Collections.singletonList(clinicalAudit), options); + auditManager.auditUpdate(operationId, userId, Enums.Resource.CLINICAL_ANALYSIS, caseId, caseUuid, study.getId(), + study.getUuid(), auditParams, new AuditRecord.Status(AuditRecord.Status.Result.SUCCESS)); + if (options.getBoolean(ParamConstants.INCLUDE_RESULT_PARAM)) { + // Fetch updated clinical analysis + OpenCGAResult result = clinicalDBAdaptor.get(study.getUid(), + new Query(ClinicalAnalysisDBAdaptor.QueryParams.UID.key(), clinicalAnalysis.getUid()), options, userId); + update.setResults(result.getResults()); + } + List reportList = new ArrayList<>(update.getResults().size()); + if (update.getNumResults() > 0) { + for (ClinicalAnalysis result : update.getResults()) { + reportList.add(result.getReport()); + } + } + return new OpenCGAResult<>(update.getTime(), update.getEvents(), update.getNumResults(), reportList, + update.getNumMatches(), update.getNumInserted(), update.getNumUpdated(), update.getNumDeleted(), + update.getNumErrors(), update.getAttributes(), update.getFederationNode()); + } catch (CatalogException e) { + auditManager.auditUpdate(operationId, userId, Enums.Resource.CLINICAL_ANALYSIS, caseId, caseUuid, study.getId(), + study.getUuid(), auditParams, new AuditRecord.Status(AuditRecord.Status.Result.ERROR, e.getError())); + throw e; + } + } + /** * Sort the family members in the following order: proband, father, mother, others. * diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java index e07d53338b9..c5b5fbc49ce 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/ClinicalAnalysisManagerTest.java @@ -477,6 +477,151 @@ public void updateClinicalAnalysisReport() throws CatalogException { new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); } + @Test + public void updateClinicalAnalysisReportWithActions() throws CatalogException { + ClinicalAnalysis case1 = createDummyEnvironment(true, true).first(); + assertNull(case1.getReport()); + + // Add files + catalogManager.getFileManager().create(STUDY, + new FileCreateParams() + .setContent(RandomStringUtils.randomAlphanumeric(1000)) + .setPath("/data/file1.txt") + .setType(File.Type.FILE), + true, sessionIdUser); + catalogManager.getFileManager().create(STUDY, + new FileCreateParams() + .setContent(RandomStringUtils.randomAlphanumeric(1000)) + .setPath("/data/file2.txt") + .setType(File.Type.FILE), + true, sessionIdUser); + catalogManager.getFileManager().create(STUDY, + new FileCreateParams() + .setContent(RandomStringUtils.randomAlphanumeric(1000)) + .setPath("/data/file3.txt") + .setType(File.Type.FILE), + true, sessionIdUser); + + ClinicalReport report = new ClinicalReport("title", "overview", new ClinicalDiscussion("me", TimeUtils.getTime(), "text"), "logo", + "me", "signature", TimeUtils.getTime(), Arrays.asList( + new ClinicalComment().setMessage("comment1"), + new ClinicalComment().setMessage("comment2") + ), + Collections.singletonList(new File().setId("data:file1.txt")), + Collections.singletonList(new File().setId("data:file2.txt"))); + OpenCGAResult result = catalogManager.getClinicalAnalysisManager().update(STUDY, case1.getId(), + new ClinicalAnalysisUpdateParams().setReport(report), INCLUDE_RESULT, sessionIdUser); + assertNotNull(result.first().getReport()); + assertEquals(report.getTitle(), result.first().getReport().getTitle()); + assertEquals(report.getOverview(), result.first().getReport().getOverview()); + assertEquals(report.getDate(), result.first().getReport().getDate()); + assertEquals(report.getLogo(), result.first().getReport().getLogo()); + assertEquals(report.getSignature(), result.first().getReport().getSignature()); + assertEquals(report.getSignedBy(), result.first().getReport().getSignedBy()); + assertEquals(2, result.first().getReport().getComments().size()); + assertEquals(1, result.first().getReport().getFiles().size()); + assertEquals(1, result.first().getReport().getSupportingEvidences().size()); + + // Add comment + // Set files + // Remove supporting evidence + ObjectMap actionMap = new ObjectMap() + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.COMMENTS.key(), ParamUtils.AddRemoveAction.ADD) + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), ParamUtils.BasicUpdateAction.SET) + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), ParamUtils.BasicUpdateAction.REMOVE); + QueryOptions options = new QueryOptions() + .append(Constants.ACTIONS, actionMap) + .append(ParamConstants.INCLUDE_RESULT_PARAM, true); + ClinicalReport reportToUpdate = new ClinicalReport() + .setComments(Collections.singletonList(new ClinicalComment().setMessage("comment3"))) + .setFiles(Arrays.asList( + new File().setId("data:file2.txt"), + new File().setId("data:file3.txt") + )) + .setSupportingEvidences(Collections.singletonList(new File().setId("data:file1.txt"))); + ClinicalReport reportResult = catalogManager.getClinicalAnalysisManager().updateReport(STUDY, case1.getId(), reportToUpdate, + options, sessionIdUser).first(); + // Check comments + assertEquals(3, reportResult.getComments().size()); + assertEquals("comment1", reportResult.getComments().get(0).getMessage()); + assertEquals("comment2", reportResult.getComments().get(1).getMessage()); + assertEquals("comment3", reportResult.getComments().get(2).getMessage()); + + // Check files + assertEquals(2, reportResult.getFiles().size()); + assertTrue(reportResult.getFiles().stream().map(File::getPath).collect(Collectors.toSet()).containsAll(Arrays.asList("data/file2.txt", "data/file3.txt"))); + + // Check supporting evidences + assertEquals(0, reportResult.getSupportingEvidences().size()); + + + // Remove comment + // Remove file + // Set supporting evidences + actionMap = new ObjectMap() + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.COMMENTS.key(), ParamUtils.AddRemoveAction.REMOVE) + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), ParamUtils.BasicUpdateAction.REMOVE) + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), ParamUtils.BasicUpdateAction.SET); + options = new QueryOptions() + .append(Constants.ACTIONS, actionMap) + .append(ParamConstants.INCLUDE_RESULT_PARAM, true); + reportToUpdate = new ClinicalReport() + .setComments(Arrays.asList(reportResult.getComments().get(0), reportResult.getComments().get(1))) + .setFiles(Collections.singletonList(new File().setId("data:file3.txt"))) + .setSupportingEvidences(Arrays.asList( + new File().setId("data:file1.txt"), + new File().setId("data:file3.txt") + )); + ClinicalComment pendingComment = reportResult.getComments().get(2); + reportResult = catalogManager.getClinicalAnalysisManager().updateReport(STUDY, case1.getId(), reportToUpdate, + options, sessionIdUser).first(); + // Check comments + assertEquals(1, reportResult.getComments().size()); + assertEquals(pendingComment.getMessage(), reportResult.getComments().get(0).getMessage()); + + // Check supporting evidences + assertEquals(2, reportResult.getSupportingEvidences().size()); + assertTrue(reportResult.getSupportingEvidences().stream().map(File::getPath).collect(Collectors.toSet()) + .containsAll(Arrays.asList("data/file1.txt", "data/file3.txt"))); + + // Check files + assertEquals(1, reportResult.getFiles().size()); + assertEquals("data/file2.txt", reportResult.getFiles().get(0).getPath()); + + + // Add file + // Add supporting evidences + actionMap = new ObjectMap() + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), ParamUtils.BasicUpdateAction.ADD) + .append(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), ParamUtils.BasicUpdateAction.ADD); + options = new QueryOptions() + .append(Constants.ACTIONS, actionMap) + .append(ParamConstants.INCLUDE_RESULT_PARAM, true); + reportToUpdate = new ClinicalReport() + .setFiles(Arrays.asList( + new File().setId("data:file1.txt"), + new File().setId("data:file3.txt") + )) + .setSupportingEvidences(Collections.singletonList( + new File().setId("data:file2.txt") + )); + reportResult = catalogManager.getClinicalAnalysisManager().updateReport(STUDY, case1.getId(), reportToUpdate, + options, sessionIdUser).first(); + // Check comments + assertEquals(1, reportResult.getComments().size()); + assertEquals("comment3", reportResult.getComments().get(0).getMessage()); + + // Check files + assertEquals(3, reportResult.getFiles().size()); + assertTrue(reportResult.getFiles().stream().map(File::getPath).collect(Collectors.toSet()) + .containsAll(Arrays.asList("data/file1.txt", "data/file2.txt", "data/file3.txt"))); + + // Check supporting evidences + assertEquals(3, reportResult.getSupportingEvidences().size()); + assertTrue(reportResult.getSupportingEvidences().stream().map(File::getPath).collect(Collectors.toSet()) + .containsAll(Arrays.asList("data/file1.txt", "data/file2.txt", "data/file3.txt"))); + } + @Test public void createAndUpdateClinicalAnalysisWithQualityControl() throws CatalogException, InterruptedException { Individual individual = new Individual().setId("child1").setSamples(Arrays.asList(new Sample().setId("sample2"))); diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java index fdaa1e84449..30b06fb75e2 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/ClinicalWebService.java @@ -256,6 +256,51 @@ public Response update( } } + @POST + @Path("/{clinicalAnalysis}/report/update") + @Consumes(MediaType.APPLICATION_JSON) + @ApiOperation(value = "Update clinical analysis report", response = ClinicalReport.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = QueryOptions.INCLUDE, value = ParamConstants.INCLUDE_DESCRIPTION, + dataType = "string", paramType = "query"), + @ApiImplicitParam(name = QueryOptions.EXCLUDE, value = ParamConstants.EXCLUDE_DESCRIPTION, + dataType = "string", paramType = "query") + }) + public Response updateReport( + @ApiParam(value = "Clinical analysis ID") @PathParam(value = "clinicalAnalysis") String clinicalAnalysisStr, + @ApiParam(value = ParamConstants.STUDY_DESCRIPTION) @QueryParam(ParamConstants.STUDY_PARAM) String studyStr, + @ApiParam(value = "Action to be performed if the array of comments is being updated.", allowableValues = "ADD,REMOVE,REPLACE", defaultValue = "ADD") + @QueryParam("commentsAction") ParamUtils.AddRemoveReplaceAction commentsAction, + @ApiParam(value = "Action to be performed if the array of supporting evidences is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") + @QueryParam("supportingEvidencesAction") ParamUtils.BasicUpdateAction supportingEvidencesAction, + @ApiParam(value = "Action to be performed if the array of files is being updated.", allowableValues = "ADD,SET,REMOVE", defaultValue = "ADD") + @QueryParam("filesAction") ParamUtils.BasicUpdateAction filesAction, + @ApiParam(value = ParamConstants.INCLUDE_RESULT_DESCRIPTION, defaultValue = "false") @QueryParam(ParamConstants.INCLUDE_RESULT_PARAM) boolean includeResult, + @ApiParam(name = "body", value = "JSON containing clinical report information", required = true) ClinicalReport params) { + try { + if (commentsAction == null) { + commentsAction = ParamUtils.AddRemoveReplaceAction.ADD; + } + if (supportingEvidencesAction == null) { + supportingEvidencesAction = ParamUtils.BasicUpdateAction.ADD; + } + if (filesAction == null) { + filesAction = ParamUtils.BasicUpdateAction.ADD; + } + + Map actionMap = new HashMap<>(); + actionMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.COMMENTS.key(), commentsAction); + actionMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.SUPPORTING_EVIDENCES.key(), supportingEvidencesAction); + actionMap.put(ClinicalAnalysisDBAdaptor.ReportQueryParams.FILES.key(), filesAction); + queryOptions.put(Constants.ACTIONS, actionMap); + + return createOkResponse(clinicalManager.updateReport(studyStr, clinicalAnalysisStr, params, queryOptions, token)); + } catch (Exception e) { + return createErrorResponse(e); + } + } + + @POST @Path("/annotationSets/load") @Consumes(MediaType.APPLICATION_JSON) From 712855484c04670024219023ce99b4ee29e4716d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 4 Dec 2023 10:57:59 +0100 Subject: [PATCH 186/354] server: use permissions 777 for tmp directory when running circos plot, #TASK-5113 --- .../opencb/opencga/server/rest/analysis/VariantWebService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java index 0d7a5b0a51f..761426a0b9a 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/analysis/VariantWebService.java @@ -1331,6 +1331,7 @@ public Response circos( if (!outDir.exists()) { return createErrorResponse(new Exception("Error creating temporal directory for Circos analysis")); } + Runtime.getRuntime().exec("chmod 777 " + outDir.getAbsolutePath()); // Create and set up Circos executor CircosLocalAnalysisExecutor executor = new CircosLocalAnalysisExecutor(study, params, variantManager); From 4ad84e500c277190e5df2092d0485e5c57d35e45 Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 5 Dec 2023 13:52:25 +0100 Subject: [PATCH 187/354] core: add deprecated field to ClinicalAnalysis, #TASK-5373 --- .../models/clinical/ClinicalAnalysis.java | 21 +++++++++++++++++++ .../ClinicalAnalysisCreateParams.java | 16 ++++++++++++++ .../ClinicalAnalysisUpdateParams.java | 15 +++++++++++++ 3 files changed, 52 insertions(+) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java index 1c9ffd04027..61bc01c644f 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysis.java @@ -16,6 +16,8 @@ package org.opencb.opencga.core.models.clinical; +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.apache.commons.collections4.CollectionUtils; import org.opencb.biodata.models.clinical.ClinicalAnalyst; import org.opencb.biodata.models.clinical.ClinicalAudit; import org.opencb.biodata.models.clinical.ClinicalComment; @@ -34,6 +36,7 @@ import org.opencb.opencga.core.models.study.configuration.ClinicalConsentAnnotation; import org.opencb.opencga.core.models.study.configuration.ClinicalPriorityAnnotation; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -117,6 +120,10 @@ public class ClinicalAnalysis extends Annotable { description = FieldConstants.CLINICAL_ANALYSIS_CONSENT) private ClinicalConsentAnnotation consent; + @Deprecated + @DataField(id = "analyst") + private ClinicalAnalyst analyst; + @DataField(id = "analysts", indexed = true, description = FieldConstants.CLINICAL_ANALYSIS_ANALYST) private List analysts; @@ -421,6 +428,20 @@ public ClinicalAnalysis setConsent(ClinicalConsentAnnotation consent) { return this; } + @Deprecated + @JsonIgnore + public ClinicalAnalyst getAnalyst() { + return analyst; + } + + @Deprecated + public ClinicalAnalysis setAnalyst(ClinicalAnalyst analyst) { + if (analyst != null && CollectionUtils.isEmpty(this.analysts)) { + this.analysts = Collections.singletonList(analyst); + } + return this; + } + public List getAnalysts() { return analysts; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java index ee4ab6d703b..7ffbf4b4a9a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisCreateParams.java @@ -16,6 +16,7 @@ package org.opencb.opencga.core.models.clinical; +import org.apache.commons.collections4.CollectionUtils; import org.opencb.biodata.models.clinical.ClinicalAnalyst; import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.StatusParam; @@ -47,6 +48,8 @@ public class ClinicalAnalysisCreateParams { private List panels; private Boolean panelLock; + @Deprecated + private ClinicalAnalystParam analyst; private List analysts; private ClinicalReport report; private ClinicalRequest request; @@ -319,6 +322,19 @@ public ClinicalAnalysisCreateParams setPanelLock(Boolean panelLock) { return this; } + @Deprecated + public ClinicalAnalystParam getAnalyst() { + return analyst; + } + + @Deprecated + public ClinicalAnalysisCreateParams setAnalyst(ClinicalAnalystParam analyst) { + if (analyst != null && CollectionUtils.isEmpty(this.analysts)) { + this.analysts = Collections.singletonList(analyst); + } + return this; + } + public List getAnalysts() { return analysts; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java index b32711af25b..020a44ead6a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ClinicalAnalysisUpdateParams.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.core.JsonProcessingException; +import org.apache.commons.collections4.CollectionUtils; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.opencga.core.models.common.AnnotationSet; import org.opencb.opencga.core.models.common.StatusParam; @@ -26,6 +27,7 @@ import org.opencb.opencga.core.models.panel.PanelReferenceParam; import org.opencb.opencga.core.models.study.configuration.ClinicalConsentAnnotationParam; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -48,6 +50,8 @@ public class ClinicalAnalysisUpdateParams { private FamilyParam family; private Boolean locked; + @Deprecated + private ClinicalAnalystParam analyst; private List analysts; private ClinicalReport report; private ClinicalRequest request; @@ -257,6 +261,17 @@ public ClinicalAnalysisUpdateParams setLocked(Boolean locked) { return this; } + public ClinicalAnalystParam getAnalyst() { + return analyst; + } + + public ClinicalAnalysisUpdateParams setAnalyst(ClinicalAnalystParam analyst) { + if (analyst != null && CollectionUtils.isNotEmpty(this.analysts)) { + this.analysts = Collections.singletonList(analyst); + } + return this; + } + public List getAnalysts() { return analysts; } From 6e4a8363b7b3d2507dcb51d573fd6f9e7a6590af Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 11 Dec 2023 15:59:29 +0100 Subject: [PATCH 188/354] Modify manual deploy docker --- .github/workflows/manual-deploy-docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/manual-deploy-docker.yml b/.github/workflows/manual-deploy-docker.yml index 3c9660bbb2c..9a276c7d9b0 100644 --- a/.github/workflows/manual-deploy-docker.yml +++ b/.github/workflows/manual-deploy-docker.yml @@ -35,7 +35,7 @@ jobs: ./.github/workflows/scripts/get_same_branch.sh ${{ github.ref_name }} fi - name: Maven Build (skip tests) - run: mvn -T 2 clean install -DskipTests + run: mvn -T 2 clean install -DskipTests -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' - uses: actions/upload-artifact@v3 with: name: build-folder From 973d0dcbb5db3f4f4dd58a25341f905a8b004bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 13 Dec 2023 10:27:10 +0000 Subject: [PATCH 189/354] storage: Remove test scope from log4j, cellbase and zookeeper. #TASK-5394 --- .../opencga-storage-hadoop-core/pom.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 59a7f4570bb..d7c60394ec9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -142,12 +142,10 @@ org.opencb.cellbase cellbase-client - test org.apache.logging.log4j log4j-core - test org.apache.parquet @@ -164,7 +162,6 @@ org.apache.zookeeper zookeeper - test org.opencb.commons @@ -224,7 +221,6 @@ org.apache.logging.log4j log4j-api - test com.fasterxml.jackson.core @@ -300,6 +296,12 @@ * + + org.apache.logging.log4j:log4j-api + org.apache.logging.log4j:log4j-core + org.opencb.cellbase:cellbase-client + org.apache.zookeeper:zookeeper + From 33cbdf30e6b1042549dc518d2065e4c25ada4a45 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 15 Dec 2023 14:17:53 +0100 Subject: [PATCH 190/354] Autogenerated code to 1.10.1 --- .../opencga/app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisClinicalCommandExecutor.java | 2 ++ .../options/AnalysisClinicalCommandOptions.java | 6 ++++++ opencga-client/src/main/R/R/Admin-methods.R | 2 +- opencga-client/src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 16 ++++++++-------- opencga-client/src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 2 +- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 2 +- opencga-client/src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 2 +- opencga-client/src/main/R/R/Meta-methods.R | 2 +- opencga-client/src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 4 ++-- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../opencga/client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 2 +- .../client/rest/clients/CohortClient.java | 2 +- .../client/rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../opencga/client/rest/clients/FileClient.java | 2 +- .../opencga/client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../opencga/client/rest/clients/JobClient.java | 2 +- .../opencga/client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../opencga/client/rest/clients/StudyClient.java | 2 +- .../opencga/client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 2 +- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- opencga-client/src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- opencga-client/src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../pyopencga/rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 2 +- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../python/pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../pyopencga/rest_clients/individual_client.py | 2 +- .../python/pyopencga/rest_clients/job_client.py | 2 +- .../python/pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../python/pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 2 +- .../rest_clients/variant_operation_client.py | 2 +- 73 files changed, 94 insertions(+), 86 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index bff9940dd94..154dd0010dd 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-12-04 OpenCB +* Copyright 2015-2023-12-15 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index 4ef7b9f3244..a88d83dac78 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2023-12-04 OpenCB +* Copyright 2015-2023-12-15 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java index fd4a6c7e226..490e6ca3166 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisClinicalCommandExecutor.java @@ -341,6 +341,7 @@ private RestResponse create() throws Exception { putNestedIfNotEmpty(beanParams, "proband.id",commandOptions.probandId, true); putNestedIfNotEmpty(beanParams, "family.id",commandOptions.familyId, true); putNestedIfNotNull(beanParams, "panelLock",commandOptions.panelLock, true); + putNestedIfNotEmpty(beanParams, "analyst.id",commandOptions.analystId, true); putNestedIfNotEmpty(beanParams, "report.title",commandOptions.reportTitle, true); putNestedIfNotEmpty(beanParams, "report.overview",commandOptions.reportOverview, true); putNestedIfNotEmpty(beanParams, "report.logo",commandOptions.reportLogo, true); @@ -1231,6 +1232,7 @@ private RestResponse update() throws Exception { putNestedIfNotEmpty(beanParams, "proband.id",commandOptions.probandId, true); putNestedIfNotEmpty(beanParams, "family.id",commandOptions.familyId, true); putNestedIfNotNull(beanParams, "locked",commandOptions.locked, true); + putNestedIfNotEmpty(beanParams, "analyst.id",commandOptions.analystId, true); putNestedIfNotEmpty(beanParams, "report.title",commandOptions.reportTitle, true); putNestedIfNotEmpty(beanParams, "report.overview",commandOptions.reportOverview, true); putNestedIfNotEmpty(beanParams, "report.logo",commandOptions.reportLogo, true); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java index 7e6754c2ba7..11d6220ddef 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java @@ -240,6 +240,9 @@ public class CreateCommandOptions { @Parameter(names = {"--panel-lock"}, description = "The body web service panelLock parameter", required = false, arity = 1) public Boolean panelLock; + @Parameter(names = {"--analyst-id"}, description = "The body web service id parameter", required = false, arity = 1) + public String analystId; + @Parameter(names = {"--report-title"}, description = "Report title.", required = false, arity = 1) public String reportTitle; @@ -1934,6 +1937,9 @@ public class UpdateCommandOptions { @Parameter(names = {"--locked"}, description = "The body web service locked parameter", required = false, arity = 1) public Boolean locked; + @Parameter(names = {"--analyst-id"}, description = "The body web service id parameter", required = false, arity = 1) + public String analystId; + @Parameter(names = {"--report-title"}, description = "Report title.", required = false, arity = 1) public String reportTitle; diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index 9c652ae5c3d..82c35928a09 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index e2ce9564b03..5f7dd5ccb76 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index 9733247bec5..e617555c2fe 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,21 +1,21 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## ## ProjectClient -setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, params=NULL, ...) +setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, params=NULL, ...) standardGeneric("projectClient")) # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, study, templateId, variableSet, members, studies, group, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, members, templateId, group, studies, variableSet, study, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, file, folder, annotationSet, members, files, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, members, annotationSet, files, folder, file, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## @@ -25,12 +25,12 @@ setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, par # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, members, samples, sample, annotationSet, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, members, individual, individuals, annotationSet, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## @@ -40,7 +40,7 @@ setGeneric("familyClient", function(OpencgaR, family, members, annotationSet, fa # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, annotationSet, clinicalAnalysis, interpretation, clinicalAnalyses, interpretations, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, members, annotationSet, interpretation, clinicalAnalyses, clinicalAnalysis, interpretations, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index f9b0f7228a3..a65b13dc3c0 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -60,7 +60,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, annotationSet, clinicalAnalysis, interpretation, clinicalAnalyses, interpretations, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, members, annotationSet, interpretation, clinicalAnalyses, clinicalAnalysis, interpretations, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 06fd04b9449..5ae80da7c28 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, cohorts, annotationSet, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, members, cohort, annotationSet, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 0f6722a73f8..12a05627674 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 12510a7e63d..f99abec5c6a 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, file, folder, annotationSet, members, files, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, members, annotationSet, files, folder, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 1dcd27d98bd..6c33f10e805 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index e468976ab4d..8425d762354 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, members, individual, individuals, annotationSet, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index a96b8b58b19..eecb9ef55ee 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 32eeb09f335..dc99ac4767f 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 65c0e083e8e..c5e5da6eb2f 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 7c79027c43f..6c3328e544c 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index e05921a527c..f4126c3670d 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -34,7 +34,7 @@ #' [*]: Required parameter #' @export -setMethod("projectClient", "OpencgaR", function(OpencgaR, project, projects, endpointName, params=NULL, ...) { +setMethod("projectClient", "OpencgaR", function(OpencgaR, projects, project, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/projects/create: diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index e2a51186dd7..055fb46a729 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, members, samples, sample, annotationSet, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, members, sample, annotationSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 2d98e078207..e816b97a05f 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, study, templateId, variableSet, members, studies, group, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, members, templateId, group, studies, variableSet, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 5206f98e8fb..908e172768b 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index 24d77ff2bcd..86b24f1e3d2 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2023-12-04 +# Autogenerated on: 2023-12-15 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 681080ed7ec..5861b2857e5 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 509c48c0eab..c9c840941a1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 37f2254435c..600f937bb50 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -53,7 +53,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index f80327b9869..7551de54734 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 5bcd565ae52..a2d2294288f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 06e6060df9d..3864e673c1c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 333f34943f1..e31b21892cf 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 7d9817077cf..8ed457c91fa 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 09d5162ee36..2d62e0d63c9 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 1df79d4bf5d..0847486e2f3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index d2f8c2fdb65..00f596604e2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index e3bc0c86d9a..93ff43c9374 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 9fdd01ee98c..68cf5b5bd88 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index b5aeb27cf3a..29e8f294907 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index 50682de902d..0494c7c07be 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index ca3d4687bab..9abf7befe41 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index f80b9ff3f9d..8928db2a550 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2023-12-04 +* Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index dfb9c735b66..72ee4c5d577 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 8138c31a19b..93ee35f4d5d 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index db1ab0457c7..79e9a43e96f 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index f6054f1fea0..b08e27f1127 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index e5c7e775de3..db336df392c 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 2e3364c4ada..1531a41b607 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index ff13373e01f..660d3f3733c 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index 5c7f7365cfa..7eb8bb8f1ac 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 2c1653e67f3..43f3cd2e2ed 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index a2366a16bcc..9273b924274 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index 38ed0aa7176..fb5f1f99602 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index 3f51dc791ef..61cfe76321a 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index c750ede33b0..b28d8147fb9 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 0c55aec2919..11d0ae3b98e 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 33169158f2c..90615f3cca2 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 8a0b9427784..9a3df7f9fd1 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 97d25ad91c3..30c9ad7bbc0 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2023-12-04 + * Autogenerated on: 2023-12-15 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 0263c3621ac..e976c0681a9 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 22b054ef71a..a0f056eee50 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 5afe1cdadfb..feade5634db 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index a73811bbf33..a9987346408 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 8b42c8b7503..cbdf3677d81 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index fcbc7dfe740..b2567e84331 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 4c383bbae80..78303d714e9 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index a485004088b..8225d5bf86f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 5f97c56a7c3..36a740bb26b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 71800a23450..2fadce8f58f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 200e88dca55..56b398093e8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index d63e289fbac..7e316925332 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index 9f4bc866901..7cf5749d831 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 30e8e39ed46..c2ad691a6db 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index a0575cad799..af27dabb31d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 31aed511f4d..d0e7be2e397 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index 63b1afc96ec..c86d4e49b34 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2023-12-04 + Autogenerated on: 2023-12-15 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From b5045eea5b22a3c945a3a3ff860c3080985327a5 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 20 Dec 2023 12:06:08 +0100 Subject: [PATCH 191/354] Prepare release 2.12.1 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 88d4374e0f9..0dbc47821fd 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 2572f498caf..9e2a29dd451 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index abbb53edf3e..689f4330468 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 3aa9a99212f..ade95955c9b 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 841aa96f57c..480e468ae22 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index c6e630f91e4..3bf4fe7f7b4 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index aed060a2adf..8722652af5a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index b11b2cd5d98..1d95c4801af 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 828b8c37583..028d6cf8fb3 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 71e1178ba0e..41915b70624 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index e296ba4f592..6a519149bc0 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index d7c60394ec9..e6f06256409 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 3166bf65687..3b708836fe1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 617ef5f79a5..56970c9e0a9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index d19c4962810..ef7f5611e5f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 4d1bda4e8b5..605ef67fe0e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index e0d4f2f7293..c58f1007101 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index ec2f9f3f874..37ae7d2a1c6 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 774813d3b36..0c0e0b0d8a4 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 747b775e9d9..821dbc0779e 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 ../pom.xml diff --git a/pom.xml b/pom.xml index 063b5446550..279af548d59 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1-SNAPSHOT + 2.12.1 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.1_dev - 2.12.1_dev - 5.8.1-SNAPSHOT - 2.12.1-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.1-SNAPSHOT + 2.12.1 + 2.12.1 + 5.8.1 + 2.12.1 + 4.12.0 + 2.12.1 0.2.0 From 98f3f05ce90cd8ba62552381770abb3ec7621414 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 20 Dec 2023 12:31:15 +0100 Subject: [PATCH 192/354] Prepare next release 2.12.2-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 3620242af2c..265e72c158e 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 9e2a29dd451..90d4339f302 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 689f4330468..b6c3104bb44 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index ade95955c9b..db92bb3fe27 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 480e468ae22..693f452614d 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 3bf4fe7f7b4..1282dec662d 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 8722652af5a..6df937c20f9 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 1d95c4801af..3256b82216b 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 028d6cf8fb3..2b3005ce736 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 41915b70624..0b7b09f0e50 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 4402b544436..407a2fe5afa 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index e6f06256409..ea8a4f03775 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 3b708836fe1..f7afa167980 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 56970c9e0a9..a584723d321 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index ef7f5611e5f..9e3018c3075 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 605ef67fe0e..4dc58124cbe 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index c58f1007101..63ebff0a728 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 37ae7d2a1c6..8405b936d23 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 0c0e0b0d8a4..32a43076828 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 821dbc0779e..2235e4a9ce8 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index a61fd25104d..8da78d874e3 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.1 + 2.12.2-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.1 - 2.12.1 - 5.8.1 - 2.12.1 - 4.12.0 - 2.12.1 + 2.12.2_dev + 2.12.2_dev + 5.8.2-SNAPSHOT + 2.12.2-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.2-SNAPSHOT 0.2.0 2.11.4 From 7e957cc066d9b5641cf8219116cf72a9c6b20da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 11 Jan 2024 08:25:18 +0100 Subject: [PATCH 193/354] app: update opencga-ext-tools dockerfile, #TASK-5450 --- opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile b/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile index ff1298c64d0..ab261b25c2f 100644 --- a/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile +++ b/opencga-app/app/cloud/docker/opencga-ext-tools/Dockerfile @@ -25,11 +25,11 @@ RUN apt-get update -y && DEBIAN_FRONTEND="noninteractive" TZ="Europe/London" apt WORKDIR /opt/opencga/signature.tools.lib RUN git fetch origin --tags && \ - git checkout tags/v2.4.2 && \ + git checkout tags/v2.4.4 && \ sed -i '/Mmusculus/d' DESCRIPTION && \ sed -i '/Cfamiliaris/d' DESCRIPTION && \ sed -i '/1000genomes/d' DESCRIPTION && \ - R -e 'options(timeout = 300);devtools::install(repos="https://www.stats.bris.ac.uk/R/")' && \ + R -e 'options(timeout = 3600);devtools::install(repos="https://www.stats.bris.ac.uk/R/")' && \ ## Clean up rm -rf /var/lib/apt/lists/* /tmp/* /opt/opencga/signature.tools.lib/.git && \ strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 From 09896024411d23b50e9290522aac3de99648cd0b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 11 Jan 2024 13:13:42 +0100 Subject: [PATCH 194/354] pom: exclude slf4j-simple from azure dependencies #TASK-5404 --- pom.xml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pom.xml b/pom.xml index 8da78d874e3..73f4a916fb3 100644 --- a/pom.xml +++ b/pom.xml @@ -849,6 +849,12 @@ com.microsoft.azure adal4j ${adal4j.version} + + + org.slf4j + slf4j-simple + + com.microsoft.graph @@ -874,11 +880,23 @@ com.microsoft.azure azure-client-runtime ${azure-client.version} + + + org.slf4j + slf4j-simple + + com.microsoft.azure azure-client-authentication ${azure-client.version} + + + org.slf4j + slf4j-simple + + org.apache.httpcomponents @@ -899,6 +917,12 @@ com.microsoft.azure azure-batch ${azure-batch.version} + + + org.slf4j + slf4j-simple + + io.fabric8 @@ -1005,6 +1029,12 @@ azure-storage-blob ${azure-storage-blob.version} ${azure.optional} + + + org.slf4j + slf4j-simple + + com.google.code.findbugs @@ -1040,6 +1070,12 @@ com.microsoft.azure azure ${azure.version} + + + org.slf4j + slf4j-simple + + org.glassfish.jersey.media From 3e90d6736ede77dcab73973f1ea139f4e89ca072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 12 Jan 2024 14:25:04 +0000 Subject: [PATCH 195/354] storage: Fix hbase ssh command execution. Avoid double splitting. #TASK-5452 --- opencga-app/app/misc/scripts/hadoop-ssh.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/opencga-app/app/misc/scripts/hadoop-ssh.sh b/opencga-app/app/misc/scripts/hadoop-ssh.sh index c39152339a9..30141a04074 100755 --- a/opencga-app/app/misc/scripts/hadoop-ssh.sh +++ b/opencga-app/app/misc/scripts/hadoop-ssh.sh @@ -1,45 +1,45 @@ #!/usr/bin/env sh -if [ -z ${HADOOP_SSH_USER} ] ; then +if [ -z "${HADOOP_SSH_USER}" ] ; then echo "Undefined HADOOP_SSH_USER" 1>&2 exit 1 fi -if [ -z ${HADOOP_SSH_HOST} ] ; then +if [ -z "${HADOOP_SSH_HOST}" ] ; then echo "Undefined HADOOP_SSH_HOST" 1>&2 exit 1 fi SSHPASS_CMD= -if [ -z ${SSHPASS} ] ; then +if [ -z "${SSHPASS}" ] ; then # If empty, assume ssh-key exists in the system SSHPASS_CMD="" else # If non zero, use sshpass command - SSHPASS_CMD="sshpass -e" + SSHPASS_CMD="sshpass -e " fi SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=60" -if [ ! -z ${HADOOP_SSH_KEY} ] && [ -f ${HADOOP_SSH_KEY} ] ; then +if [ -n "${HADOOP_SSH_KEY}" ] && [ -f "${HADOOP_SSH_KEY}" ] ; then SSH_OPTS="${SSH_OPTS} -i ${HADOOP_SSH_KEY}" fi echo "Connect to Hadoop edge node ${HADOOP_SSH_USER}@${HADOOP_SSH_HOST}" 1>&2 -echo "${SSHPASS_CMD} ssh ${SSH_OPTS} ${HADOOP_SSH_USER}@${HADOOP_SSH_HOST}" 1>&2 +echo "${SSHPASS_CMD}ssh ${SSH_OPTS} ${HADOOP_SSH_USER}@${HADOOP_SSH_HOST}" 1>&2 # Escape args with single quotes CMD= -for arg in $@ ; do +for arg in "$@" ; do # Escape single quote, if any : # arg=`echo $arg | sed "s/'/'\"'\"'/g"` # aaa'aaa --> 'aaa'"'"'aaa' - arg=`echo $arg | sed "s/'/'\\\\\\''/g"` # aaa'aaa --> 'aaa'\''aaa' + arg=$(echo "$arg" | sed "s/'/'\\\\\\''/g") # aaa'aaa --> 'aaa'\''aaa' CMD="${CMD}'${arg}' " done echo ${CMD} -${SSHPASS_CMD} ssh ${SSH_OPTS} ${HADOOP_SSH_USER}@${HADOOP_SSH_HOST} /bin/bash << EOF +${SSHPASS_CMD} ssh ${SSH_OPTS} "${HADOOP_SSH_USER}@${HADOOP_SSH_HOST}" /bin/bash << EOF export HADOOP_CLASSPATH=${HADOOP_CLASSPATH} export HADOOP_USER_CLASSPATH_FIRST=${HADOOP_USER_CLASSPATH_FIRST} From 56b64e68b021599c5bfe04f5baa6519cecb85e67 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 15 Jan 2024 14:00:20 +0100 Subject: [PATCH 196/354] test-analysis.yml: Update java version to 17 #TASK-5475 --- .github/workflows/test-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index b2b5105877b..6a83e6e556c 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -27,7 +27,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11' + java-version: '17' cache: 'maven' - name: Install dependencies branches run: | From 9eaef09735656f4eaa84a36b0dc76d2f759ef209 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 18 Jan 2024 18:16:51 +0100 Subject: [PATCH 197/354] Copy method getObjectAsJSON to CommandExecutor for be used in enterprise #TASK-5482 --- .../opencga/app/cli/CommandExecutor.java | 99 +++++++++++++++++++ .../executors/OpencgaCommandExecutor.java | 85 +--------------- 2 files changed, 100 insertions(+), 84 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/CommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/CommandExecutor.java index d4877431f35..3b855444adf 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/CommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/CommandExecutor.java @@ -17,16 +17,25 @@ package org.opencb.opencga.app.cli; import com.beust.jcommander.JCommander; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.config.Configurator; +import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.utils.FileUtils; import org.opencb.commons.utils.PrintUtils; +import org.opencb.opencga.app.cli.main.utils.CommandLineUtils; import org.opencb.opencga.app.cli.session.SessionManager; import org.opencb.opencga.client.config.ClientConfiguration; import org.opencb.opencga.client.exceptions.ClientException; +import org.opencb.opencga.client.rest.OpenCGAClient; import org.opencb.opencga.core.config.Configuration; import org.opencb.opencga.core.config.storage.StorageConfiguration; +import org.opencb.opencga.core.response.RestResponse; +import org.opencb.opencga.server.generator.models.RestCategory; +import org.opencb.opencga.server.generator.models.RestEndpoint; +import org.opencb.opencga.server.generator.models.RestParameter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,6 +45,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; /** * Created by imedina on 19/04/16. @@ -281,6 +291,95 @@ public CommandExecutor setSessionManager(SessionManager sessionManager) { return this; } + + public String getObjectAsJSON(String objectCategory, String objectPath, OpenCGAClient openCGAClient) throws Exception { + StringBuilder jsonInString = new StringBuilder("\n"); + try { + ObjectMap queryParams = new ObjectMap(); + queryParams.putIfNotEmpty("category", objectCategory); + RestResponse response = openCGAClient.getMetaClient().api(queryParams); + ObjectMapper jsonObjectMapper = new ObjectMapper(); + for (List list : response.getResponses().get(0).getResults()) { + List categories = jsonObjectMapper.convertValue(list, new TypeReference>() {}); + for (RestCategory category : categories) { + for (RestEndpoint endpoint : category.getEndpoints()) { + if (objectPath.equals(endpoint.getPath())) { + boolean enc = false; + for (RestParameter parameter : endpoint.getParameters()) { + //jsonInString += parameter.getName()+":"+parameter.getAllowedValues()+"\n"; + if (parameter.getData() != null) { + enc = true; + jsonInString.append(printBody(parameter.getData(), "")); + } + } + if (!enc) { + jsonInString.append("No model available"); + } + // + } + } + } + } + } catch (Exception e) { + jsonInString = new StringBuilder("Data model not found."); + CommandLineUtils.error(e); + } + return jsonInString.toString(); + } + + private String printBody(List data, String tabs) { + String res = ""; + res += "{\n"; + String tab = " " + tabs; + for (RestParameter parameter : data) { + if (parameter.getData() == null) { + res += printParameter(parameter, tab); + } else { + res += tab + parameter.getName() + "\"" + ": [" + printBody(parameter.getData(), tab) + "],\n"; + } + } + res += tabs + "}"; + return res; + + } + + private String printParameter(RestParameter parameter, String tab) { + + return tab + "\"" + parameter.getName() + "\"" + ":" + printParameterValue(parameter) + ",\n"; + } + + private String printParameterValue(RestParameter parameter) { + + if(!StringUtils.isEmpty(parameter.getAllowedValues())){ + return parameter.getAllowedValues().replace(" ", "|"); + } + switch (parameter.getType()) { + case "Boolean": + case "java.lang.Boolean": + return "false"; + case "Long": + case "Float": + case "Double": + case "Integer": + case "int": + case "double": + case "float": + case "long": + return "0"; + case "List": + return "[\"\"]"; + case "Date": + return "\"dd/mm/yyyy\""; + case "Map": + return "{\"key\": \"value\"}"; + case "String": + return "\"\""; + default: + return "\"-\""; + } + } + + public Logger getLogger() { return logger; } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java index 8f935c36ff8..72f9bdd0e8c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OpencgaCommandExecutor.java @@ -225,90 +225,7 @@ public OpencgaCommandExecutor setOpenCGAClient(OpenCGAClient openCGAClient) { } public String getObjectAsJSON(String objectCategory, String objectPath) throws Exception { - StringBuilder jsonInString = new StringBuilder("\n"); - try { - ObjectMap queryParams = new ObjectMap(); - queryParams.putIfNotEmpty("category", objectCategory); - RestResponse response = openCGAClient.getMetaClient().api(queryParams); - ObjectMapper jsonObjectMapper = new ObjectMapper(); - for (List list : response.getResponses().get(0).getResults()) { - List categories = jsonObjectMapper.convertValue(list, new TypeReference>() {}); - for (RestCategory category : categories) { - for (RestEndpoint endpoint : category.getEndpoints()) { - if (objectPath.equals(endpoint.getPath())) { - boolean enc = false; - for (RestParameter parameter : endpoint.getParameters()) { - //jsonInString += parameter.getName()+":"+parameter.getAllowedValues()+"\n"; - if (parameter.getData() != null) { - enc = true; - jsonInString.append(printBody(parameter.getData(), "")); - } - } - if (!enc) { - jsonInString.append("No model available"); - } - // - } - } - } - } - } catch (Exception e) { - jsonInString = new StringBuilder("Data model not found."); - CommandLineUtils.error(e); - } - return jsonInString.toString(); - } - - private String printBody(List data, String tabs) { - String res = ""; - res += "{\n"; - String tab = " " + tabs; - for (RestParameter parameter : data) { - if (parameter.getData() == null) { - res += printParameter(parameter, tab); - } else { - res += tab + parameter.getName() + "\"" + ": [" + printBody(parameter.getData(), tab) + "],\n"; - } - } - res += tabs + "}"; - return res; - - } - - private String printParameter(RestParameter parameter, String tab) { - - return tab + "\"" + parameter.getName() + "\"" + ":" + printParameterValue(parameter) + ",\n"; - } - - private String printParameterValue(RestParameter parameter) { - - if(!StringUtils.isEmpty(parameter.getAllowedValues())){ - return parameter.getAllowedValues().replace(" ", "|"); - } - switch (parameter.getType()) { - case "Boolean": - case "java.lang.Boolean": - return "false"; - case "Long": - case "Float": - case "Double": - case "Integer": - case "int": - case "double": - case "float": - case "long": - return "0"; - case "List": - return "[\"\"]"; - case "Date": - return "\"dd/mm/yyyy\""; - case "Map": - return "{\"key\": \"value\"}"; - case "String": - return "\"\""; - default: - return "\"-\""; - } + return super.getObjectAsJSON(objectCategory, objectPath, openCGAClient); } private boolean isNumeric(String type) { From 3f1c8f8b575b3f19d7951aedd809f5ba68a53670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Fri, 19 Jan 2024 12:07:32 +0100 Subject: [PATCH 198/354] app: update the content of the resource README file, #TASK-5501 --- opencga-app/app/analysis/resources/README | 57 ++--------------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/opencga-app/app/analysis/resources/README b/opencga-app/app/analysis/resources/README index fa335694428..ed41c2e6f38 100644 --- a/opencga-app/app/analysis/resources/README +++ b/opencga-app/app/analysis/resources/README @@ -1,55 +1,6 @@ README - -In this folder, users should store external files to be used by some OpenCGA analysis. - -1) roleInCancer.txt[.gz] - -This file is used by interpretation clinical analysis, e.g., Tiering and TEAM analysis. - -It stores those genes which contain mutations that have been casually implicated in cancer. This information can be downloaded -from the Cancer Gene Census (CGC) at https://cancer.sanger.ac.uk/census - -The file consists of two tab-separated columns: the first one contains the gene name, and the second, the role in cancer, i.e.: oncogne, -TSG, fusion. In addition, lines starting with # are considered comments and will be ignored. - -Sample of a roleInCancer file: - -#Gene name Role in Cancer -A1CF oncogene -ABI1 TSG, fusion -ABL1 oncogene, fusion -ABL2 oncogene, fusion -ACKR3 oncogene, fusion -ACSL3 fusion -... -... - - -2) actionableVariants_xxx.txt[.gz] where xxx = assembly, e.g.: grch37 - -This file is used by interpretation clinical analysis, e.g., TEAM analysis. - -It stores variants that were identified as clinically actionable variants. The file consists of the following twelve tab-separated columns: - - Chromosome - - Start - - Stop - - Reference allele - - Alternate allele - - dbSNP ID - - ClinVar Variant ID - - HGVS - - Phenotype list - - Clinical significance - - Review status - - Submitter categories - -In addition, lines starting with # are considered comments and will be ignored. - -Sample fo an actionableVariants file: - -#Chromosome Start Stop ReferenceAllele AlternateAllele dbSNP ID ClinVar Variant ID hgvs PhenotypeList ClinicalSignificance ReviewStatus SubmitterCategories -2 47702269 47702269 C T rs28929483 1753 NM_000251.2(MSH2):c.1865C>T (p.Pro622Leu) Hereditary cancer-predisposing syndrome;Hereditary nonpolyposis colon cancer;Lynch syndrome;Lynch syndrome I Pathogenic reviewed by expert panel 3 -2 47657020 47657020 C T rs63751108 1755 NM_000251.2(MSH2):c.1216C>T (p.Arg406Ter) Carcinoma of colon;Hereditary cancer-predisposing syndrome;Hereditary nonpolyposis colon cancer;Lynch syndrome;Lynch syndrome I;not provided Pathogenic reviewed by expert panel 3 -... -... +This directory is designated for OpenCGA analyses to download the necessary external data. +For instance, during the first Exomiser analysis, the files '2109_hg38.zip' and '2109_phenotype.zip' will be downloaded +from the OpenCGA analysis URL and stored in the 'exomiser' folder within this directory. Subsequent Exomiser analyses will +then access this folder to read these files. From 0b8ca91200a5b457887744f8ff44b4d89858ccf1 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 23 Jan 2024 19:40:16 +0100 Subject: [PATCH 199/354] Added workaround for sonar --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 73f4a916fb3..4be2bab2ecb 100644 --- a/pom.xml +++ b/pom.xml @@ -146,6 +146,12 @@ 2.5-20081211 2.23.0 + + true From 8bc93c2102a64e3aa9a7fd0bde3dd6a2a1d58260 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 25 Jan 2024 14:08:08 +0100 Subject: [PATCH 200/354] pom: Update maven war plugin to 3.4.0 and add lombok dependency #TASK-5475 --- opencga-server/pom.xml | 1 - pom.xml | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 1d95c4801af..1f0d99c6362 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -252,7 +252,6 @@ maven-war-plugin - 2.6 ${opencga.war.name} "a/b/" + * "a/b/c/" ----> "a/b/" + * "p.txt" ----> "" + * @param strPath Path to the file or folder. + * @return the path of the parent folder. + */ + public static String getParentPath(String strPath) { + Path path = Paths.get(strPath); + Path parent = path.getParent(); + if (parent != null) { + return parent + "/"; + } else { + return ""; + } + } + + /** + * Given a path, it will return all the possible parent paths. + * Example: + * "a/b/c.txt" ---- ["", "a/", "a/b/", "a/b/c.txt"] + * "a/b/c/" ---- ["", "a/", "a/b/", "a/b/c/"] + * "p.txt" ---- ["", "p.txt"] + * "" ---- [""] + * @param filePath Path provided. + * @return A list containing all the parent paths including {@param filePath}. + */ + public static List calculateAllPossiblePaths(String filePath) { + if (StringUtils.isEmpty(filePath) || "/".equals(filePath)) { + return Collections.singletonList(""); + } + StringBuilder pathBuilder = new StringBuilder(); + String[] split = filePath.split("/"); + List paths = new ArrayList<>(split.length + 1); + paths.add(""); //Add study root folder + //Add intermediate folders + //Do not add the last split, could be a file or a folder.. + //Depending on this, it could end with '/' or not. + for (int i = 0; i < split.length - 1; i++) { + String f = split[i]; + pathBuilder = new StringBuilder(pathBuilder.toString()).append(f).append("/"); + paths.add(pathBuilder.toString()); + } + paths.add(filePath); //Add the file path + return paths; + } + + /** + * Calculate the corresponding URI for the {@param path}. + * + * @param path Path to which we need to associate the URI. + * @param parentFolder File corresponding to the folder under which the path will live. + * @param type File type. + * @return the corresponding URI for the path. + * @throws URISyntaxException if the uriStr is incorrect. + */ + public static URI getFileUri(String path, File parentFolder, File.Type type) throws URISyntaxException { + //Relative path to the existing parent + String relativePath = Paths.get(parentFolder.getPath()).relativize(Paths.get(path)).toString(); + if (path.endsWith("/") && !relativePath.endsWith("/")) { + relativePath += "/"; + } + + String uriStr = Paths.get(parentFolder.getUri().getPath()).resolve(relativePath).toString(); + + if (type.equals(File.Type.DIRECTORY)) { + return UriUtils.createDirectoryUri(uriStr); + } else { + return UriUtils.createUri(uriStr); + } + } + + /** + * Get the filename given the path {@param path}. + * @param path Path of the file. + * @return the file or directory name. + */ + public static String getFileName(String path) { + if (StringUtils.isEmpty(path)) { + return "."; + } + return Paths.get(path).getFileName().toString(); + } + + /** + * Get the file id corresponding to the file {@param path}. + * + * @param path File path. + * @return File id. + */ + public static String getFileId(String path) { + return StringUtils.replace(path, "/", ":"); + } + + } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/FileMetadataReader.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/FileMetadataReader.java index 8a51691706f..82bebabb5aa 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/FileMetadataReader.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/FileMetadataReader.java @@ -75,7 +75,17 @@ public void addMetadataInformation(String studyId, File file) throws CatalogExce file.setFormat(updateParams.getFormat() != null ? updateParams.getFormat() : file.getFormat()); file.setAttributes(updateParams.getAttributes() != null ? updateParams.getAttributes() : file.getAttributes()); file.setSampleIds(updateParams.getSampleIds() != null ? updateParams.getSampleIds() : file.getSampleIds()); - file.setSize(updateParams.getSize() != null ? updateParams.getSize() : file.getSize()); + + IOManager ioManager; + try { + ioManager = catalogManager.getIoManagerFactory().get(file.getUri().getScheme()); + } catch (IOException e) { + throw CatalogIOException.ioManagerException(file.getUri(), e); + } + final long fileSize = ioManager.getFileSize(file.getUri()); + if (fileSize != file.getSize()) { + file.setSize(fileSize); + } } public File updateMetadataInformation(String studyId, File file, String token) throws CatalogException { @@ -214,17 +224,6 @@ private FileUpdateParams extractMetadataInformation(String studyId, File file) t } } - IOManager ioManager; - try { - ioManager = catalogManager.getIoManagerFactory().get(file.getUri().getScheme()); - } catch (IOException e) { - throw CatalogIOException.ioManagerException(file.getUri(), e); - } - final long fileSize = ioManager.getFileSize(file.getUri()); - if (fileSize != file.getSize()) { - updateParams.setSize(fileSize); - } - return updateParams; } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/AuditMongoDBAdaptorTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/AuditMongoDBAdaptorTest.java index 214791bed40..3a2cf146184 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/AuditMongoDBAdaptorTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/AuditMongoDBAdaptorTest.java @@ -25,6 +25,7 @@ import org.opencb.commons.datastore.mongodb.MongoDBConfiguration; import org.opencb.commons.datastore.mongodb.MongoDataStore; import org.opencb.commons.datastore.mongodb.MongoDataStoreManager; +import org.opencb.opencga.catalog.io.IOManagerFactory; import org.opencb.opencga.core.models.audit.AuditRecord; import org.opencb.opencga.catalog.db.api.AuditDBAdaptor; import org.opencb.opencga.catalog.utils.UuidUtils; @@ -77,7 +78,7 @@ public void beforeClass() throws Exception { MongoDataStore db = mongoManager.get(database); db.getDb().drop(); - auditDbAdaptor = new MongoDBAdaptorFactory(configuration).getCatalogAuditDbAdaptor(); + auditDbAdaptor = new MongoDBAdaptorFactory(configuration, new IOManagerFactory()).getCatalogAuditDbAdaptor(); } @Test diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptorTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptorTest.java index 4321ec735ee..0c2dda0a32e 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptorTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptorTest.java @@ -181,30 +181,6 @@ public void modifyFileTest() throws CatalogDBException, IOException, CatalogPara assertEquals(file.getStats(), new LinkedHashMap()); } - @Test - public void renameFileTest() throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { - String newName = "newFile.bam"; - String parentPath = "data/"; - long fileId = catalogFileDBAdaptor.getId(user3.getProjects().get(0).getStudies().get(0).getUid(), "data/file.vcf"); - System.out.println(catalogFileDBAdaptor.rename(fileId, parentPath + newName, "", null)); - - File file = catalogFileDBAdaptor.get(fileId, null).first(); - assertEquals(file.getName(), newName); - assertEquals(file.getPath(), parentPath + newName); - - try { - catalogFileDBAdaptor.rename(-1, "noFile", "", null); - fail("error: expected \"file not found\"exception"); - } catch (CatalogDBException e) { - System.out.println("correct exception: " + e); - } - - long folderId = catalogFileDBAdaptor.getId(user3.getProjects().get(0).getStudies().get(0).getUid(), "data/"); - String folderName = "folderName"; - catalogFileDBAdaptor.rename(folderId, folderName, "", null); - assertTrue(catalogFileDBAdaptor.get(fileId, null).first().getPath().equals(folderName + "/" + newName)); - } - @Test public void includeFields() throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { DataResult fileDataResult = catalogFileDBAdaptor.get(7, diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptorTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptorTest.java index ee8d9848e20..e88aeb2a0af 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptorTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptorTest.java @@ -38,6 +38,7 @@ import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; +import org.opencb.opencga.catalog.io.IOManagerFactory; import org.opencb.opencga.core.common.PasswordUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.Admin; @@ -126,7 +127,7 @@ public void before() throws IOException, CatalogException { .setAlgorithm("HS256") .setSecretKey(PasswordUtils.getStrongRandomPassword(JwtManager.SECRET_KEY_MIN_LENGTH)) ); - catalogDBAdaptor = new MongoDBAdaptorFactory(configuration); + catalogDBAdaptor = new MongoDBAdaptorFactory(configuration, new IOManagerFactory()); catalogUserDBAdaptor = catalogDBAdaptor.getCatalogUserDBAdaptor(); catalogStudyDBAdaptor = catalogDBAdaptor.getCatalogStudyDBAdaptor(); catalogProjectDBAdaptor = catalogDBAdaptor.getCatalogProjectDbAdaptor(); diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerExternalResource.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerExternalResource.java index 2e79d7a0151..e717f074fe0 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerExternalResource.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerExternalResource.java @@ -27,6 +27,7 @@ import org.opencb.opencga.catalog.auth.authentication.JwtManager; import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.io.IOManagerFactory; import org.opencb.opencga.core.common.PasswordUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.common.UriUtils; @@ -132,7 +133,7 @@ public ObjectMapper generateNewObjectMapper() { } public static void clearCatalog(Configuration configuration) throws CatalogException, URISyntaxException { - try (MongoDBAdaptorFactory dbAdaptorFactory = new MongoDBAdaptorFactory(configuration)) { + try (MongoDBAdaptorFactory dbAdaptorFactory = new MongoDBAdaptorFactory(configuration, new IOManagerFactory())) { for (String collection : MongoDBAdaptorFactory.COLLECTIONS_LIST) { dbAdaptorFactory.getMongoDataStore().getCollection(collection).remove(new Document(), QueryOptions.empty()); } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java index c6c8dc91c61..a0517b1294a 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java @@ -31,7 +31,10 @@ import org.opencb.opencga.catalog.db.api.FileDBAdaptor; import org.opencb.opencga.catalog.db.api.SampleDBAdaptor; import org.opencb.opencga.catalog.db.api.StudyDBAdaptor; -import org.opencb.opencga.catalog.exceptions.*; +import org.opencb.opencga.catalog.exceptions.CatalogAuthorizationException; +import org.opencb.opencga.catalog.exceptions.CatalogDBException; +import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.exceptions.CatalogIOException; import org.opencb.opencga.catalog.io.IOManager; import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.catalog.utils.ParamUtils; @@ -62,7 +65,8 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import static org.hamcrest.CoreMatchers.*; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.*; /** @@ -649,42 +653,131 @@ public void testLinkFilePassingNoDirectoryPath() throws CatalogException, URISyn } @Test - public void changeNameTest() throws CatalogException { - // Link VCF file. This VCF file will automatically create sample NA19600 - String vcfFile = getClass().getResource("/biofiles/variant-test-file.vcf.gz").getFile(); - catalogManager.getFileManager().link(studyFqn, new FileLinkParams(vcfFile, "data/", "", "", null, null, null, null, null), true, token); + public void testMoveFiles() throws CatalogException { + // Generate data set + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.DIRECTORY).setPath("A/B/C/D/"), true, token); + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.FILE).setPath("A/B/C/hello.txt").setContent("test"), false, token); + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.FILE).setPath("A/B/C/hello2.txt").setContent("test"), false, token); + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.FILE).setPath("A/B/C/D/hello.txt").setContent("test"), false, token); + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.FILE).setPath("A/B/C/D/hello2.txt").setContent("test"), false, token); + catalogManager.getFileManager().create(studyFqn, new FileCreateParams().setType(File.Type.FILE).setPath("A/B/C/D/hello3.txt").setContent("test"), false, token); + + catalogManager.getSampleManager().create(studyFqn, new Sample().setId("sam1"), QueryOptions.empty(), token); + catalogManager.getSampleManager().create(studyFqn, new Sample().setId("sam2"), QueryOptions.empty(), token); + catalogManager.getSampleManager().create(studyFqn, new Sample().setId("sam3"), QueryOptions.empty(), token); + + Map fileMap = new HashMap<>(); + File file = catalogManager.getFileManager().update(studyFqn, "A/B/C/hello.txt", new FileUpdateParams().setSampleIds(Arrays.asList("sam1", "sam3")), INCLUDE_RESULT, token).first(); + fileMap.put(file.getUid(), file); + file = catalogManager.getFileManager().update(studyFqn, "A/B/C/hello2.txt", new FileUpdateParams().setSampleIds(Collections.singletonList("sam1")), INCLUDE_RESULT, token).first(); + fileMap.put(file.getUid(), file); + file = catalogManager.getFileManager().update(studyFqn, "A/B/C/D/hello.txt", new FileUpdateParams().setSampleIds(Arrays.asList("sam2", "sam3")), INCLUDE_RESULT, token).first(); + fileMap.put(file.getUid(), file); + file = catalogManager.getFileManager().update(studyFqn, "A/B/C/D/hello2.txt", new FileUpdateParams().setSampleIds(Collections.singletonList("sam2")), INCLUDE_RESULT, token).first(); + fileMap.put(file.getUid(), file); + file = catalogManager.getFileManager().update(studyFqn, "A/B/C/D/hello3.txt", new FileUpdateParams().setSampleIds(Collections.singletonList("sam3")), INCLUDE_RESULT, token).first(); + fileMap.put(file.getUid(), file); + + Map sampleVersionMap = new HashMap<>(); + sampleVersionMap.put("sam1", 3); + sampleVersionMap.put("sam2", 3); + sampleVersionMap.put("sam3", 4); + + OpenCGAResult sampleResults = catalogManager.getSampleManager().get(studyFqn, Arrays.asList("sam1", "sam2", "sam3"), QueryOptions.empty(), token); + assertEquals(3, sampleResults.getNumResults()); + for (Sample sample : sampleResults.getResults()) { + assertEquals(sampleVersionMap.get(sample.getId()).intValue(), sample.getVersion()); + List fileList = new ArrayList<>(); + for (File tmpFile : fileMap.values()) { + if (tmpFile.getSampleIds().contains(sample.getId())) { + fileList.add(tmpFile.getId()); + } + } + assertArrayEquals(fileList.toArray(), sample.getFileIds().toArray()); + } - Query query = new Query(SampleDBAdaptor.QueryParams.FILE_IDS.key(), "variant-test-file.vcf.gz"); - QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, SampleDBAdaptor.QueryParams.FILE_IDS.key()); - OpenCGAResult sampleResult = catalogManager.getSampleManager().search(studyFqn, query, options, token); - assertEquals(4, sampleResult.getNumResults()); - for (Sample sample : sampleResult.getResults()) { - assertEquals(1, sample.getFileIds().size()); - assertEquals("data:variant-test-file.vcf.gz", sample.getFileIds().get(0)); - assertEquals(1, sample.getVersion()); + // Expected path after moving (not yet moved) + CatalogException catalogException = assertThrows(CatalogException.class, () -> catalogManager.getFileManager().get(studyFqn, Arrays.asList("A/C/D", "A/C/hello.txt", "A/C/hello2.txt", "A/C/D/hello.txt", "A/C/D/hello2.txt", "A/C/D/hello3.txt"), FileManager.INCLUDE_FILE_URI_PATH, token)); + assertTrue(catalogException.getMessage().contains("not found")); + + // Path before moving + OpenCGAResult beforeResult = catalogManager.getFileManager().get(studyFqn, Arrays.asList("A/B/C/D/", "A/B/C/hello.txt", "A/B/C/hello2.txt", "A/B/C/D/hello.txt", "A/B/C/D/hello2.txt", "A/B/C/D/hello3.txt"), QueryOptions.empty(), token); + assertEquals(6, beforeResult.getNumResults()); + for (File tmpFile : beforeResult.getResults()) { + assertNotNull(tmpFile.getUri()); + assertTrue(Files.exists(Paths.get(tmpFile.getUri()))); + if (fileMap.containsKey(tmpFile.getUid())) { + File ffile = fileMap.get(tmpFile.getUid()); + System.out.println("Checking samples for file '" + tmpFile.getPath() + "'"); + assertEquals(ffile.getSampleIds().size(), tmpFile.getSampleIds().size()); + assertArrayEquals(ffile.getSampleIds().toArray(), tmpFile.getSampleIds().toArray()); + } } - // Rename file - FileUpdateParams updateParams = new FileUpdateParams().setName("variant_test.vcf.gz"); - catalogManager.getFileManager().update(studyFqn, "variant-test-file.vcf.gz", updateParams, null, token); + // Move folder + catalogManager.getFileManager().move(studyFqn, "A/B/C/", "A/C/", QueryOptions.empty(), token); + + // Path before moving + catalogException = assertThrows(CatalogException.class, () -> catalogManager.getFileManager().get(studyFqn, Arrays.asList("A/B/C/D/", "A/B/C/hello.txt", "A/B/C/hello2.txt", "A/B/C/D/hello.txt", "A/B/C/D/hello2.txt", "A/B/C/D/hello3.txt"), FileManager.INCLUDE_FILE_URI_PATH, token)); + assertTrue(catalogException.getMessage().contains("not found")); + + Map afterMoveFileMap = new HashMap<>(); + + // Path after moving + OpenCGAResult afterResult = catalogManager.getFileManager().get(studyFqn, Arrays.asList("A/C/D/", "A/C/hello.txt", "A/C/hello2.txt", "A/C/D/hello.txt", "A/C/D/hello2.txt", "A/C/D/hello3.txt"), QueryOptions.empty(), token); + assertEquals(6, afterResult.getNumResults()); + for (int i = 0; i < afterResult.getResults().size(); i++) { + File beforeMoving = beforeResult.getResults().get(i); + File afterMoving = afterResult.getResults().get(i); + assertNotNull(afterMoving.getUri()); + assertNotEquals("Found same URI. File/folder should have been moved", afterMoving.getUri(), beforeMoving.getUri()); + assertTrue(Files.exists(Paths.get(afterMoving.getUri()))); + assertTrue(Files.notExists(Paths.get(beforeMoving.getUri()))); + + if (fileMap.containsKey(afterMoving.getUid())) { + File ffile = fileMap.get(afterMoving.getUid()); + System.out.println("Checking samples for file '" + afterMoving.getPath() + "'"); + assertEquals(ffile.getSampleIds().size(), afterMoving.getSampleIds().size()); + assertArrayEquals(ffile.getSampleIds().toArray(), afterMoving.getSampleIds().toArray()); + afterMoveFileMap.put(afterMoving.getUid(), afterMoving); + } + } - assertThrows("not found", CatalogException.class, () -> catalogManager.getFileManager().get(studyFqn, "variant-test-file.vcf.gz", null, token)); - File file = catalogManager.getFileManager().get(studyFqn, updateParams.getName(), FileManager.INCLUDE_FILE_URI_PATH, token).first(); - assertEquals("data:" + updateParams.getName(), file.getId()); - assertEquals("data/" + updateParams.getName(), file.getPath()); - assertEquals(updateParams.getName(), file.getName()); + // Check modifications in sample + sampleResults = catalogManager.getSampleManager().get(studyFqn, Arrays.asList("sam1", "sam2", "sam3"), QueryOptions.empty(), token); + assertEquals(3, sampleResults.getNumResults()); + for (Sample sample : sampleResults.getResults()) { + assertEquals(sampleVersionMap.get(sample.getId()).intValue() + 1, sample.getVersion()); + List fileList = new ArrayList<>(); + for (File tmpFile : afterMoveFileMap.values()) { + if (tmpFile.getSampleIds().contains(sample.getId())) { + fileList.add(tmpFile.getId()); + } + } + assertArrayEquals(fileList.toArray(), sample.getFileIds().toArray()); + } - sampleResult = catalogManager.getSampleManager().search(studyFqn, query, options, token); - assertEquals(0, sampleResult.getNumResults()); + // Attempt to move folder to folder in use + CatalogDBException catalogDBException = assertThrows(CatalogDBException.class, () -> catalogManager.getFileManager().move(studyFqn, "A/C/", "A/B/", QueryOptions.empty(), token)); + assertTrue(catalogDBException.getMessage().contains("exists")); - query = new Query(SampleDBAdaptor.QueryParams.FILE_IDS.key(), updateParams.getName()); - sampleResult = catalogManager.getSampleManager().search(studyFqn, query, options, token); - assertEquals(4, sampleResult.getNumResults()); - for (Sample sample : sampleResult.getResults()) { - assertEquals(1, sample.getFileIds().size()); - assertEquals("data:" + updateParams.getName(), sample.getFileIds().get(0)); - assertEquals(2, sample.getVersion()); - } + // Rename file + catalogManager.getFileManager().move(studyFqn, "A/C/D/hello3.txt", "A/C/D/otherName.txt", QueryOptions.empty(), token); + assertThrows(CatalogException.class, () -> catalogManager.getFileManager().get(studyFqn, "A/C/D/hello3.txt", QueryOptions.empty(), token)); + file = catalogManager.getFileManager().get(studyFqn, "A/C/D/otherName.txt", QueryOptions.empty(), token).first(); + assertTrue(file.getId().endsWith(":otherName.txt")); + assertTrue(file.getPath().endsWith("/otherName.txt")); + assertTrue(file.getUri().toString().endsWith("/otherName.txt")); + assertEquals("otherName.txt", file.getName()); + assertTrue(Files.exists(Paths.get(file.getUri()))); + // Check samples + assertEquals(1, file.getSampleIds().size()); + assertTrue(file.getSampleIds().contains("sam3")); + + Sample sample3 = catalogManager.getSampleManager().get(studyFqn, "sam3", QueryOptions.empty(), token).first(); + assertEquals(6, sample3.getVersion()); + assertEquals(3, sample3.getFileIds().size()); + assertTrue(sample3.getFileIds().contains(file.getId())); } @Test @@ -1394,44 +1487,6 @@ public void testGetTreeViewMoreThanOneFile() throws CatalogException { assertEquals(2, fileTree.getNumResults()); } - @Test - public void renameFileTest() throws CatalogException { - DataResult queryResult1 = fileManager.create(studyFqn, new FileCreateParams() - .setPath("data/file.txt") - .setType(File.Type.FILE) - .setContent(RandomStringUtils.randomAlphanumeric(200)), - true, token); - assertEquals(1, queryResult1.getNumResults()); - - DataResult queryResult = fileManager.create(studyFqn, new FileCreateParams() - .setPath("data/nested/folder/file2.txt") - .setType(File.Type.FILE) - .setContent(RandomStringUtils.randomAlphanumeric(200)), - true, token); - assertEquals(1, queryResult.getNumResults()); - - fileManager.rename(studyFqn, "data/nested/", "nested2", token); - Set paths = fileManager.search(studyFqn, new Query(), new QueryOptions(), token) - .getResults() - .stream().map(File::getPath).collect(Collectors.toSet()); - - assertTrue(paths.contains("data/nested2/")); - assertFalse(paths.contains("data/nested/")); - assertTrue(paths.contains("data/nested2/folder/")); - assertTrue(paths.contains("data/nested2/folder/file2.txt")); - assertTrue(paths.contains("data/file.txt")); - - fileManager.rename(studyFqn, "data/", "Data", token); - paths = fileManager.search(studyFqn, new Query(), new QueryOptions(), token).getResults() - .stream().map(File::getPath).collect(Collectors.toSet()); - - assertTrue(paths.contains("Data/")); - assertTrue(paths.contains("Data/file.txt")); - assertTrue(paths.contains("Data/nested2/")); - assertTrue(paths.contains("Data/nested2/folder/")); - assertTrue(paths.contains("Data/nested2/folder/file2.txt")); - } - @Test public void getFileIdByString() throws CatalogException { StudyAclParams aclParams = new StudyAclParams("", "analyst"); @@ -1455,28 +1510,6 @@ public void getFileIdByString() throws CatalogException { System.out.println(fileId); } - @Test - public void renameFileEmptyName() throws CatalogException { - thrown.expect(CatalogParameterException.class); - thrown.expectMessage(containsString("null or empty")); - fileManager.rename(studyFqn, "data/", "", token); - } - - @Test - public void renameFileSlashInName() throws CatalogException { - thrown.expect(CatalogParameterException.class); - fileManager.rename(studyFqn, "data/", "my/folder", token); - } - - @Test - public void renameFileAlreadyExists() throws CatalogException { - fileManager.createFolder(studyFqn, "analysis/", false, "", new QueryOptions(), - token); - thrown.expect(CatalogException.class); - thrown.expectMessage("already exists"); - fileManager.rename(studyFqn, "data/", "analysis", token); - } - @Test public void searchFileTest() throws CatalogException { Query query; diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/migration/MigrationManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/migration/MigrationManagerTest.java index 102bc501caa..2f688a81fba 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/migration/MigrationManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/migration/MigrationManagerTest.java @@ -131,7 +131,8 @@ protected void run() throws Exception { @Before public void setUp() throws Exception { super.setUp(); - try (MongoDBAdaptorFactory mongoDBAdaptorFactory = new MongoDBAdaptorFactory(catalogManager.getConfiguration())) { + try (MongoDBAdaptorFactory mongoDBAdaptorFactory = new MongoDBAdaptorFactory(catalogManager.getConfiguration(), + catalogManager.getIoManagerFactory())) { mongoDBAdaptorFactory.getMongoDataStore() .getCollection(MongoDBAdaptorFactory.MIGRATION_COLLECTION) .remove(new Document(), new QueryOptions(MongoDBCollection.MULTI, true)); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/Enums.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/Enums.java index 764a07b409c..c26bfe647a0 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/Enums.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/Enums.java @@ -168,6 +168,7 @@ public enum Action { GREP, TREE, DOWNLOAD_AND_REGISTER, + MOVE, MOVE_AND_REGISTER, VISIT, diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileMoveParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileMoveParams.java new file mode 100644 index 00000000000..2ab407a02ef --- /dev/null +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileMoveParams.java @@ -0,0 +1,18 @@ +package org.opencb.opencga.core.models.file; + +public class FileMoveParams { + + private String path; + + public FileMoveParams() { + } + + public String getPath() { + return path; + } + + public FileMoveParams setPath(String path) { + this.path = path; + return this; + } +} diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileUpdateParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileUpdateParams.java index 38e6d7ad04a..4dc06f9898f 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileUpdateParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/FileUpdateParams.java @@ -30,14 +30,12 @@ public class FileUpdateParams { - private String name; private String description; private String creationDate; private String modificationDate; private List sampleIds; - private String checksum; private File.Format format; private File.Bioformat bioformat; private Software software; @@ -47,8 +45,6 @@ public class FileUpdateParams { private List relatedFiles; - private Long size; - private StatusParams status; private List annotationSets; private FileQualityControl qualityControl; @@ -58,24 +54,21 @@ public class FileUpdateParams { public FileUpdateParams() { } - public FileUpdateParams(String name, String description, String creationDate, String modificationDate, List sampleIds, - String checksum, File.Format format, File.Bioformat bioformat, Software software, FileExperiment experiment, - List tags, SmallFileInternal internal, Long size, List relatedFiles, + public FileUpdateParams(String description, String creationDate, String modificationDate, List sampleIds, + File.Format format, File.Bioformat bioformat, Software software, FileExperiment experiment, + List tags, SmallFileInternal internal, List relatedFiles, StatusParams status, List annotationSets, FileQualityControl qualityControl, Map stats, Map attributes) { - this.name = name; this.description = description; this.creationDate = creationDate; this.modificationDate = modificationDate; this.sampleIds = sampleIds; - this.checksum = checksum; this.format = format; this.bioformat = bioformat; this.software = software; this.experiment = experiment; this.tags = tags; this.internal = internal; - this.size = size; this.relatedFiles = relatedFiles; this.status = status; this.annotationSets = annotationSets; @@ -103,12 +96,10 @@ public ObjectMap getUpdateMap() throws JsonProcessingException { @Override public String toString() { final StringBuilder sb = new StringBuilder("FileUpdateParams{"); - sb.append("name='").append(name).append('\''); - sb.append(", description='").append(description).append('\''); + sb.append("description='").append(description).append('\''); sb.append(", creationDate='").append(creationDate).append('\''); sb.append(", modificationDate='").append(modificationDate).append('\''); sb.append(", sampleIds=").append(sampleIds); - sb.append(", checksum='").append(checksum).append('\''); sb.append(", format=").append(format); sb.append(", bioformat=").append(bioformat); sb.append(", software=").append(software); @@ -116,7 +107,6 @@ public String toString() { sb.append(", tags=").append(tags); sb.append(", internal=").append(internal); sb.append(", relatedFiles=").append(relatedFiles); - sb.append(", size=").append(size); sb.append(", status=").append(status); sb.append(", annotationSets=").append(annotationSets); sb.append(", qualityControl=").append(qualityControl); @@ -126,15 +116,6 @@ public String toString() { return sb.toString(); } - public String getName() { - return name; - } - - public FileUpdateParams setName(String name) { - this.name = name; - return this; - } - public String getDescription() { return description; } @@ -171,15 +152,6 @@ public FileUpdateParams setSampleIds(List sampleIds) { return this; } - public String getChecksum() { - return checksum; - } - - public FileUpdateParams setChecksum(String checksum) { - this.checksum = checksum; - return this; - } - public File.Format getFormat() { return format; } @@ -234,15 +206,6 @@ public FileUpdateParams setExperiment(FileExperiment experiment) { return this; } - public Long getSize() { - return size; - } - - public FileUpdateParams setSize(Long size) { - this.size = size; - return this; - } - public List getRelatedFiles() { return relatedFiles; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/ExecutionResult.java b/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/ExecutionResult.java index 92c394ec25b..3d73c2e81dd 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/ExecutionResult.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/tools/result/ExecutionResult.java @@ -33,7 +33,6 @@ public class ExecutionResult { description = FieldConstants.GENERIC_ID_DESCRIPTION) private String id; - @DataField(id = "executor", indexed = true, description = FieldConstants.EXECUTION_RESULT_EXECUTION_INFO) private ExecutorInfo executor; @@ -50,7 +49,6 @@ public class ExecutionResult { description = FieldConstants.EXECUTION_RESULT_STATUS) private Status status; - @DataField(id = "externalFiles", indexed = true, description = FieldConstants.EXECUTION_RESULT_EXTERNAL_FILES) private List externalFiles; diff --git a/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java b/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java index 06af4d5d50a..a617f0049b0 100644 --- a/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java +++ b/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java @@ -16,13 +16,15 @@ package org.opencb.opencga.core.config; +import org.apache.commons.lang3.StringUtils; import org.junit.Test; import org.junit.experimental.categories.Category; import org.opencb.opencga.core.testclassification.duration.ShortTests; -import java.io.*; -import java.net.URL; -import java.nio.charset.Charset; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; /** @@ -31,6 +33,67 @@ @Category(ShortTests.class) public class ConfigurationTest { + @Test + public void test() { + String path1 = "a/b/c.txt"; + String path2 = "a/b/c/"; + String path3 = "p.txt"; + + System.out.println(path1 + " ---- " + getParentPath(path1)); + System.out.println(path2 + " ---- " + getParentPath(path2)); + System.out.println(path3 + " ---- " + getParentPath(path3)); + + System.out.println(path1 + " ---- " + calculateAllPossiblePaths(path1)); + System.out.println(path2 + " ---- " + calculateAllPossiblePaths(path2)); + System.out.println(path3 + " ---- " + calculateAllPossiblePaths(path3)); + System.out.println("'' ---- " + calculateAllPossiblePaths("")); + + System.out.println(path1 + " ---- " + getFileName(path1)); + System.out.println(path2 + " ---- " + getFileName(path2)); + System.out.println(path3 + " ---- " + getFileName(path3)); + System.out.println("'' ---- " + getFileName("")); + + } + + String getParentPath(String strPath) { + Path path = Paths.get(strPath); + Path parent = path.getParent(); + if (parent != null) { + return parent.toString() + "/"; + } else { + return ""; + } + } + + String getFileName(String strPath) { + if (StringUtils.isEmpty(strPath)) { + return "."; + } + return Paths.get(strPath).getFileName().toString(); + } + + public static List calculateAllPossiblePaths(String filePath) { + if (StringUtils.isEmpty(filePath) || "/".equals(filePath)) { + return Collections.singletonList(""); + } + StringBuilder pathBuilder = new StringBuilder(); + String[] split = filePath.split("/"); + List paths = new ArrayList<>(split.length + 1); + paths.add(""); //Add study root folder + //Add intermediate folders + //Do not add the last split, could be a file or a folder.. + //Depending on this, it could end with '/' or not. + for (int i = 0; i < split.length - 1; i++) { + String f = split[i]; + System.out.println(f); + pathBuilder = new StringBuilder(pathBuilder.toString()).append(f).append("/"); + paths.add(pathBuilder.toString()); + } + paths.add(filePath); //Add the file path + return paths; + } + + @Test public void testDefault() { Configuration configuration = new Configuration(); diff --git a/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/MonitorParentDaemon.java b/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/MonitorParentDaemon.java index 8fcd7a59c18..247b7a81534 100644 --- a/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/MonitorParentDaemon.java +++ b/opencga-master/src/main/java/org/opencb/opencga/master/monitor/daemons/MonitorParentDaemon.java @@ -50,7 +50,7 @@ public MonitorParentDaemon(int interval, String token, CatalogManager catalogMan this.catalogManager = catalogManager; this.token = token; logger = LoggerFactory.getLogger(this.getClass()); - dbAdaptorFactory = new MongoDBAdaptorFactory(catalogManager.getConfiguration()); + dbAdaptorFactory = new MongoDBAdaptorFactory(catalogManager.getConfiguration(), catalogManager.getIoManagerFactory()); ExecutorFactory executorFactory = new ExecutorFactory(catalogManager.getConfiguration()); this.batchExecutor = executorFactory.getExecutor(); } diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/rest/FileWSServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/rest/FileWSServer.java index 3c030b9ce64..893a4fea3d8 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/rest/FileWSServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/rest/FileWSServer.java @@ -575,6 +575,27 @@ public Response updatePOST( } } + @POST + @Path("/{file}/move") + @ApiOperation(value = "Move file to a different path", response = File.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = QueryOptions.INCLUDE, value = ParamConstants.INCLUDE_DESCRIPTION, + dataType = "string", paramType = "query"), + @ApiImplicitParam(name = QueryOptions.EXCLUDE, value = ParamConstants.EXCLUDE_DESCRIPTION, + dataType = "string", paramType = "query") + }) + public Response move( + @ApiParam(value = "File id, UUID or name.") @PathParam(value = "file") String fileIdStr, + @ApiParam(value = ParamConstants.STUDY_DESCRIPTION) @QueryParam(ParamConstants.STUDY_PARAM) String studyStr, + @ApiParam(name = "body", value = "Parameters to modify", required = true) FileMoveParams moveParams) { + try { + DataResult queryResult = fileManager.move(studyStr, fileIdStr, moveParams.getPath(), queryOptions, token); + return createOkResponse(queryResult); + } catch (Exception e) { + return createErrorResponse(e); + } + } + // @JsonIgnoreProperties({"status"}) // public static class FileUpdateParams extends org.opencb.opencga.core.models.file.FileUpdateParams { // } From c54477d199e0a06814f41ea365b83d98fe8474f5 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 8 Mar 2024 16:41:32 +0100 Subject: [PATCH 236/354] Prepare cicd release --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7fccc7fa3f..0481b386dca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: uses: opencb/java-common-libs/.github/workflows/deploy-docker-hub-workflow.yml@develop needs: build with: - cli: python3 ./build/cloud/docker/docker-build.py push --images base,init + cli: python3 ./build/cloud/docker/docker-build.py push --images base,init --tag ${{ needs.build.outputs.version }} secrets: inherit deploy-python: From b1c1b13cd03364afc1e14165ac31c33289f6a791 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 8 Mar 2024 17:10:14 +0100 Subject: [PATCH 237/354] Prepare release 2.12.3 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 9e67e5abd6d..2f37a252831 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 9014be55b89..469a78da211 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 37ccba9b126..45841f053b8 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index c02fc16f87f..f83bc38566c 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index daaefd9783c..c940323e6c3 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 4359b28eb39..d604a47f8a7 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index f8336b9cafc..b73a4997bde 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 624520ae185..cc283eec5b3 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 45e1d70baf2..2ac713e617f 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 6753e6b9b76..a7165736683 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 60f8935f9c5..de4c0fa391f 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0f3aa20292b..57b93f43638 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index f26f95ba4e2..187bcf1ebca 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index a8fc767bcd1..3d9770ca8b6 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 2bdf0c2524f..1dcdfd8806f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 54adedea682..a2f013cecee 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 6e3ad65ac21..dfcc535c552 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 53215221e7d..7fa16cd7e44 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 4f6b1923191..1b9aa4d14f1 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index e655e693e56..9e45f063d59 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 ../pom.xml diff --git a/pom.xml b/pom.xml index 6333c20566b..d87ec40c887 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3-SNAPSHOT + 2.12.3 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.3_dev - 2.12.3_dev - 5.8.3-SNAPSHOT - 2.12.2-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.3-SNAPSHOT + 2.12.3 + 2.12.3 + 5.8.2 + 2.12.1 + 4.12.0 + 2.12.3 0.2.0 2.11.4 From 85ff3e4d4059afe3c7b1a5fbba9c43fbadd8b6ae Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 8 Mar 2024 17:12:37 +0100 Subject: [PATCH 238/354] Prepare next release 2.12.4-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 2f37a252831..8f1dbb61469 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 469a78da211..3daac8c0301 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 45841f053b8..7a4dd21139b 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index f83bc38566c..35402c7c932 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index c940323e6c3..3ae7d4f552b 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index d604a47f8a7..7d949bb6f58 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index b73a4997bde..4df3d66a007 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index cc283eec5b3..326718f8022 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 2ac713e617f..2823f273f28 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index a7165736683..cc328a5fdd8 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index de4c0fa391f..00bf4226afd 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 57b93f43638..453935bf26c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 187bcf1ebca..9df46c71579 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 3d9770ca8b6..64a1da9403f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 1dcdfd8806f..b1eae85ecec 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index a2f013cecee..164bbcc0560 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index dfcc535c552..6e0196b0eb8 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 7fa16cd7e44..9ec6f2f1ab3 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 1b9aa4d14f1..0c2ccaae662 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 9e45f063d59..469922d6d88 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index d87ec40c887..6421b21012a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.3 + 2.12.4-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.3 - 2.12.3 - 5.8.2 - 2.12.1 - 4.12.0 - 2.12.3 + 2.12.4_dev + 2.12.4_dev + 5.8.3-SNAPSHOT + 2.12.2-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.4-SNAPSHOT 0.2.0 2.11.4 From 060c26fe6a43b1db8c9fa6203866622f60a3456d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 14 Mar 2024 09:29:45 +0100 Subject: [PATCH 239/354] analysis: improve alignment and coverage index by taking into account the blob storage behaviour #TASK-5858 --- .../alignment/AlignmentCoverageAnalysis.java | 16 +++++++++------- .../alignment/AlignmentIndexOperation.java | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java index 2712d22b8f3..b089541591a 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java @@ -168,20 +168,22 @@ protected void run() throws Exception { + ") was not create, please, check log files."); } - // Try to copy the BW file into the BAM file directory + // Try to move the BW file into the BAM file directory + boolean moveSuccessful = false; Path targetPath = Paths.get(bamCatalogFile.getUri()).getParent().resolve(bwPath.getFileName()); try { - Files.move(bwPath, targetPath); + Path movedPath = Files.move(bwPath, targetPath); + moveSuccessful = targetPath.equals(movedPath); } catch (Exception e) { - // Do nothing - logger.info("Moving from {} to {}: {}", bwPath, targetPath, e.getMessage()); + // Log message + logger.info("Error moving the coverage file into the BAM folder {} to {}", bwPath, targetPath, e); } - if (targetPath.toFile().exists()) { + if (moveSuccessful) { bwPath = targetPath; - logger.info("Coverage file was copied into the BAM folder: {}", bwPath); + logger.info("Coverage file was moved into the BAM folder: {}", bwPath); } else { - logger.info("Couldn't copy the coverage file into the BAM folder. The coverage file is in the job folder instead: {}", + logger.info("Couldn't move the coverage file into the BAM folder. The coverage file is in the job folder instead: {}", bwPath); } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java index 5aedd4f1162..a2b0fce9bec 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java @@ -85,20 +85,22 @@ protected void run() throws Exception { throw new ToolException("Something wrong happened when computing index file for '" + inputFile + "'"); } - // Try to copy the BAI file into the BAM file directory + // Try to move the BAI file into the BAM file directory + boolean moveSuccessful = false; Path targetPath = inputPath.getParent().resolve(outputPath.getFileName()); try { - Files.move(outputPath, targetPath); + Path movedPath = Files.move(outputPath, targetPath); + moveSuccessful = targetPath.equals(movedPath); } catch (Exception e) { - // Do nothing - logger.info("Moving from {} to {}: {}", outputPath, targetPath, e.getMessage()); + // Log message + logger.info("Error moving from {} to {}", outputPath, targetPath, e); } - if (targetPath.toFile().exists()) { + if (moveSuccessful) { outputPath = targetPath; - logger.info("Alignment index file was copied into the BAM folder: {}", outputPath); + logger.info("Alignment index file was moved into the BAM folder: {}", outputPath); } else { - logger.info("Couldn't copy the alignment index file into the BAM folder. The index file is in the job folder instead: {}", + logger.info("Couldn't move the alignment index file into the BAM folder. The index file is in the job folder instead: {}", outputPath); } From ed003a5cbf9e23e588d5d61b66c9f96dad3e2b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 19 Mar 2024 16:47:22 +0000 Subject: [PATCH 240/354] storage: Do not use cellbase-client mixin converter. #TASK-5563 --- .../core/variant/io/json/mixin/ConsequenceTypeMixin.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/io/json/mixin/ConsequenceTypeMixin.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/io/json/mixin/ConsequenceTypeMixin.java index ad643f53068..ab4946fc572 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/io/json/mixin/ConsequenceTypeMixin.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/io/json/mixin/ConsequenceTypeMixin.java @@ -4,12 +4,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.util.StdConverter; import org.opencb.biodata.models.variant.avro.ConsequenceType; -import org.opencb.cellbase.client.rest.ParentRestClient; import java.util.List; @JsonDeserialize( - converter = ParentRestClient.ConsequenceTypeMixin.ConsequenceTypeConverter.class + converter = ConsequenceTypeMixin.ConsequenceTypeConverter.class ) public interface ConsequenceTypeMixin { class ConsequenceTypeConverter extends StdConverter { From a37f1b42a3ea0539a60e4162ea9a8dac287b57b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 19 Mar 2024 17:16:04 +0000 Subject: [PATCH 241/354] storage: Accept non-normalized variants when filtering by ID or XREF. #TASK-5877 --- .../variant/query/VariantQueryParser.java | 26 +++++++++++++++++++ .../core/variant/query/VariantQueryUtils.java | 8 ++++++ .../VariantDBAdaptorMultiFileTest.java | 10 +++++++ .../adaptors/VariantDBAdaptorTest.java | 25 +++++++++++++----- .../sample/HBaseVariantSampleDataManager.java | 4 +-- 5 files changed, 65 insertions(+), 8 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index 1564ad0fabf..6481d85c53c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -8,7 +8,9 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.ClinicalSignificance; import org.opencb.biodata.models.variant.avro.VariantType; +import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.models.variant.metadata.VariantFileHeaderComplexLine; +import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.datastore.core.QueryParam; @@ -858,8 +860,17 @@ public static ParsedVariantQuery.VariantQueryXref parseXrefs(Query query) { } } } + } + if (!xrefs.getVariants().isEmpty()) { + List normalizedVariants = normalizeVariants(xrefs.getVariants()); + for (Variant normalizedVariant : normalizedVariants) { + if (!xrefs.getVariants().contains(normalizedVariant)) { + xrefs.getVariants().add(normalizedVariant); + } + } } + if (isValidParam(query, ANNOT_GENE_ROLE_IN_CANER_GENES)) { List thisGenes = query.getAsStringList(ANNOT_GENE_ROLE_IN_CANER_GENES.key()); if (thisGenes.size() != 1 || !thisGenes.get(0).equals(NONE)) { @@ -886,6 +897,21 @@ public static ParsedVariantQuery.VariantQueryXref parseXrefs(Query query) { return xrefs; } + public static Variant normalizeVariant(Variant variant) { + return normalizeVariants(Collections.singletonList(variant)).get(0); + } + + public static List normalizeVariants(List variants) { + VariantNormalizer variantNormalizer = new VariantNormalizer(); + List normalizedVariants; + try { + normalizedVariants = variantNormalizer.normalize(variants, false); + } catch (NonStandardCompliantSampleField e) { + throw VariantQueryException.internalException(e); + } + return normalizedVariants; + } + public static ParsedQuery> parseFreqFilter(Query query, QueryParam queryParam) { return VariantQueryUtils.splitValue(query, queryParam) .map(VariantQueryUtils::parseKeyOpValue) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index 114379c77a9..75703f083d3 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -552,6 +552,14 @@ public static Variant toVariant(String value) { return variant; } + public static Variant toVariant(String variantStr, boolean normalize) { + Variant variant = toVariant(variantStr); + if (normalize && variant != null) { + return VariantQueryParser.normalizeVariant(variant); + } + return variant; + } + public static String[] splitStudyResource(String value) { int idx = value.lastIndexOf(STUDY_RESOURCE_SEPARATOR); if (idx <= 0 || idx == value.length() - 1) { diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java index 9a95ed053e5..8ad47c67c2c 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java @@ -1333,6 +1333,16 @@ public void testSampleData() throws Exception { assertEquals(0, variant.getStudies().get(0).getFiles().size()); } + @Test + public void testSampleDataUnnormalized() throws Exception { + // Check unnormalized queries + Variant variant = variantStorageEngine.getSampleData("1:10352:T:TA", study1, new QueryOptions()).first(); + assertEquals("1:10353:-:A", variant.toString()); + System.out.println("variant = " + variant.toJson()); + assertNotNull(variant.getStudies().get(0).getStats(DEFAULT_COHORT)); + assertEquals(4, variant.getStudies().get(0).getSamples().size()); + assertEquals(4, variant.getStudies().get(0).getFiles().size()); + } @Test public void testCount() throws StorageEngineException { diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java index 1f305574a64..b5bd4b841c3 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java @@ -30,9 +30,7 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.VariantFileMetadata; import org.opencb.biodata.models.variant.avro.*; -import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.models.variant.stats.VariantStats; -import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; @@ -531,11 +529,14 @@ public long filterPopulation(DataResult queryResult, Predicate public void testGetAllVariants_variantId() { int i = 0; List variants = new ArrayList<>(); + Map normalizedVariants = new HashMap<>(); for (Variant variant : allVariants.getResults()) { - if (i++ % 10 == 0) { - if (!variant.isSymbolic()) { - variants.add(variant); - } + if ((i++ % 10) == 0) { + variants.add(variant); + } + OriginalCall call = variant.getStudies().get(0).getFiles().get(0).getCall(); + if (call != null) { + normalizedVariants.put(variant.toString(), call.getVariantId()); } } List result = query(new Query(ID.key(), variants), new QueryOptions()).getResults(); @@ -554,6 +555,18 @@ public void testGetAllVariants_variantId() { } } assertEquals(expectedList, actualList); + + normalizedVariants.forEach((key, value) -> { + System.out.println(key + " = " + value); + }); + List resultNormalized = query(new Query(ID.key(), normalizedVariants.values()).append(INCLUDE_FILE.key(), ALL), new QueryOptions()).getResults(); + assertEquals(normalizedVariants.size(), resultNormalized.size()); + assertTrue(!resultNormalized.isEmpty()); + for (Variant variant : resultNormalized) { + String expected = normalizedVariants.get(variant.toString()); + String actual = variant.getStudies().get(0).getFiles().get(0).getCall().getVariantId(); + assertEquals(expected, actual); + } } @Test diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index 588833cfb6e..cbe7e0880c2 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -26,8 +26,8 @@ import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.PhoenixHelper; -import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory; +import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; import org.opencb.opencga.storage.hadoop.variant.converters.HBaseVariantConverterConfiguration; import org.opencb.opencga.storage.hadoop.variant.converters.VariantRow; import org.opencb.opencga.storage.hadoop.variant.converters.annotation.HBaseToVariantAnnotationConverter; @@ -64,7 +64,7 @@ protected DataResult getSampleData(String variantStr, String study, Que final Variant variant; if (VariantQueryUtils.isVariantId(variantStr)) { - variant = new Variant(variantStr); + variant = VariantQueryUtils.toVariant(variantStr, true); } else { variant = cellBaseUtils.getVariant(variantStr); } From 16d0a626478bf54f0f5eee347868a08f8a481ebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 20 Mar 2024 08:37:33 +0000 Subject: [PATCH 242/354] storage: Do return invalid cohort stats #TASK-5876 --- .../core/metadata/VariantStorageMetadataManager.java | 5 +++++ .../query/projection/VariantQueryProjectionParser.java | 7 +------ .../adaptors/phoenix/VariantPhoenixSchemaManager.java | 2 +- .../hadoop/variant/analysis/julie/JulieToolDriver.java | 1 + .../search/SecondaryIndexPendingVariantsDescriptor.java | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index cf4477bb4f1..ce037e948dc 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -1135,6 +1135,11 @@ public Iterable getInvalidCohorts(int studyId) { return () -> Iterators.filter(cohortIterator(studyId), CohortMetadata::isInvalid); } + public Iterable getCalculatedOrInvalidCohorts(int studyId) { + return () -> Iterators.filter(cohortIterator(studyId), + cohortMetadata -> cohortMetadata.isStatsReady() || cohortMetadata.isInvalid()); + } + public CohortMetadata setSamplesToCohort(int studyId, String cohortName, Collection samples) throws StorageEngineException { return updateCohortSamples(studyId, cohortName, samples, false); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 371903a7626..0860aa87a4d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -125,14 +125,9 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti for (VariantQueryProjection.StudyVariantQueryProjection study : studies.values()) { int studyId = study.getId(); List cohorts = new LinkedList<>(); - for (CohortMetadata cohort : metadataManager.getCalculatedCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { cohorts.add(cohort.getId()); } -// metadataManager.cohortIterator(studyId).forEachRemaining(cohort -> { -// if (cohort.isReady()/* || cohort.isInvalid()*/) { -// cohorts.add(cohort.getId()); -// } -// }); study.setCohorts(cohorts); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java index 2d1d4c59e04..4ffa3c7aa55 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java @@ -79,7 +79,7 @@ public void registerStudyColumns(int studyId) throws StorageEngineException { registerNewFiles(studyId, new ArrayList<>(metadataManager.getIndexedFiles(studyId))); List cohortIds = new LinkedList<>(); - for (CohortMetadata cohort : metadataManager.getCalculatedCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { cohortIds.add(cohort.getId()); } registerNewCohorts(studyId, cohortIds); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java index 2321e25f6e1..4442bf48927 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java @@ -68,6 +68,7 @@ protected void parseAndValidateParameters() throws IOException { for (Integer studyId : metadataManager.getStudies().values()) { List studyCohorts = new LinkedList<>(); cohorts.put(studyId, studyCohorts); + // Only READY cohort stats are used for JulieTool for (CohortMetadata c : metadataManager.getCalculatedCohorts(studyId)) { studyCohorts.add(c.getId()); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java index 59c55cf8dda..604611ca93c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java @@ -61,7 +61,7 @@ public Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManag scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, INDEX_STUDIES.bytes()); for (Integer studyId : metadataManager.getStudyIds()) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStudyColumn(studyId).bytes()); - for (CohortMetadata cohort : metadataManager.getCalculatedCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStatsColumn(studyId, cohort.getId()).bytes()); } } From 57fbbe1f77e8e21a3bcc41ed2e7bab26f5971c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 25 Mar 2024 09:37:48 +0100 Subject: [PATCH 243/354] tests: add Junit tests, #TASK-5858 --- .../alignment/AlignmentIndexOperation.java | 44 ++--- .../alignment/AlignmentStorageManager.java | 31 ++-- .../opencga/analysis/tools/OpenCgaTool.java | 3 + .../alignment/AlignmentAnalysisTest.java | 159 +++++++++++++++++- .../executors/AlignmentCommandExecutor.java | 8 +- .../options/AlignmentCommandOptions.java | 7 +- .../alignment/AlignmentIndexParams.java | 16 +- 7 files changed, 208 insertions(+), 60 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java index a2b0fce9bec..6f9fdf7bce7 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java @@ -19,26 +19,30 @@ import org.opencb.biodata.tools.alignment.BamManager; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.analysis.tools.OpenCgaTool; +import org.opencb.opencga.analysis.tools.OpenCgaToolScopeStudy; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.alignment.AlignmentIndexParams; +import org.opencb.opencga.core.models.alignment.CoverageIndexParams; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.models.common.InternalStatus; import org.opencb.opencga.core.models.file.*; import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.tools.annotations.Tool; +import org.opencb.opencga.core.tools.annotations.ToolParams; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @Tool(id = AlignmentIndexOperation.ID, resource = Enums.Resource.ALIGNMENT, description = "Index alignment.") -public class AlignmentIndexOperation extends OpenCgaTool { +public class AlignmentIndexOperation extends OpenCgaToolScopeStudy { public static final String ID = "alignment-index-run"; public static final String DESCRIPTION = "Index a given alignment file, e.g., create a .bai file from a .bam file"; - private String study; - private String inputFile; + @ToolParams + protected final AlignmentIndexParams indexParams = new AlignmentIndexParams(); private File inputCatalogFile; private Path inputPath; @@ -50,12 +54,12 @@ protected void check() throws Exception { OpenCGAResult fileResult; try { - fileResult = catalogManager.getFileManager().get(getStudy(), inputFile, QueryOptions.empty(), token); + fileResult = catalogManager.getFileManager().get(getStudy(), indexParams.getFileId(), QueryOptions.empty(), token); } catch (CatalogException e) { - throw new ToolException("Error accessing file '" + inputFile + "' of the study " + study + "'", e); + throw new ToolException("Error accessing file '" + indexParams.getFileId() + "' of the study " + study + "'", e); } if (fileResult.getNumResults() <= 0) { - throw new ToolException("File '" + inputFile + "' not found in study '" + study + "'"); + throw new ToolException("File '" + indexParams.getFileId() + "' not found in study '" + study + "'"); } inputCatalogFile = fileResult.getResults().get(0); @@ -64,7 +68,7 @@ protected void check() throws Exception { // Check if the input file is .bam or .cram if (!filename.endsWith(AlignmentConstants.BAM_EXTENSION) && !filename.endsWith(AlignmentConstants.CRAM_EXTENSION)) { - throw new ToolException("Invalid input alignment file '" + inputFile + "': it must be in BAM or CRAM format"); + throw new ToolException("Invalid input alignment file '" + indexParams.getFileId() + "': it must be in BAM or CRAM format"); } outputPath = getOutDir().resolve(filename + (filename.endsWith(AlignmentConstants.BAM_EXTENSION) @@ -73,6 +77,9 @@ protected void check() throws Exception { @Override protected void run() throws Exception { + setUpStorageEngineExecutor(study); + + logger.info("Running with parameters {}", indexParams); step(ID, () -> { // Compute index if necessary @@ -82,7 +89,7 @@ protected void run() throws Exception { bamManager.close(); if (!outputPath.toFile().exists()) { - throw new ToolException("Something wrong happened when computing index file for '" + inputFile + "'"); + throw new ToolException("Something wrong happened when computing index file for '" + indexParams.getFileId() + "'"); } // Try to move the BAI file into the BAM file directory @@ -105,7 +112,8 @@ protected void run() throws Exception { } // Link generated BAI file and update samples info, related file - File baiCatalogFile = AlignmentAnalysisUtils.linkAndUpdate(inputCatalogFile, outputPath, getJobId(), study, catalogManager, token); + File baiCatalogFile = AlignmentAnalysisUtils.linkAndUpdate(inputCatalogFile, outputPath, getJobId(), study, catalogManager, + token); // Update BAM file internal in order to set the alignment index (BAI) FileInternalAlignmentIndex fileAlignmentIndex = new FileInternalAlignmentIndex(new InternalStatus(InternalStatus.READY), @@ -113,22 +121,4 @@ protected void run() throws Exception { catalogManager.getFileManager().updateFileInternalAlignmentIndex(inputCatalogFile, fileAlignmentIndex, token); }); } - - public String getStudy() { - return study; - } - - public AlignmentIndexOperation setStudy(String study) { - this.study = study; - return this; - } - - public String getInputFile() { - return inputFile; - } - - public AlignmentIndexOperation setInputFile(String inputFile) { - this.inputFile = inputFile; - return this; - } } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java index 2aa314a9fd5..5c267add689 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentStorageManager.java @@ -34,12 +34,16 @@ import org.opencb.opencga.analysis.StorageManager; import org.opencb.opencga.analysis.models.FileInfo; import org.opencb.opencga.analysis.models.StudyInfo; +import org.opencb.opencga.analysis.tools.ToolRunner; import org.opencb.opencga.catalog.db.api.FileDBAdaptor; import org.opencb.opencga.catalog.db.api.ProjectDBAdaptor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.managers.CatalogManager; import org.opencb.opencga.catalog.utils.ParamUtils; +import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.alignment.AlignmentIndexParams; +import org.opencb.opencga.core.models.alignment.CoverageIndexParams; import org.opencb.opencga.core.models.file.File; import org.opencb.opencga.core.models.project.Project; import org.opencb.opencga.core.models.study.Study; @@ -87,21 +91,18 @@ public AlignmentStorageManager(CatalogManager catalogManager, StorageEngineFacto initStatsMap(); } - //------------------------------------------------------------------------- - // INDEX - //------------------------------------------------------------------------- - - public void index(String study, String inputFile, String outdir, String token) throws ToolException { - ObjectMap params = new ObjectMap(); - - AlignmentIndexOperation indexOperation = new AlignmentIndexOperation(); - indexOperation.setUp(null, catalogManager, storageEngineFactory, params, Paths.get(outdir), jobId, token); - - indexOperation.setStudy(study); - indexOperation.setInputFile(inputFile); - - indexOperation.start(); - } +// //------------------------------------------------------------------------- +// // INDEX +// //------------------------------------------------------------------------- +// +// public void index(String study, String inputFile, String outdir, String token) throws ToolException { +// ToolRunner toolRunner = new ToolRunner("", catalogManager, storageEngineFactory); +// +// AlignmentIndexParams params = new AlignmentIndexParams(); +// params.setFileId(inputFile); +// toolRunner.execute(AlignmentIndexOperation.class, params, new ObjectMap(ParamConstants.STUDY_PARAM, study), Paths.get(outdir), +// jobId, token); +// } //------------------------------------------------------------------------- // QUERY diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java index 7769315137b..835a0c92259 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java @@ -317,6 +317,9 @@ private void privateCheck() throws Exception { * @throws Exception if the parameters are not correct */ protected void check() throws Exception { + if (StringUtils.isEmpty(jobId)) { + throw new IllegalArgumentException("Missing job ID"); + } } /** diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/alignment/AlignmentAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/alignment/AlignmentAnalysisTest.java index 71af17f701e..8964c2bf603 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/alignment/AlignmentAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/alignment/AlignmentAnalysisTest.java @@ -16,10 +16,7 @@ package org.opencb.opencga.analysis.alignment; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.*; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -37,8 +34,11 @@ import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.core.exceptions.ToolException; import org.opencb.opencga.core.models.alignment.AlignmentGeneCoverageStatsParams; +import org.opencb.opencga.core.models.alignment.AlignmentIndexParams; +import org.opencb.opencga.core.models.alignment.CoverageIndexParams; import org.opencb.opencga.core.models.file.File; import org.opencb.opencga.core.models.file.FileLinkParams; +import org.opencb.opencga.core.models.file.FileRelatedFile; import org.opencb.opencga.core.models.user.Account; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.storage.core.StorageEngineFactory; @@ -47,9 +47,11 @@ import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageTest; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; +import java.util.Collections; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -252,7 +254,6 @@ public void setUpCatalogManager() throws IOException, CatalogException { // assertEquals(2, individual.getSamples().size()); } - @Test public void geneCoverageStatsTest() throws IOException, ToolException, CatalogException { Path outdir = Paths.get(opencga.createTmpOutdir("_genecoveragestats")); @@ -270,7 +271,7 @@ public void geneCoverageStatsTest() throws IOException, ToolException, CatalogEx String geneName = "BRCA2"; params.setGenes(Arrays.asList(geneName)); - toolRunner.execute(AlignmentGeneCoverageStatsAnalysis.class, params, new ObjectMap(), outdir, null, token); + toolRunner.execute(AlignmentGeneCoverageStatsAnalysis.class, params, new ObjectMap(), outdir, "coverage-job-id", token); bamFile = catalogManager.getFileManager().link(STUDY, new FileLinkParams(bamFilename, "", "", "", null, null, null, null, null), false, token).first(); @@ -278,4 +279,150 @@ public void geneCoverageStatsTest() throws IOException, ToolException, CatalogEx assertEquals(geneName, bamFile.getQualityControl().getCoverage().getGeneCoverageStats().get(0).getGeneName()); assertEquals(10, bamFile.getQualityControl().getCoverage().getGeneCoverageStats().get(0).getStats().size()); } + + @Test + public void testNonReadOnlyAlignmentIndex() throws Exception { + Path nonReadOnlyDir = Paths.get(opencga.createTmpOutdir("_non_readonly_alignment_index")); + Path bamPath = Paths.get(opencga.getResourceUri("biofiles/HG00096.chrom20.small.bam").getPath()); + String bamFilename = "NonReadOnlyAligmentIndex_" + bamPath.getFileName(); + Files.copy(bamPath, nonReadOnlyDir.resolve(bamFilename)); + + File bamFile = catalogManager.getFileManager().link(STUDY, new FileLinkParams(nonReadOnlyDir.resolve(bamFilename).toAbsolutePath().toString(), "non_readonly_alignment_index", "", "", null, null, null, + null, null), true, token).first(); + + // Run alignment index + AlignmentIndexParams params = new AlignmentIndexParams(); + params.setFileId(bamFile.getId()); + Path alignmentIndexOutdir = Paths.get(opencga.createTmpOutdir("_alignment_index")); + toolRunner.execute(AlignmentIndexOperation.class, params, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), alignmentIndexOutdir, "jobId-non-readonly-coverage-index", token); + + // Checking BAI file + Path baiPath = nonReadOnlyDir.resolve(bamFilename + AlignmentConstants.BAI_EXTENSION); + Assert.assertTrue(Files.exists(baiPath)); + + // Checking BAI file is registered in the BAM file internals + File baiFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFilename + AlignmentConstants.BAI_EXTENSION), QueryOptions.empty(), true, token).first(); + bamFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFile.getId()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(baiFile.getId(), bamFile.getInternal().getAlignment().getIndex().getFileId()); + } + + @Test + public void testReadOnlyAlignmentIndex() throws Exception { + Path readOnlyDir = Paths.get(opencga.createTmpOutdir("_readonly_for_alignment_index")); + Path bamPath = Paths.get(opencga.getResourceUri("biofiles/HG00096.chrom20.small.bam").getPath()); + String bamFilename = "ReadOnlyAligmentIndex_" + bamPath.getFileName(); + Files.copy(bamPath, readOnlyDir.resolve(bamFilename)); + + // Make read-only + Runtime.getRuntime().exec("chmod 555 " + readOnlyDir.toAbsolutePath()); + + File bamFile = catalogManager.getFileManager().link(STUDY, new FileLinkParams(readOnlyDir.resolve(bamFilename).toAbsolutePath().toString(), "readonly_alignment_index", "", "", null, null, null, + null, null), true, token).first(); + + // Run alignment index + AlignmentIndexParams params = new AlignmentIndexParams(); + params.setFileId(bamFile.getId()); + Path alignmentIndexOutdir = Paths.get(opencga.createTmpOutdir("_alignment_index")); + toolRunner.execute(AlignmentIndexOperation.class, params, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), alignmentIndexOutdir, "jobId-readonly-coverage-index", token); + + // Checking BAI file + Path baiPath = alignmentIndexOutdir.resolve(bamFilename + AlignmentConstants.BAI_EXTENSION); + Assert.assertTrue(Files.exists(baiPath)); + + // Checking BAI file is registered in the BAM file internals + File baiFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFilename + AlignmentConstants.BAI_EXTENSION), QueryOptions.empty(), true, token).first(); + bamFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFile.getId()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(baiFile.getId(), bamFile.getInternal().getAlignment().getIndex().getFileId()); + + Runtime.getRuntime().exec("chmod 777 " + readOnlyDir.toAbsolutePath()); + } + + @Test + public void testNonReadOnlyCoverageIndex() throws Exception { + Path nonReadOnlyDir = Paths.get(opencga.createTmpOutdir("_non_readonly_for_coverage_index")); + Path bamPath = Paths.get(opencga.getResourceUri("biofiles/HG00096.chrom20.small.bam").getPath()); + String bamFilename = "NonReadOnlyCoverageIndex_" + bamPath.getFileName(); + Files.copy(bamPath, nonReadOnlyDir.resolve(bamFilename)); + + File bamFile = catalogManager.getFileManager().link(STUDY, new FileLinkParams(nonReadOnlyDir.resolve(bamFilename).toAbsolutePath().toString(), "non_readonly_alignment_coverage_index", "", "", null, null, null, + null, null), true, token).first(); + + // Run alignment index + AlignmentIndexParams indexParams = new AlignmentIndexParams(); + indexParams.setFileId(bamFile.getId()); + Path alignmentIndexOutdir = Paths.get(opencga.createTmpOutdir("_alignment_index")); + toolRunner.execute(AlignmentIndexOperation.class, indexParams, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), alignmentIndexOutdir, "jobId-non-readonly-alignment-coverage-index", token); + + // Checking BAI file + Path baiPath = nonReadOnlyDir.resolve(bamFilename + AlignmentConstants.BAI_EXTENSION); + Assert.assertTrue(Files.exists(baiPath)); + + // Checking BAI file is registered in the BAM file internals + File baiFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFilename + AlignmentConstants.BAI_EXTENSION), QueryOptions.empty(), true, token).first(); + bamFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFile.getId()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(baiFile.getId(), bamFile.getInternal().getAlignment().getIndex().getFileId()); + + // Run coverage index + CoverageIndexParams coverageOarams = new CoverageIndexParams(); + coverageOarams.setBamFileId(bamFile.getId()); + coverageOarams.setBaiFileId(baiFile.getId()); + Path coverageIndexOutdir = Paths.get(opencga.createTmpOutdir("_coverage_index")); + toolRunner.execute(AlignmentCoverageAnalysis.class, coverageOarams, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), coverageIndexOutdir, "jobId-readonly-coverage-index", token); + + // Checking BW file + Path bwPath = nonReadOnlyDir.resolve(bamFilename + AlignmentConstants.BIGWIG_EXTENSION); + Assert.assertTrue(Files.exists(bwPath)); + + // Checking BAM file is registered in the related files of BW file + File bwFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bwPath.getFileName().toString()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(bamFile.getId(), bwFile.getRelatedFiles().get(0).getFile().getId()); + Assert.assertEquals(FileRelatedFile.Relation.ALIGNMENT, bwFile.getRelatedFiles().get(0).getRelation()); + } + + @Test + public void testReadOnlyCoverageIndex() throws Exception { + Path readOnlyDir = Paths.get(opencga.createTmpOutdir("_readonly_for_coverage_index")); + Path bamPath = Paths.get(opencga.getResourceUri("biofiles/HG00096.chrom20.small.bam").getPath()); + String bamFilename = "ReadOnlyCoverageIndex_" + bamPath.getFileName(); + Files.copy(bamPath, readOnlyDir.resolve(bamFilename)); + + File bamFile = catalogManager.getFileManager().link(STUDY, new FileLinkParams(readOnlyDir.resolve(bamFilename).toAbsolutePath().toString(), "readonly_alignment_coverage_index", "", "", null, null, null, + null, null), true, token).first(); + + // Run alignment index + AlignmentIndexParams indexParams = new AlignmentIndexParams(); + indexParams.setFileId(bamFile.getId()); + Path alignmentIndexOutdir = Paths.get(opencga.createTmpOutdir("_alignment_index")); + toolRunner.execute(AlignmentIndexOperation.class, indexParams, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), alignmentIndexOutdir, "jobId-readonly-coverage-index", token); + + // Checking BAI file + Path baiPath = readOnlyDir.resolve(bamFilename + AlignmentConstants.BAI_EXTENSION); + Assert.assertTrue(Files.exists(baiPath)); + + // Checking BAI file is registered in the BAM file internals + File baiFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFilename + AlignmentConstants.BAI_EXTENSION), QueryOptions.empty(), true, token).first(); + bamFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bamFile.getId()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(baiFile.getId(), bamFile.getInternal().getAlignment().getIndex().getFileId()); + + // Make read-only + Runtime.getRuntime().exec("chmod 555 " + readOnlyDir.toAbsolutePath()); + + // Run coverage index + CoverageIndexParams coverageOarams = new CoverageIndexParams(); + coverageOarams.setBamFileId(bamFile.getId()); + coverageOarams.setBaiFileId(baiFile.getId()); + Path coverageIndexOutdir = Paths.get(opencga.createTmpOutdir("_coverage_index")); + toolRunner.execute(AlignmentCoverageAnalysis.class, coverageOarams, new ObjectMap(ParamConstants.STUDY_PARAM, STUDY), coverageIndexOutdir, "jobId-readonly-coverage-index", token); + + // Checking BW file + Path bwPath = coverageIndexOutdir.resolve(bamFilename + AlignmentConstants.BIGWIG_EXTENSION); + Assert.assertTrue(Files.exists(bwPath)); + + // Checking BAM file is registered in the related files of BW file + File bwFile = catalogManager.getFileManager().get(STUDY, Collections.singletonList(bwPath.getFileName().toString()), QueryOptions.empty(), true, token).first(); + Assert.assertEquals(bamFile.getId(), bwFile.getRelatedFiles().get(0).getFile().getId()); + Assert.assertEquals(FileRelatedFile.Relation.ALIGNMENT, bwFile.getRelatedFiles().get(0).getRelation()); + + Runtime.getRuntime().exec("chmod 777 " + readOnlyDir.toAbsolutePath()); + } } \ No newline at end of file diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/AlignmentCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/AlignmentCommandExecutor.java index 07ed1b36c1f..436fff7b061 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/AlignmentCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/AlignmentCommandExecutor.java @@ -18,6 +18,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.opencga.analysis.alignment.AlignmentCoverageAnalysis; +import org.opencb.opencga.analysis.alignment.AlignmentIndexOperation; import org.opencb.opencga.analysis.alignment.AlignmentStorageManager; import org.opencb.opencga.analysis.alignment.qc.AlignmentGeneCoverageStatsAnalysis; import org.opencb.opencga.analysis.alignment.qc.AlignmentQcAnalysis; @@ -119,9 +120,12 @@ public void execute() throws Exception { private void indexRun() throws Exception { AlignmentCommandOptions.IndexAlignmentCommandOptions cliOptions = alignmentCommandOptions.indexAlignmentCommandOptions; - AlignmentStorageManager alignmentManager = new AlignmentStorageManager(catalogManager, storageEngineFactory, alignmentCommandOptions.internalJobOptions.jobId); + ObjectMap params = new AlignmentIndexParams( + cliOptions.fileId, + cliOptions.overwrite + ).toObjectMap(cliOptions.commonOptions.params).append(ParamConstants.STUDY_PARAM, cliOptions.study); - alignmentManager.index(cliOptions.study, cliOptions.file, cliOptions.outdir, cliOptions.commonOptions.token); + toolRunner.execute(AlignmentIndexOperation.class, params, Paths.get(cliOptions.outdir), jobId, token); } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/AlignmentCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/AlignmentCommandOptions.java index 628988b9302..3834c5ee4c5 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/AlignmentCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/AlignmentCommandOptions.java @@ -104,8 +104,11 @@ public class IndexAlignmentCommandOptions extends GeneralCliOptions.StudyOption @ParametersDelegate public Object internalJobOptions = internalJobOptionsObject; - @Parameter(names = {"--file"}, description = FILE_ID_DESCRIPTION, required = true, arity = 1) - public String file; + @Parameter(names = {"--file-id"}, description = FILE_ID_DESCRIPTION, required = true, arity = 1) + public String fileId; + + @Parameter(names = {"--overwrite"}, description = "Force to overwrite the alignment index file", arity = 0) + public boolean overwrite; @Parameter(names = {"-o", "--outdir"}, description = OUTPUT_DIRECTORY_DESCRIPTION) public String outdir; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java index b4e4dc87607..741d089c2f0 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java @@ -5,32 +5,32 @@ public class AlignmentIndexParams extends ToolParams { public static final String DESCRIPTION = "Alignment index params"; - private String file; + private String fileId; private boolean overwrite; public AlignmentIndexParams() { } - public AlignmentIndexParams(String file, boolean overwrite) { - this.file = file; + public AlignmentIndexParams(String fileId, boolean overwrite) { + this.fileId = fileId; this.overwrite = overwrite; } @Override public String toString() { final StringBuilder sb = new StringBuilder("AlignmentIndexParams{"); - sb.append("file='").append(file).append('\''); + sb.append("fileId='").append(fileId).append('\''); sb.append(", overwrite=").append(overwrite); sb.append('}'); return sb.toString(); } - public String getFile() { - return file; + public String getFileId() { + return fileId; } - public AlignmentIndexParams setFile(String file) { - this.file = file; + public AlignmentIndexParams setFileId(String fileId) { + this.fileId = fileId; return this; } From c550fd3c1810b1c160e3e9ef44037d555edb4c07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 25 Mar 2024 10:25:26 +0100 Subject: [PATCH 244/354] client: generate clients, #TASK-5858 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisAlignmentCommandExecutor.java | 2 +- .../executors/SamplesCommandExecutor.java | 1 + .../AnalysisAlignmentCommandOptions.java | 14 ++++++------- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 20 +++++++++---------- .../src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 4 ++-- .../client/rest/clients/AlignmentClient.java | 4 ++-- .../rest/clients/ClinicalAnalysisClient.java | 4 ++-- .../client/rest/clients/CohortClient.java | 4 ++-- .../rest/clients/DiseasePanelClient.java | 4 ++-- .../client/rest/clients/FamilyClient.java | 4 ++-- .../client/rest/clients/FileClient.java | 4 ++-- .../client/rest/clients/GA4GHClient.java | 4 ++-- .../client/rest/clients/IndividualClient.java | 4 ++-- .../client/rest/clients/JobClient.java | 4 ++-- .../client/rest/clients/MetaClient.java | 4 ++-- .../client/rest/clients/ProjectClient.java | 4 ++-- .../client/rest/clients/SampleClient.java | 4 ++-- .../client/rest/clients/StudyClient.java | 4 ++-- .../client/rest/clients/UserClient.java | 4 ++-- .../client/rest/clients/VariantClient.java | 4 ++-- .../rest/clients/VariantOperationClient.java | 4 ++-- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 4 ++-- .../rest_clients/alignment_client.py | 4 ++-- .../rest_clients/clinical_analysis_client.py | 4 ++-- .../pyopencga/rest_clients/cohort_client.py | 4 ++-- .../rest_clients/disease_panel_client.py | 4 ++-- .../pyopencga/rest_clients/family_client.py | 4 ++-- .../pyopencga/rest_clients/file_client.py | 4 ++-- .../pyopencga/rest_clients/ga4gh_client.py | 4 ++-- .../rest_clients/individual_client.py | 4 ++-- .../pyopencga/rest_clients/job_client.py | 4 ++-- .../pyopencga/rest_clients/meta_client.py | 4 ++-- .../pyopencga/rest_clients/project_client.py | 4 ++-- .../pyopencga/rest_clients/sample_client.py | 4 ++-- .../pyopencga/rest_clients/study_client.py | 4 ++-- .../pyopencga/rest_clients/user_client.py | 4 ++-- .../pyopencga/rest_clients/variant_client.py | 4 ++-- .../rest_clients/variant_operation_client.py | 4 ++-- .../opencga/core/api/FieldConstants.java | 10 ++++++++++ .../alignment/AlignmentIndexParams.java | 5 +++++ .../models/alignment/CoverageIndexParams.java | 9 ++++++++- .../alignment/AlignmentStorageOptions.java | 4 ++-- 78 files changed, 158 insertions(+), 135 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 48db1bde2fd..bc6dce57f25 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-03-25 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index af1660a9e33..227a9a33a29 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-03-25 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java index 217b7421f32..88c7345e9da 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisAlignmentCommandExecutor.java @@ -387,7 +387,7 @@ private RestResponse runIndex() throws Exception { .readValue(new java.io.File(commandOptions.jsonFile), AlignmentIndexParams.class); } else { ObjectMap beanParams = new ObjectMap(); - putNestedIfNotEmpty(beanParams, "file",commandOptions.file, true); + putNestedIfNotEmpty(beanParams, "fileId",commandOptions.fileId, true); putNestedIfNotNull(beanParams, "overwrite",commandOptions.overwrite, true); alignmentIndexParams = JacksonUtils.getDefaultObjectMapper().copy() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java index 7ed949a68a5..328cc9eb556 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java @@ -125,6 +125,7 @@ private RestResponse updateAcl() throws Exception { queryParams.putIfNotEmpty("study", sessionManager.getSession().getCurrentStudy()); } + SampleAclUpdateParams sampleAclUpdateParams = null; if (commandOptions.jsonDataModel) { RestResponse res = new RestResponse<>(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisAlignmentCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisAlignmentCommandOptions.java index cb5e4f77e45..004e650e9c1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisAlignmentCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisAlignmentCommandOptions.java @@ -142,14 +142,14 @@ public class RunCoverageIndexCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--bam-file-id"}, description = "The body web service bamFileId parameter", required = false, arity = 1) + @Parameter(names = {"--bam-file-id"}, description = "BAM file ID.", required = false, arity = 1) public String bamFileId; - @Parameter(names = {"--bai-file-id"}, description = "The body web service baiFileId parameter", required = false, arity = 1) + @Parameter(names = {"--bai-file-id"}, description = "BAI file ID.", required = false, arity = 1) public String baiFileId; - @Parameter(names = {"--window-size"}, description = "The body web service windowSize parameter", required = false, arity = 1) - public Integer windowSize; + @Parameter(names = {"--window-size"}, description = "Window size (i.e., the size of the bins, in bases, for the output of the BIGWIG file).", required = false, arity = 1) + public Integer windowSize = 50; } @@ -387,10 +387,10 @@ public class RunIndexCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--file"}, description = "The body web service file parameter", required = false, arity = 1) - public String file; + @Parameter(names = {"--file-id"}, description = "File ID, (i.e., BAM/CRAM file ID).", required = false, arity = 1) + public String fileId; - @Parameter(names = {"--overwrite"}, description = "The body web service overwrite parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--overwrite"}, description = "Flag to force indexing.", required = false, help = true, arity = 0) public boolean overwrite = false; } diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index c3041969f51..6b3092bf980 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 53cd5d9802c..ff929629b43 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index f9fdb51fe6f..c9fe9d1bedd 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, study, templateId, group, variableSet, studies, members, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, files, members, annotationSet, folder, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, sample, annotationSet, samples, members, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, individual, annotationSet, individuals, members, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, family, annotationSet, families, members, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, cohorts, annotationSet, cohort, members, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretation, interpretations, members, annotationSet, clinicalAnalyses, clinicalAnalysis, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index ecd04d6d74d..ab921c9a324 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -61,7 +61,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, interpretations, members, annotationSet, clinicalAnalyses, clinicalAnalysis, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index b4cbb071860..1c8bfe6a9a4 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohorts, annotationSet, cohort, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 9f965314e0f..b6a81bd9d62 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, family, annotationSet, families, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index fd0ad7f691c..05947f708e9 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, files, members, annotationSet, folder, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index d9d2c5689e4..a22a564ca30 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 72d5e0839dc..284a83342da 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, individual, annotationSet, individuals, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index edfb52fbaff..df7dd2e0b4a 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 730500d7b4a..74bf2d9681b 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 11e89656de2..272fae083ea 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 3d1c5bfb8d3..59ee1588d55 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index ebbcb80dd92..1f2f6982a13 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index c5f0bbd3357..f6280a3164a 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, sample, annotationSet, samples, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index c86c0da79b1..a6e51aefaac 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, study, templateId, group, variableSet, studies, members, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index fb403c674e6..9624cdaf318 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, user, filterId, users, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index d114e5d4882..e03ee6ad6c8 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-03-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index d4fcd4b1d60..8e30b07702a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index c6c8c84fd8b..57d98513e2c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index e4858049e0b..914bdf265e6 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -54,7 +54,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -63,7 +63,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index f136be11310..1226e56b605 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 497e02f5445..52484158482 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 437d6e65255..2c1bb8f333f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 66ae008ab7c..255466ab18d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 5d007b409bd..8f0d7ee9ac8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 67bb7feb715..0ca1523076b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index c4fb407be93..15e72d8b9c2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 4f1873c571c..b51239eb2fd 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 19b3144a06d..af4a142fa29 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index f1e5b7ac798..92f3b0a7b8e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 4a9b4550de8..567bba43ac0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index bbf582a2cc6..ba89f64c209 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index c7f91a4730a..8cba06e41f1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 92f5dd6772d..4be682e046c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 30fe2d2b09b..6aa2ba750f0 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 764a51d164d..4be235b9baa 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 1556652d3d3..51b323a39fe 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 97ef19dcbdf..d39e5ae3b0c 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 52601203a30..c87f942b1ef 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 608c23c087d..be8254f473e 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index f09d5c4562f..ff20b03147f 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index b656c0bd696..4c77f6aeee8 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index d8bd896ae88..a6c6c726d37 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 9489c82bc7a..57511d22c7f 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index b5636ff6a5e..a1fb0c9c5e5 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index bde7382c84d..60e5da7c399 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 990f3b3b04e..e966c53483a 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 7d443653ad9..1adcc948b35 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 2093a3aadb4..09198885d55 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index c98bccd6bf5..c23df5f611e 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index ad54d4104cf..dcb04858c6c 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-03-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 4a60e9c7e2f..8ed47fe0116 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/admin """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 98b40a3f711..03ef44694c6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 1e4a73902cc..29af296636d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 50af2a865a2..875876ab699 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index e234b2ff148..7be70ca7113 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 4fd32087258..425881e96b0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 22e58ba63be..d96fe998afa 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index b15c6e8bd76..812e44e861b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 3b393328993..f4c36a24698 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 1d5369c4639..a8c09497fba 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 1506926345b..dc6c21f3684 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 338e65d466c..4bf5c4fc14c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index e83e98d3be2..17afff524c7 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 17fda942ec7..e7b18fa58fa 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index f991cf25dae..80c2f376458 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 57cd7a1a9cf..8beb31d9b2d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index b48bb9d8ad4..a98d1fe2e4f 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-03-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/operation """ diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java index d5476e10f60..dffc6bbe11e 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java @@ -485,6 +485,16 @@ public class FieldConstants { public static final String VARIANT_STATS_DESCRIPTION_DESCRIPTION = "Variant stats description."; public static final String VARIANT_STATS_QUERY_DESCRIPTION = "Variant stats query in JSON format."; + // Alignment index parameter descriptions + public static final String ALIGNMENT_INDEX_FILE_ID_DESCRIPTION = "File ID, (i.e., BAM/CRAM file ID)."; + public static final String ALIGNMENT_INDEX_OVERWRITE_DESCRIPTION = "Flag to force indexing."; + + // Coverage index parameter descriptions + public static final String COVERAGE_INDEX_BAM_FILE_ID_DESCRIPTION = "BAM file ID."; + public static final String COVERAGE_INDEX_BAI_FILE_ID_DESCRIPTION = "BAI file ID."; + public static final String COVERAGE_INDEX_OVERWRITE_DESCRIPTION = "Window size (i.e., the size of the bins, in bases, for the output" + + " of the BIGWIG file)."; + // Alignment QC analysis (asample-qc-run) public static final String ALIGNMENT_QC_BAM_FILE_DESCRIPTION = "ID for the BAM file to process."; public static final String ALIGNMENT_QC_SKIP_DESCRIPTION = "To skip any alignment QC metrics use the following keywords (separated by" diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java index 741d089c2f0..43bc73f7931 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/AlignmentIndexParams.java @@ -1,11 +1,16 @@ package org.opencb.opencga.core.models.alignment; +import org.opencb.commons.annotations.DataField; +import org.opencb.opencga.core.api.FieldConstants; import org.opencb.opencga.core.tools.ToolParams; public class AlignmentIndexParams extends ToolParams { public static final String DESCRIPTION = "Alignment index params"; + @DataField(id = "fileId", description = FieldConstants.ALIGNMENT_INDEX_FILE_ID_DESCRIPTION, required = true) private String fileId; + + @DataField(id = "overwrite", description = FieldConstants.ALIGNMENT_INDEX_OVERWRITE_DESCRIPTION) private boolean overwrite; public AlignmentIndexParams() { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/CoverageIndexParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/CoverageIndexParams.java index f655829625d..9ce861660f2 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/CoverageIndexParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/alignment/CoverageIndexParams.java @@ -2,15 +2,22 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import org.opencb.commons.annotations.DataField; +import org.opencb.opencga.core.api.FieldConstants; +import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.tools.ToolParams; public class CoverageIndexParams extends ToolParams { public static final String DESCRIPTION = "Coverage computation parameters"; + @DataField(id = "bamFileId", description = FieldConstants.COVERAGE_INDEX_BAM_FILE_ID_DESCRIPTION, required = true) private String bamFileId; + + @DataField(id = "baiFileId", description = FieldConstants.COVERAGE_INDEX_BAI_FILE_ID_DESCRIPTION) private String baiFileId; - @JsonProperty(defaultValue = "1") + @DataField(id = "windowSize", description = FieldConstants.COVERAGE_INDEX_OVERWRITE_DESCRIPTION, + defaultValue = ParamConstants.COVERAGE_WINDOW_SIZE_DEFAULT) private int windowSize; public CoverageIndexParams() { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/AlignmentStorageOptions.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/AlignmentStorageOptions.java index 672a7f03bca..a137d4c4e0f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/AlignmentStorageOptions.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/AlignmentStorageOptions.java @@ -1,11 +1,11 @@ package org.opencb.opencga.storage.core.alignment; -import org.opencb.biodata.tools.alignment.BamManager; +import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.config.ConfigurationOption; public enum AlignmentStorageOptions implements ConfigurationOption { - BIG_WIG_WINDOWS_SIZE("bigWigWindowsSize", BamManager.DEFAULT_WINDOW_SIZE); + BIG_WIG_WINDOWS_SIZE("bigWigWindowsSize", ParamConstants.COVERAGE_WINDOW_SIZE_DEFAULT); private final String key; private final Object value; From f26c9e8e343aee8f22d2e398722a73f42012130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 25 Mar 2024 15:17:48 +0100 Subject: [PATCH 245/354] core: fix Integer conversion, #TASK-5858 --- .../core/alignment/local/LocalAlignmentStoragePipeline.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/local/LocalAlignmentStoragePipeline.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/local/LocalAlignmentStoragePipeline.java index 009718fcbfb..d45ccbc130c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/local/LocalAlignmentStoragePipeline.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/alignment/local/LocalAlignmentStoragePipeline.java @@ -87,7 +87,7 @@ public URI transform(URI input, URI pedigree, URI output) throws Exception { // 3) Create the BigWig file containing the coverage using the bamCoverage from the DeepTools package Path bwPath = workspace.resolve(path.getFileName() + BamManager.COVERAGE_BIGWIG_EXTENSION); int windowSize = configuration.getInt(AlignmentStorageOptions.BIG_WIG_WINDOWS_SIZE.key(), - AlignmentStorageOptions.BIG_WIG_WINDOWS_SIZE.defaultValue()); + Integer.parseInt(AlignmentStorageOptions.BIG_WIG_WINDOWS_SIZE.defaultValue())); bamManager.calculateBigWigCoverage(bwPath, windowSize); return input; From 1e5f15b67fb6bc76e136a71802f8aee7574652c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 25 Mar 2024 15:23:57 +0100 Subject: [PATCH 246/354] analysis: remove jobID check from OpenCgaTool, #TASK-5858 --- .../analysis/alignment/AlignmentCoverageAnalysis.java | 4 ++++ .../analysis/alignment/AlignmentIndexOperation.java | 10 ++++++++++ .../org/opencb/opencga/analysis/tools/OpenCgaTool.java | 3 --- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java index b089541591a..ce7b82a7dba 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentCoverageAnalysis.java @@ -54,6 +54,10 @@ protected void check() throws Exception { super.check(); // Sanity check + if (StringUtils.isEmpty(getJobId())) { + throw new ToolException("Missing job ID"); + } + if (StringUtils.isEmpty(getStudy())) { throw new ToolException("Missing study when computing alignment coverage"); } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java index 6f9fdf7bce7..0c597a6a8f4 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/alignment/AlignmentIndexOperation.java @@ -16,6 +16,7 @@ package org.opencb.opencga.analysis.alignment; +import org.apache.commons.lang3.StringUtils; import org.opencb.biodata.tools.alignment.BamManager; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.analysis.tools.OpenCgaTool; @@ -52,6 +53,15 @@ public class AlignmentIndexOperation extends OpenCgaToolScopeStudy { protected void check() throws Exception { super.check(); + // Sanity check + if (StringUtils.isEmpty(getJobId())) { + throw new ToolException("Missing job ID"); + } + + if (StringUtils.isEmpty(getStudy())) { + throw new ToolException("Missing study when computing alignment index"); + } + OpenCGAResult fileResult; try { fileResult = catalogManager.getFileManager().get(getStudy(), indexParams.getFileId(), QueryOptions.empty(), token); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java index 835a0c92259..7769315137b 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/tools/OpenCgaTool.java @@ -317,9 +317,6 @@ private void privateCheck() throws Exception { * @throws Exception if the parameters are not correct */ protected void check() throws Exception { - if (StringUtils.isEmpty(jobId)) { - throw new IllegalArgumentException("Missing job ID"); - } } /** From 7756021c9afcab503c694438cfdad97c82b45fff Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 28 Mar 2024 10:15:01 +0100 Subject: [PATCH 247/354] catalog: replace status.name indexes, #TASK-5796 --- .../catalog/FixStatusIndexesMigration.java | 46 +++++++++++++++++++ .../src/main/resources/catalog-indexes.txt | 32 ++++++------- 2 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_4/catalog/FixStatusIndexesMigration.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_4/catalog/FixStatusIndexesMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_4/catalog/FixStatusIndexesMigration.java new file mode 100644 index 00000000000..bce2551a0f5 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_4/catalog/FixStatusIndexesMigration.java @@ -0,0 +1,46 @@ +package org.opencb.opencga.app.migrations.v2_12_4.catalog; + +import org.bson.Document; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.catalog.migration.MigrationTool; + +import java.util.Arrays; + +@Migration(id = "fix_status_indexes" , + description = "Replace 'status.name' indexes for 'status.id'", + version = "2.12.4", + domain = Migration.MigrationDomain.CATALOG, + language = Migration.MigrationLanguage.JAVA, + date = 20240328 +) +public class FixStatusIndexesMigration extends MigrationTool { + + @Override + protected void run() throws Exception { + Document statusIndex = new Document() + .append("status.name", 1) + .append("studyUid", 1); + dropIndex(Arrays.asList(MongoDBAdaptorFactory.JOB_COLLECTION, MongoDBAdaptorFactory.FILE_COLLECTION, + MongoDBAdaptorFactory.SAMPLE_COLLECTION, MongoDBAdaptorFactory.SAMPLE_ARCHIVE_COLLECTION, + MongoDBAdaptorFactory.COHORT_COLLECTION, MongoDBAdaptorFactory.INDIVIDUAL_COLLECTION, + MongoDBAdaptorFactory.INDIVIDUAL_ARCHIVE_COLLECTION, MongoDBAdaptorFactory.FAMILY_COLLECTION, + MongoDBAdaptorFactory.FAMILY_ARCHIVE_COLLECTION, MongoDBAdaptorFactory.PANEL_COLLECTION, + MongoDBAdaptorFactory.PANEL_ARCHIVE_COLLECTION), statusIndex); + + Document internalStatusIndex = new Document() + .append("internal.status.name", 1) + .append("studyUid", 1); + dropIndex(Arrays.asList(MongoDBAdaptorFactory.JOB_COLLECTION, MongoDBAdaptorFactory.FILE_COLLECTION, + MongoDBAdaptorFactory.SAMPLE_COLLECTION, MongoDBAdaptorFactory.SAMPLE_ARCHIVE_COLLECTION, + MongoDBAdaptorFactory.COHORT_COLLECTION, MongoDBAdaptorFactory.INDIVIDUAL_COLLECTION, + MongoDBAdaptorFactory.INDIVIDUAL_ARCHIVE_COLLECTION, MongoDBAdaptorFactory.FAMILY_COLLECTION, + MongoDBAdaptorFactory.FAMILY_ARCHIVE_COLLECTION, MongoDBAdaptorFactory.PANEL_COLLECTION, + MongoDBAdaptorFactory.PANEL_ARCHIVE_COLLECTION, MongoDBAdaptorFactory.CLINICAL_ANALYSIS_COLLECTION, + MongoDBAdaptorFactory.INTERPRETATION_COLLECTION, MongoDBAdaptorFactory.INTERPRETATION_ARCHIVE_COLLECTION), + internalStatusIndex); + + catalogManager.installIndexes(token); + } + +} diff --git a/opencga-catalog/src/main/resources/catalog-indexes.txt b/opencga-catalog/src/main/resources/catalog-indexes.txt index 996eeb67534..4eeafe1f865 100644 --- a/opencga-catalog/src/main/resources/catalog-indexes.txt +++ b/opencga-catalog/src/main/resources/catalog-indexes.txt @@ -25,8 +25,8 @@ {"collections": ["job"], "fields": {"outDir.uid": 1, "studyUid": 1}, "options": {}} {"collections": ["job"], "fields": {"tags": 1, "studyUid": 1}, "options": {}} {"collections": ["job"], "fields": {"visited": 1, "studyUid": 1}, "options": {}} -{"collections": ["job"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["job"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["job"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["job"], "fields": {"internal.status.id": 1, "_priority": 1, "_creationDate": 1}, "options": {}} {"collections": ["job"], "fields": {"_priority": 1, "_creationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["job"], "fields": {"_priority": 1, "studyUid": 1}, "options": {}} {"collections": ["job"], "fields": {"_creationDate": 1, "studyUid": 1}, "options": {}} @@ -53,8 +53,8 @@ {"collections": ["file"], "fields": {"_creationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["file"], "fields": {"_modificationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["file"], "fields": {"jobId": 1, "studyUid": 1}, "options": {}} -{"collections": ["file"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["file"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["file"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["file"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["file"], "fields": {"internal.variant.index.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["file"], "fields": {"studyUid": 1, "_acl": 1}, "options": {}} {"collections": ["file"], "fields": {"studyUid": 1, "release": 1, "_acl": 1}, "options": {}} @@ -92,8 +92,8 @@ {"collections": ["sample", "sample_archive"], "fields": {"_ias.as": 1, "studyUid": 1}, "options": {}} {"collections": ["sample", "sample_archive"], "fields": {"_ias.vs": 1, "studyUid": 1}, "options": {}} {"collections": ["sample", "sample_archive"], "fields": {"_ias.id": 1, "_ias.value": 1, "studyUid": 1}, "options": {}} -{"collections": ["sample", "sample_archive"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["sample", "sample_archive"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["sample", "sample_archive"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["sample", "sample_archive"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["sample", "sample_archive"], "fields": {"internal.rga.status": 1, "studyUid": 1}, "options": {}} {"collections": ["individual", "individual_archive"], "fields": {"uuid": 1, "version": 1}, "options": {"unique": true}} @@ -126,8 +126,8 @@ {"collections": ["individual", "individual_archive"], "fields": {"_ias.as": 1, "studyUid": 1}, "options": {}} {"collections": ["individual", "individual_archive"], "fields": {"_ias.vs": 1, "studyUid": 1}, "options": {}} {"collections": ["individual", "individual_archive"], "fields": {"_ias.id": 1, "_ias.value": 1, "studyUid": 1}, "options": {}} -{"collections": ["individual", "individual_archive"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["individual", "individual_archive"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["individual", "individual_archive"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["individual", "individual_archive"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["cohort"], "fields": {"uuid": 1}, "options": {"unique": true}} {"collections": ["cohort"], "fields": {"uid": 1}, "options": {"unique": true}} @@ -146,8 +146,8 @@ {"collections": ["cohort"], "fields": {"_ias.as": 1, "studyUid": 1}, "options": {}} {"collections": ["cohort"], "fields": {"_ias.vs": 1, "studyUid": 1}, "options": {}} {"collections": ["cohort"], "fields": {"_ias.id": 1, "_ias.value": 1, "studyUid": 1}, "options": {}} -{"collections": ["cohort"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["cohort"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["cohort"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["cohort"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["family", "family_archive"], "fields": {"uuid": 1, "version": 1}, "options": {"unique": true}} {"collections": ["family", "family_archive"], "fields": {"uid": 1, "version": 1}, "options": {"unique": true}} @@ -170,8 +170,8 @@ {"collections": ["family", "family_archive"], "fields": {"_ias.as": 1, "studyUid": 1}, "options": {}} {"collections": ["family", "family_archive"], "fields": {"_ias.vs": 1, "studyUid": 1}, "options": {}} {"collections": ["family", "family_archive"], "fields": {"_ias.id": 1, "_ias.value": 1, "studyUid": 1}, "options": {}} -{"collections": ["family", "family_archive"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} -{"collections": ["family", "family_archive"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["family", "family_archive"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} +{"collections": ["family", "family_archive"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"uuid": 1, "version": 1}, "options": {"unique": true}} {"collections": ["panel", "panel_archive"], "fields": {"uid": 1, "version": 1}, "options": {"unique": true}} @@ -189,11 +189,11 @@ {"collections": ["panel", "panel_archive"], "fields": {"categories.name": 1, "studyUid": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"_creationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"_modificationDate": 1, "studyUid": 1}, "options": {}} -{"collections": ["panel", "panel_archive"], "fields": {"status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["panel", "panel_archive"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"studyUid": 1, "_lastOfVersion": 1, "_acl": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"studyUid": 1, "_releaseFromVersion": 1, "_lastOfRelease": 1}, "options": {}} {"collections": ["panel", "panel_archive"], "fields": {"studyUid": 1, "release": 1, "_acl": 1}, "options": {}} -{"collections": ["panel", "panel_archive"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["panel", "panel_archive"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["clinical"], "fields": {"id": 1, "studyUid": 1}, "options": {"unique": true}} {"collections": ["clinical"], "fields": {"uuid": 1}, "options": {"unique": true}} @@ -219,7 +219,7 @@ {"collections": ["clinical"], "fields": {"_modificationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["clinical"], "fields": {"studyUid": 1, "_acl": 1}, "options": {}} {"collections": ["clinical"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} -{"collections": ["clinical"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["clinical"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"uuid": 1, "version": 1}, "options": {"unique": true}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"uid": 1, "version": 1}, "options": {"unique": true}} @@ -234,7 +234,7 @@ {"collections": ["interpretation", "interpretation_archive"], "fields": {"_creationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"_modificationDate": 1, "studyUid": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"status.id": 1, "studyUid": 1}, "options": {}} -{"collections": ["interpretation", "interpretation_archive"], "fields": {"internal.status.name": 1, "studyUid": 1}, "options": {}} +{"collections": ["interpretation", "interpretation_archive"], "fields": {"internal.status.id": 1, "studyUid": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"studyUid": 1, "_lastOfVersion": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"studyUid": 1, "_releaseFromVersion": 1, "_lastOfRelease": 1}, "options": {}} {"collections": ["interpretation", "interpretation_archive"], "fields": {"studyUid": 1, "release": 1}, "options": {}} From 29e75fe994c7b512387b7765f186a5937f00bbfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 12:32:00 +0200 Subject: [PATCH 248/354] analysis: take into account the clinical analysis type before running the Exomiser analysis; and add JUnit test, #TASK-5603 --- .../ExomiserInterpretationAnalysis.java | 10 +++ .../exomiser/ExomiserWrapperAnalysis.java | 1 + .../ExomiserWrapperAnalysisExecutor.java | 41 +++++++----- .../ExomiserInterpretationAnalysisTest.java | 33 +++++++++- .../VariantInternalCommandExecutor.java | 2 + .../options/VariantCommandOptions.java | 4 ++ .../managers/AbstractClinicalManagerTest.java | 59 ++++++++++++++++-- .../test/resources/biofiles/HG104.1k.vcf.gz | Bin 0 -> 24986 bytes .../test/resources/biofiles/HG105.1k.vcf.gz | Bin 0 -> 27768 bytes .../test/resources/biofiles/HG106.1k.vcf.gz | Bin 0 -> 24417 bytes .../test/resources/biofiles/HG107.1k.vcf.gz | Bin 0 -> 24985 bytes .../clinical/ExomiserWrapperParams.java | 14 ++++- 12 files changed, 142 insertions(+), 22 deletions(-) create mode 100644 opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz create mode 100644 opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 39fa4fd581c..0ae02104c82 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -68,6 +68,7 @@ public class ExomiserInterpretationAnalysis extends InterpretationAnalysis { private String studyId; private String clinicalAnalysisId; private String sampleId; + private ClinicalAnalysis.Type clinicalAnalysisType; private ClinicalAnalysis clinicalAnalysis; @@ -116,6 +117,14 @@ protected void check() throws Exception { } sampleId = clinicalAnalysis.getProband().getSamples().get(0).getId(); + if (clinicalAnalysis.getType() == ClinicalAnalysis.Type.FAMILY) { + clinicalAnalysisType = ClinicalAnalysis.Type.FAMILY; + } else { + clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE; + } + logger.info("The clinical analysis type is {}, so the Exomiser will be run in mode {}", clinicalAnalysis.getType(), + clinicalAnalysisType); + // Update executor params with OpenCGA home and session ID setUpStorageEngineExecutor(studyId); } @@ -128,6 +137,7 @@ protected void run() throws ToolException { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(studyId) .setSampleId(sampleId) + .setClinicalAnalysisType(clinicalAnalysisType) .execute(); saveInterpretation(studyId, clinicalAnalysis); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java index 3d8253861a4..172f8629135 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java @@ -52,6 +52,7 @@ protected void run() throws Exception { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(study) .setSampleId(analysisParams.getSample()) + .setSampleId(analysisParams.getSample()) .execute(); }); } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java index 86bb3760b3c..cdbb24c2ab8 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java @@ -18,6 +18,7 @@ import org.opencb.opencga.catalog.managers.FamilyManager; import org.opencb.opencga.core.exceptions.ToolException; import org.opencb.opencga.core.exceptions.ToolExecutorException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.tools.annotations.ToolExecutor; @@ -50,6 +51,7 @@ public class ExomiserWrapperAnalysisExecutor extends DockerWrapperAnalysisExecut private String studyId; private String sampleId; + private ClinicalAnalysis.Type clinicalAnalysisType; private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -100,22 +102,24 @@ public void run() throws ToolException { // Check multi-sample (family) analysis File pedigreeFile = null; Pedigree pedigree = null; - if (individual.getMother() != null && individual.getMother().getId() != null - && individual.getFather() != null && individual.getFather().getId() != null) { - Family family = IndividualQcUtils.getFamilyByIndividualId(getStudyId(), individual.getId(), - getVariantStorageManager().getCatalogManager(), getToken()); - if (family != null) { - pedigree = FamilyManager.getPedigreeFromFamily(family, individual.getId()); - } - - if (pedigree != null) { - if (individual.getFather() != null) { - samples.add(individual.getFather().getSamples().get(0).getId()); + if (clinicalAnalysisType == ClinicalAnalysis.Type.FAMILY) { + if (individual.getMother() != null && individual.getMother().getId() != null + && individual.getFather() != null && individual.getFather().getId() != null) { + Family family = IndividualQcUtils.getFamilyByIndividualId(getStudyId(), individual.getId(), + getVariantStorageManager().getCatalogManager(), getToken()); + if (family != null) { + pedigree = FamilyManager.getPedigreeFromFamily(family, individual.getId()); } - if (individual.getMother() != null) { - samples.add(individual.getMother().getSamples().get(0).getId()); + + if (pedigree != null) { + if (individual.getFather() != null) { + samples.add(individual.getFather().getSamples().get(0).getId()); + } + if (individual.getMother() != null) { + samples.add(individual.getMother().getSamples().get(0).getId()); + } + pedigreeFile = createPedigreeFile(family, pedigree); } - pedigreeFile = createPedigreeFile(family, pedigree); } } File sampleFile = createSampleFile(individual, hpos, pedigree); @@ -483,4 +487,13 @@ public ExomiserWrapperAnalysisExecutor setSampleId(String sampleId) { this.sampleId = sampleId; return this; } + + public ClinicalAnalysis.Type getClinicalAnalysisType() { + return clinicalAnalysisType; + } + + public ExomiserWrapperAnalysisExecutor setClinicalAnalysisType(ClinicalAnalysis.Type clinicalAnalysisType) { + this.clinicalAnalysisType = clinicalAnalysisType; + return this; + } } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java index 001e44792cf..04d8147529b 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java @@ -71,7 +71,7 @@ public void testNormalization() throws NonStandardCompliantSampleField { } @Test - public void singleExomiserAnalysis() throws IOException, CatalogException, ToolException { + public void singleSingleExomiserAnalysis() throws IOException, CatalogException, ToolException { assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); prepareExomiserData(); @@ -98,11 +98,11 @@ public void singleExomiserAnalysis() throws IOException, CatalogException, ToolE } @Test - public void familyExomiserAnalysis() throws IOException, CatalogException, ToolException { + public void trioFamilyExomiserAnalysis() throws IOException, CatalogException, ToolException { assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); prepareExomiserData(); - outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_family")); + outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_trio_family")); ClinicalAnalysis clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() .get(clinicalTest.studyFqn, clinicalTest.CA_ID3, QueryOptions.empty(), clinicalTest.token).first(); @@ -124,6 +124,33 @@ public void familyExomiserAnalysis() throws IOException, CatalogException, ToolE System.out.println("results at out dir = " + outDir.toAbsolutePath()); } + @Test + public void trioSingleExomiserAnalysis() throws IOException, CatalogException, ToolException { + assumeThat(Paths.get("/opt/opencga/analysis/resources/exomiser").toFile().exists(), is(true)); + + prepareExomiserData(); + outDir = Paths.get(opencga.createTmpOutdir("_interpretation_analysis_trio_single")); + + ClinicalAnalysis clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() + .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); + assertEquals(0, clinicalAnalysis.getSecondaryInterpretations().size()); + + ExomiserInterpretationAnalysis exomiser = new ExomiserInterpretationAnalysis(); + + exomiser.setUp(opencga.getOpencgaHome().toAbsolutePath().toString(), new ObjectMap(), outDir, clinicalTest.token); + exomiser.setStudyId(clinicalTest.studyFqn) + .setClinicalAnalysisId(clinicalTest.CA_ID4); + + ExecutionResult result = exomiser.start(); + + // Refresh clinical analysis + clinicalAnalysis = clinicalTest.catalogManager.getClinicalAnalysisManager() + .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); + assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); + assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + System.out.println("results at out dir = " + outDir.toAbsolutePath()); + } + private void prepareExomiserData() throws IOException { Path opencgaHome = opencga.getOpencgaHome(); Path exomiserDataPath = opencgaHome.resolve("analysis/resources"); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java index e502850d9ee..34ee91a796e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java @@ -62,6 +62,7 @@ import org.opencb.opencga.core.common.YesNoAuto; import org.opencb.opencga.core.exceptions.AnalysisExecutionException; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.common.mixins.GenericRecordAvroJsonMixin; import org.opencb.opencga.core.models.operations.variant.*; @@ -1017,6 +1018,7 @@ private void exomiser() throws Exception { ObjectMap params = new ExomiserWrapperParams( cliOptions.sample, + ClinicalAnalysis.Type.valueOf(cliOptions.clinicalAnalysisType), cliOptions.outdir) .toObjectMap(cliOptions.commonOptions.params).append(ParamConstants.STUDY_PARAM, cliOptions.study); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java index bad1beff087..daedb022e2c 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java @@ -48,6 +48,7 @@ import org.opencb.opencga.app.cli.internal.InternalCliOptionsParser; import org.opencb.opencga.core.api.FieldConstants; import org.opencb.opencga.core.api.ParamConstants; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.variant.AnnotationVariantQueryParams; import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.tools.variant.IndividualQcAnalysisExecutor; @@ -1844,6 +1845,9 @@ public class ExomiserAnalysisCommandOptions { @Parameter(names = {"--sample"}, description = "Sample ID.", required = true) public String sample; + @Parameter(names = {"--analysis-mode"}, description = "Analysis mode, valid values: SINGLE or FAMILY") + public String clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE.name(); + @Parameter(names = {"-o", "--outdir"}, description = "Output directory.") public String outdir; } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java index 58b08381342..d9f384a5789 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java @@ -56,7 +56,8 @@ public class AbstractClinicalManagerTest extends GenericTest { public final static String PROBAND_ID2 = "manuel_individual"; public final static String CA_ID3 = "clinical-analysis-3"; - public final static String PROBAND_ID3 = "HG005_individual"; + + public final static String CA_ID4 = "clinical-analysis-4"; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -127,7 +128,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/exomiser.vcf.gz"); //--------------------------------------------------------------------- - // Chinese trio (clinicalAnalysis3) + // Chinese trio: FAMILY (clinicalAnalysis3) //--------------------------------------------------------------------- Individual hg006Individual = new Individual().setId("HG006_individual") @@ -154,14 +155,14 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setSex(SexOntologyTermAnnotation.initFemale()) .setSamples(Collections.singletonList(new Sample().setId("HG004"))); - Family chineseFamily = new Family("chinese_family", "chinese_family", null, null, + Family chineseFamily = new Family("chinese_trio_family", "chinese_trio_family", null, null, Arrays.asList(hg005Individual, hg006Individual, hg007Individual, hg004Individual), "", 4, Collections.emptyList(), Collections.emptyMap()); catalogManager.getFamilyManager().create(studyFqn, chineseFamily, QueryOptions.empty(), token).first(); auxClinicalAnalysis = new ClinicalAnalysis() .setId(CA_ID3) - .setDescription("My description - exomiser - trio") + .setDescription("My description - exomiser - trio - family") .setType(ClinicalAnalysis.Type.FAMILY) .setDueDate("20180510100000") .setDisorder(getDisorder()) @@ -175,6 +176,56 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/HG005.1k.vcf.gz"); catalogUploadFile("/biofiles/HG006.1k.vcf.gz"); catalogUploadFile("/biofiles/HG007.1k.vcf.gz"); + + //--------------------------------------------------------------------- + // Chinese trio: SINGLE (clinicalAnalysis4) + //--------------------------------------------------------------------- + + Individual hg106Individual = new Individual().setId("HG106_individual") + .setPhenotypes(Collections.emptyList()) + .setSex(SexOntologyTermAnnotation.initMale()) + .setSamples(Collections.singletonList(new Sample().setId("HG106"))); + + Individual hg107Individual = new Individual().setId("HG107_individual") + .setPhenotypes(Collections.emptyList()) + .setSex(SexOntologyTermAnnotation.initFemale()) + .setSamples(Collections.singletonList(new Sample().setId("HG107"))); + + Individual hg105Individual = new Individual().setId("HG105_individual") + .setDisorders(Collections.singletonList(getDisorder())) + .setPhenotypes(getPhenotypes()) + .setFather(hg106Individual) + .setMother(hg107Individual) + .setSex(SexOntologyTermAnnotation.initMale()) + .setSamples(Collections.singletonList(new Sample().setId("HG105"))); + + Individual hg104Individual = new Individual().setId("HG104_individual") + .setFather(hg106Individual) + .setMother(hg107Individual) + .setSex(SexOntologyTermAnnotation.initFemale()) + .setSamples(Collections.singletonList(new Sample().setId("HG104"))); + + Family chineseSingle = new Family("chinese_trio_single", "chinese_trio_single", null, null, + Arrays.asList(hg105Individual, hg106Individual, hg107Individual, hg104Individual), "", 4, Collections.emptyList(), + Collections.emptyMap()); + catalogManager.getFamilyManager().create(studyFqn, chineseSingle, QueryOptions.empty(), token).first(); + + auxClinicalAnalysis = new ClinicalAnalysis() + .setId(CA_ID4) + .setDescription("My description - exomiser - trio - single") + .setType(ClinicalAnalysis.Type.SINGLE) + .setDueDate("20180510100000") + .setDisorder(getDisorder()) + .setProband(hg105Individual) + .setFamily(chineseSingle); + + catalogManager.getClinicalAnalysisManager().create(studyFqn, auxClinicalAnalysis, QueryOptions.empty(), token) + .first(); + + catalogUploadFile("/biofiles/HG104.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG105.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG106.1k.vcf.gz"); + catalogUploadFile("/biofiles/HG107.1k.vcf.gz"); } private void catalogUploadFile(String path) throws IOException, CatalogException { diff --git a/opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG104.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..4237b056dfaf746b1d7dfa8606969d62d624a4e2 GIT binary patch literal 24986 zcmV(#K;*w4iwFpf#|vfv14u_PFf=YPYc6(UW&rG6Yi}FLvHh(43c~y4USzD>@5eX_ zpwMfs5j!hO+C>5c5Ju8S;$1$pBxT3qgeqc~fcN_E4nAI7!6%D!)_XbZz3jc5 zx|f&#n|w^>7qj8*qW9wJZgR00PA9!tdNG|{{?~u^{{N=|C1U^ReNs+`r-GY%)Dd zMvJp#l8ipjhx4;}y4b%;=8NRdD>7LnlTphhvk#Za3z^g!W~Gz}GDRhmFe*Uk!)3}+ zrlFD>hM}h_WolxGv>HLCE@eu~1<2$NmuX6wLQ-xNR}YtIOPSnoD>T&)mq|$_lxwR| zKu>8UR1%{Uicl74%CzJJ!SuB9B`UZQoEZe6l`|1d1lJTpXyr|WT1%5DAm-AX+aT0zAx2OQen8z*4SudZ(z97Ixtxxx z5G4sl94&{?D?@NbI0m;CBbe2TU|Jc>A?(T!N*P7)MxbP61VO;T5l5h_BQQoWuYon7 z3ET?7_sb!8!!&7>2vCe5R!5*HSqm#hkgLgD+r;=9OqjMG*YB5-kJK0)rw-(JY*6kd2VLRvNKgW! zZ%~Q0!GsWuCD=-|sj&zmt%{ID7-xu{E?6xXV1_Ue0-K>UEGw;9jh|5GItXFbpiXrd z!Hhv9Rl!17bA_q32&S4tzKJSasT!|hLPUkLtuYfQp>%yp5JmGqYs*kp_$t{Z3hx`HY8Sz#raC>S~xI>@lle{kQSq{P-z`HBqxZ_mb6yU zpezSevTOWjD8roYFxW_i$s{sNqCjheWu8iOz$6MaBuEnQpX3seqhu`^W~icTG16eB z@REhTj!N2+hvY{wc4t(gg9)(~Rq0?pEJfL#Rmv73Oc@AbA3%zbS0yS!OxPF^sJv>z zG}~e<^i-n54ueGXMiVffOCJzL>j2lB63nbpnn1P?0yP-euvMfm`jwU1fz!BMsF)RT{@{WgDpWB6qsddPF6ti#3 zZO9?UV1h497Jx!9>B$C;ZZ)dX;e2R=ioI~jN?>-Id99ey7&|E{twYhAU`|Mw14HtJ zI@jUCBgU5FO6kyw7Bvud3>AKrqaPE!UyLP>fsYD$!v$R}xh;t3eMn=GGbu zn7v@G!aNeA{kqZIBtHvN79PS?i8#OObM% zeB*SjCWRCmaavfoIt`jD%r2!CA-75`Fm9i!G!KbN5~N6$+cWfez#+!=)oND4lA03K zK&flZTV+tUacL3wke~)*<8UQAFsD)ib2(3oFqOAPb3{7SAst$dx_3m2kXNKZ*$!R` zm$goYF_=+P%bM%Mm0;pfh6|k<Ezk`Qj#-XcE0nv$JM~)5*b$le=+mdes|z=v_@`y~|{g zfQ)(X({ORqTiguiz3X%`U3|Vxdrm^niRfwaVo8278fC}Yq?gI$@^Uy&u4idlAL(#3 z>RrGWz5JWxW17i#Z}o~F_dti~-C{nxbf2dF!{mIF_Gald2$}aly8GaBCIALr`avl)Szf!}$1?m{jU`DZNoLyG~~r zo+&xM%`O1u3?vk806%qz>kY@ZqapkfE@1k9pRcEPb1?H22y>U=##vVS;(9t6eQu$t z`&zF*1^MYB?G3lteF9}J@~^_L#>31AS2LK_Wb(O}sh(eU1L#wj z!0~x9N zqn@FY0K)ya3-4+0b>P$~u;F3|=yKPxU%$)}Q}@J4>7|cniF}ByQS$Xvo9B$_`R6_w zmb_F@Z<3iC#>`?2M2ZQ7(ph@3$eDWuH+lZD7B?m4>X%Tk+I;~~XT=B1WiDuIGovX0 z)8j^4nuw;c-3M;y#tC&}w9x-d)+d&8?Rak~sN+AMm{r-dJ8qWye8W;99D%SIc3C^uhD#k3)9aQm;%C=f+2eCns(K$|4EOG&prgp7hus%a6-TD)Nye@Xg}4>vi{O53cgbs_K8$_S}`R|&Y)2L_q${?TzqaG60RJazyUd* zoDV&R%O!5hrzP`<)H%pJoy;Kx7@S7EJ0CK9!XL&pFD^|W?B$~^U&`U@!*}nBt2zF{ z)#S;#pTl|6rL0PSu;`|0z%x|N^7WE8u+eD?Qs`H6SQx6|s#=YAbkYVBM^N)Y1?ei% zNuG~*b}LfBtD=PN|8)HG`@N%|Pxjuv-aG#B&EDa=)4dPB9KPGj%AP&v$$Q!Od;SF9 zKV00*=$;~sQogspce-~v==b}Fdy?!q58Eq~(gXIYmUSOc^7rT{x%kU)`l`5O_)eH| zxv%tZ087KW@w?-w-#?-9xAQYbemj3v;PZgL3d6Vi$-Cph;pty%Uw3ba+B>g*ebtac z9sD#rNq;~3krMK+s6Uvv1CU3NfAc*!%26_$y((hhLI32e9PO-(jPUNt$mOT6mV(wn zA8NrAl$Z^tFS8SoZ?3u7cjND$C*%F|;pn&2^-qQ$_uZL4)b3y2-OeNbt$BLw{y3Y1 zf2Nmb;}oj@%LroV7>d#aehRJ+1Mdw^!a1oxwVlUbu`HI=~+#l zduN9rK|CZVr!f@~XE9|Fv+%brP$A&Iy^}Ygg0DqI^ma758xJQ*1rOd99t|e*0_1(c zQWtpQ>eCdm$J)DBvot+VKBx26$a-`v?K)@}fW}4+I@*DT5mkbQO9P-8?Dab;d4A^4 z!wAqsBxLqt0@Ewv`JyxZvo*aXE_smIi=~C>A%)1iz9|)a%utaTtHOhLSfI$n6=9+g zBi{%Y4eFIC#+uAyRci6cI$=8mw=B>wB4SR!ZZ1cmJZ7TISrs>SZO*zCLl@!5pIN6oIc z!6%ya^PMM$qtR(HxlG5$>1~=U<}e;zOsPBl`26;4KAPT2w7AKMjvbG=S1Dtri>wJ? zLMh;+4|&rnPQ;ga3=)-xQd!Li81>c?f=c;obFQ5Zqq+7^iJfR(+q0NQuHBA zQ$dyL+C9%TQ7`&B0-{mGNd8J?5t*2l%ygO4lgOOD_}TImHh)@P>8@cl=PB*NB6CEg z0kyO!E16+JuI(sv9mq#VWh1(F4?aM3G?ENnw1h;wNUfMvz9H3|T75gB!%eOl4Yf<1 zi{|`k*P)d~Q7(BbOe9S#tXnhVisaxDFqUZzu3EyrybQVot_^wmO6B*(C|aSZF)^=0 z?`zd}t5EvVB3g5+VE5pnWNbyGv|Ama2C6<@!bND-I_dg)aFLG(mv+F|YPtP;?>1@c zx}jXf)I^NOkjWSD64IA+?b&Flh>ed;NF;{PS z-4AY0tN@S_YD*y^L1LkO%oU~rqhdIV-W^+Z$VEr41satklGGzt#9ZXXh+&FLwu6n4 z4!N!4{5Oo|n?NUkAvKExixrE2Ize28Io)Bd!yG2&@}+gZdSFGqzFsb^1LOoFzUR_G z?wLXEo5$jffMjlyq~;ElE@2cE9y#q2#tx6)e8r422Tn~rWkQ)PswgdWwrlOMTh>5W z*4R12TW@pEO`OKeu+s3x^48qc*&U(7`~(_u8E6DC9yH4BT@=-#7J$Zz_6zJCXuc27 zAyjl+vkS0!Iy=R3R0$qaCL*^G$|DM7Bu$AbV_bH9+HY6y zb-4PT=tx5Jf>9%?sNWDv0Xg|r9>awY)`zhsK3d*_-+-Ii7JPXx=xkW+@lrJ^hMGtF z5}4X<;R*M9edAJGY7@IBIC7ESc)_hLt*)$Wed9%E^(Ru{2*qLv4qlvc0m*A&aLJ|I z!7W%%G(7B%;d6$k%upN!=*muFe;pBD9Lv0cP)MR-@A z?q))WRuLHK?sJRaAIR&d%j+uhL%GoU_L0u~Te>}3#OBPouW{}xELgFmZTH;su21m1 z-B*j)fb}_vx$$ixrb_d3o#ksy?%O5k_e{|5S4b&{uI?$Z+~?JbhlP}}X8q}Lotu8w zZ5JwI17R7;Z{`ok;EEQou|})x49Ua8!`*_;GrTM22|%W}8Q7gJ7c;kP&xFR*M16NVDJJ0QkFAgm=f@;CmZWQfsu;Vz`=>6`PQUP^~(z*BZ((25z zY)5*(-=!2!qA$F$jU-7-BSu^^NwSzTS=gD=El!H;to(da0jV7IGwEszrD9$jbq)}* zexcxW(Cr=henC>SEJUnLM5Xe#9|KH82@|1&_Qgb(C+zf=fsGk~W-%oeG6IryGDUfV zh7iVY1ZrL|>gOq*D+h$+Y`OO}vSuSZcAN}g9J*>br{ ziCDQ)SKKo*{Bl=CK2i|b`tX$wHs2F$B(*V>G}6km4GZq&7n<1ii{#x+g&}MnG_XifM@-~(vvNl#Uf<(C5QzJAL2IolD4sH*C+pZx-0x2mC6D?vXBjrvTDZA{N z+4WUZ2bu2|GSbltr5fU!-?&-jLRyja4@Kx8^RM+`}fNz&EFCiyD+Jg)D4S3l_WNf$Sr~LDIRK%6ao`NB0 zxh!CnKU}`u&VVmHcx4k-Hq>7a!pgRM^Qc(4H@9r;53D6IaJK7@5851SWz3jwPHEwuLMs?4A!(G}YP08Z3DA1|Zf!Ae@AbQu7+fkB9%23N znZ?sBZ$^_cmOyygEe;zUb6YIyNh;_rK24~Lua9^*{!{DQQ|@klH{3ronFq^6fL`7$ z6Lsj_ZSvhYuiHI1C_Xqn2`Ay(%jezd4BV7 z|8UT)clO?M~acVI&fr7{SmsuoHOS-<4l!L5Vaec&c- ztb}`dy?e}-3{E5lxUmjyPXlf{2d+GD8tqF`>tBJ<+HUvmlOVBY-yv4So#Ekc-qz9|=PfFn@;tYD@DtEC-afT< z;kO-5AGqH8I5^!AFzy`OqyV^4>y8cK+GTj$mTeLyl<1yB{dAaa_rOIMfQz}4h_rIg zmuBUbQDrpm3Wui`b9duesoQd#@prOI5o;Z}!}EEu_N6TKJ4(BI{hs@cTN_tL{fSCc zWrZkkps6)fw5F4`qgy|>-LB{M=~3yH7lb?XiwD?je_CvZ%?_LR z+nG3trH+h%`06(`@nY+|;n|XYf3M%_F}n>nDz<}X2*?JgZVS&Q2!0W=UkjeQ(dHc- z_iwm4I~ZdO~t&V*bRrSY=lH@<^om+3*$g#(t^IeF8u1nu|kOx5sl;@4kv$2V_-UZ~y zu$6~=`_t7Vo78%SLvltVl2hJfVaJv?>;6sM>tE{PwgAw_$Lyni4zq^~)b`kENSITZ ztB)t_gC)gdt}f)c#VA9vC4mcoR`K|7JXRiK&s;;nY=`oh5@_VC-UQ&oZBxC$swn=wNh0TDUxz2G?_=w zvo3t-?9aQ-{;agF#WuGxxrz5F1$5o?SoDpD)qrkycJ8B{E63V~tk`8ucCOSzXK6Zg zYPN23Wbu>~DqzSPoSe@IlmW%)eZ-~&d;f5!(u2Aqa4u?8gU8Bx8NJ3h&`5|rFsVAn zx-mQKG>==n&2TB=9f`=~S;1GnX2ODHci&O5yge*GKD`~MR?d=|Mp3hZge`Y>&SO9a zs;jBkZlWsV$YkYf?_}pbB{}_l-2`%b2Th|-1$p%#10;}5<*`l)6+!};dyoT7J`=AX zE65+aBbzL;OQA4jkTHSWhZfAU&!Z^F3i1^qV#lFIF}uS+qdnz6qlnG%*PtRRxueemc#LbQdDG% zN5?1>zBR+Q*u7pIKpSEW-c>%xWeoB)V@Y9Rvks{#%z6R*c^C3Mg1+mU#gt3S&8h?^ zyIdhcU#N7gwv<+gZi>q5xMQ2#vCm_TY%_S>?Z;>gWbo7+t{1#>{qZ#z^U1cMG;oZq zBg-vXX45eSz)=Mnx5(H>B9-SX99F^BJ`1#Sw^f;lvfx%;2RV0kY!N~Sr^W{Vyfrd* zMET<5>UO6#1fpz0N!L2x+>5q{GS`$fhTEK(+Z2KhWxz+mImlv+nDPi$7z}_K&aIlk z19`-nA~}wtEK8MjDNPU=ckYyBqru2cmin+>zq_0M!$}kLQGg^e0IkfwS`?kcfeR#K zruV1R{M^Kt^>~Y3&ba3my*Cxp(AZG=E!35LI7^d4rmKYBG1d_)h>{jo6jRs(9V;C9 za_6p>tq{Fg&S{x@4^MP3$NQPj_gxQK*`&qjRT^U1(@1%n+;#B1_+T`aJgK+(a0~OU z3ENd7q7)@tIWwISGg~3|jh$$mqlU35UQ8qAt86rGZ=%97*AP&K%Vna1hcUNjK7OWB zt=M~8v3Gs_c3VG%$01e-vaT=t1)VxqG{NBX$1g8FpkU2s8GkGD}ir>37Nt@a=m-G7EO{#^+FywzCZr?ZQY1 zasj(A$q@XBhIg|I>-q3c4vLRQH}hC)Gbs`9VA*(wkmu5EEVx-4Cgd8WS*OFN)Lf?1<*HcEl8eXhRjh+04QUnvG;5UU;GpIxRW8cuCbs#G zlXD5PF2DguA&xr4n|Fv8DqN1s^MMo`8EbSE;2>2807pkJb1H-i;hd56bKGxA{sPIA z=Ff;Ss`uTg_nk`b!b0dtbqwPw4z;I>q|u8#a)BqWgeh{nL~hAk`>Eakm~i9T#fpa0 z=m25l9-iX1U)-(``+1wp9D``5IH(BUn7QE1%4;Ob-R8J!%D|p5-zk&Rw9(cSy8bg@ zN;;If8>DXDLeDw*uI%Z6sazA`Sy4VKeF*fh!02hl`_UQi2oG0{@!l;3wk{-Ux#Czm z&Jm(36=*WfuH0r`qnk0lRvFg0^&d?ZtM{Jxu#wP~_unzxG-pi}G?yhLzh@=8GONtr{_ z1%9}@&sV|k9_}A6L7hf(SA=VHQZ7L4yl9pHCp#mju1fsQE;JkZIs>q&ipZ>+r*m5I zC|ivzf`xL6?@cqF{fu)$`}IlXPxHvM<(ACGr3!0He3BJqe*>~R8%XN4%%$eVvFVB) zzO1aC=+tvAv>LN#wkIyqKKye3JB3eo&(D8<`TFwh<@vu~pT7V2^ySt4^V_FCzJ7c9 z{@c^PUcbD8Nk9Ja{PN9K?U(!`{p|D8FHhf|etqqKXZ~N~E`1dHlT4%}`=1%f_g` z+-DAV*|3X5y3OSX-N-5JSSNG}MnRjFn-0;J71$TmDh69qu|}on z1}UQC%!Hzl!=^Z-$j#AbR+qK~mo_%YMNW3KBgx$YM6Ah{)`uhSm4sD=&c`QHCWpNi zUSH6d@yNGjBZNB0l%LG{K?-1~-}iRjYNhCQ%mk;vH8FrLg|CtX`I>wQUp=;i#>&FJ zS?ChtQYhz*|HU~fYzN04}w8MQnECeIdgEs5J zG@T_bYXLr`7-|=8h6N_7Eo5Z`8L6^xU!JdRzPF~ig-5!M)fbZ!$OKOYa2zz9Yj$gpZ_YO1;P3z2U+hr zjk0jbeAHySkm62&D*9nM8k!wwbrH9L0*n5Ft87X~DWxFNtnUY|MYVtBTXxFAB})^b z=1@7T!Ej;$x(a7;r4G9rbaXzsp%C=bI$!KG9wR^p_D-{^MP`bKc znkSHi9PHXuBuKBUpyS$7moCh142$t7lWO)dV+u&wolub@M&t9)gjTfn<4#7yOd!cV zMSw)YOc~}Yp+#Z=gN7D2!$Jxq-w+IvbCAqs<|$uU!z`y$ z5)AQjLK@1#>RAxcQILQkrg$NF48{^KfREG9mMRLHM?t0}^3G*!t`BgL*FmJb2dAOq z-ce}#nVcmPy_BZVxD-B^LV|Nf+ZH#wd^@f=GJQdWLb5kfn($EhC_A`4U>>wbx+_z2 zae9m#6BWT4Zz>69`|y=03%hDAvm<=QQ82Ylxs0y?eA`R&1qMdYTxM4+95yB6Rq%X< zI1%DW&V;fpe6T^*8u%7#;1hO@MxvTi$YAhUpDNY?svwtTOLW2nWnt$LueqoVSq&>c|Gp;;go&AhSi58(>_CSfEtv&Zh1Ec; zAX_CMSxU850?T}nhWb~H3mWqJsvGzyi&i(vxYJ&8})bL#twL8?-#*NoC9pd{alC z{%D4>Yv@?#{cfTZeulx2y(H$!Vs5J?9|WZ+;XIIz0__x^`N4{Ht&*|aij$QT4m~N% zYG{;{u088y?wFy5lmY?qaHz~1vvzeh4Q$`HQ2KTYZme`VJ}q)im~5;_X3KJZo{8>- zvjxz#OLr)s`v(-T12jsIy8clZx)QgXMxEN<4s<^1q0QcnD19YMO$ zwjW>cO>{PMI!=Mv5-?*1>PWqENxw1=VdfUL$I976nd>RD3)a#%N!hN7OV>t-V#o{X zvGy*{@%Htq0PU`_BD76}F4r0HoKr}WQJE-eDY1tn&sHfU3W;x&JP$(>ZY1PUNX}R) zA#1apF?C1?8971OBSdOv6rs}yIc}?+(Nq!MAVjM#C23jwdeQRFWu+4=PL8ah-C&Sw zD9-0jo*A4(!N6|qMRx`9a%S$-J#K4d8WAA0XAykQNqdg{w)ec16X7I^TNAw)?1ZGs zbXp|N;z2q{w6ECcfQLH0aoL_>LSI7_G5t-Z&e&iNi?l9@pjR0f`-Xx@EbI&U9j+?p~x0Ok!v-plCiNMp>7Ofe)@s6l$VnVuJ4qt z$$@Swdj*`VPsnoH5K`LgI~zpMlmPGla-Y7fw~{h>D94DUl7=y{P^9Y!UEZ;Iczk?RwU~`Lhf&LqlGp~S z16Aqco}Qe`lY3fFWLL|-f@pDkt}TijREqw9eFbFRnEc3b zIm)fTjuz@93N=8u6fL7K`T39Ee*5EJ|9O7>{`BRKmw*5D;g|d0DSWzne*XK**OzZE z&;R}U^!>-DFR$*O-#-2E_1n|;-=6;U`sEc&`tgtFmv6RezvLh3XP=*bdHVMB>udij ze{X&l`GV$`kLL`rb_ofhy3rwY#flJvswD5rii}sL+IbEaDu_-FP8Sj^ED*WXka0D^ z#X_fHM55o3C`sk0a!3R>>lb%AY_=EUaApw#BPJVCG3S*q*&*ybi8Bj4iQ13N+K++2 zVAgO5z8QBe_QP6Kv5$S3kMSr|dhU^G=PML}!cgiHHrfU2qDsPwNq8?^PZsRuUnqz=c7% zosr01>{68anpGK>L%-<62=ZaWb9{hs?)IjWF%d6mx%7^~7YvhIJ6f5c(-@xX$Bv+P zSrNKf#2s>YZ@ldX;dm{#)&j$M#DtsN8>uVhF-7uP+})m28(+udtaTFV6tbjX7YDUl zW{gg^8E()~UBd5Jo5vHgG4YT7jD z!z{u!Ue1~T+AKRTh?hO%f@`a4FIH?XMoWAlyAGBMNl4P4?!^8%ATQ7+Q4+RFLf*$r zUnU1u5n!;E!@;-1)%SNz6Iy!F};0c3)wVS*+T6?9BZ0B!L8RxZmjY) zTBQXk`vbD5S4nBvE}h~ z=Eq5|e`STAaEa!@}rfoX0_CkBU9m80{IAVl zy$l?uB*ps*jT?yUT4Y?HmZpGg0gz=$40&vJr=+NfQtrSKrx4l&SICu?9n+GGP))1%G+^JbuAlR@$%; z_cc}e(O{m$o80!D7QQMG*Cpao0QeNGnwU3~m?VE;TU?DNXD0_R3c#fSIQNCSK*Hz2 zLBw1n_cg^*9rw`~ec+8haGnVa71$gw;^1bP4QQv&W$62^^L?4*qzC54xT*Y`?sy=Y zKBcD*yv_%vXlsx80}Pc9HE{{SBE;#ZtWUk~*k;%1_dQxQy3mWxtQu`E(gNA=Om;e- zm8@7wMJ4%?#g0~$=HYHixD7wc9*upLN2XiO_$<$U>LWAVi$BXB_JQ@al_}Xg5GkXw zUC8VV;dG_w1ACa04f4qB(pd(1@$}NA4f3R-$lJ!ySXE^5Iwu-DhKJXy7 zrK!SLBUf)mm=Y!4PQN943X^3UyL0XOQZO!K*SAlDD9gJFO)c`eSYr{!bH)YMGbp!L z(Opu&Mdl2UsjaJ6dd^TV3Q>>O?-ZjWmTiu%ohe6fAXeyWXXNsIib@MV(bCHK+47*v zYFJuglFlM7WwfS3D@)8WALF|zI|qh%<;3mCVqFi8Ip|zaW~H0Q%6F1|<0tLl@OI)Y zI$cw{Ne?-FJluq46^S9AE5twrpU67Sw=aCg1-GCT+;SpoPjX1PLjfVDY`Vg@9~919 zE5R6>Lrm6J5R%)0;&w1H=?de9R~QfX1tu&RaUETvA(@U?f?i9FO3UNpotlr81-=JA z^-JYGtFt3nZ}MzT7e=E245im+ z*^Y|hgX}PXaj-;RPQA}Zd!O;rYm^~!YwF;uln?hhrOqMx`8{rZ?sYzQKL*tt`;#ms z3$OIGc84D4*V^^L*Zkn^2?9~3Hk2ORi>7^faBe5xw92)E2k$BnUb?mck6dY@dqDhs-6O9vx(qTj{E?7;`gyN$Uic_pC8LYFp1l`DY8!y}xN`lIF-f{$@TmMnjZ_P6Wfy$>mYHm zUL?9s2C9fDVlI?0c&(k@I3-XPXN~MJ%6(2Nbv7)JPzah*t1BAkC!gR;f3uA^Ao*@M z$6EtyU%b{;|Br~8-)Ibv%Go5ZC9+1QCY!gcJ@s(e1;$A|*fu@bL~2@-1bInP?2?Ov z)oO2nP*e9+)QI2mHuLd+%Dm^y8@xw#niv|@MeupX#iYR7_0(}5XS$QWG?r5IE{h&Y zE!)c`j3}!oPZ>)s$y(Hv@SE|GqXkEhf_7}SrKI3Up@+mym)}>*wBN{l+{#eRq2gG_ zPzBMVEkRWXph1=LGo_&x6F$`R)A~|m=mY^Zk-K##WjS|UL#`#sgm^#V5!tJiQ7bdE zene#Rv=GU%iOdS}0I00er+rohYDQ^EfJ%N0n(jT8H8mftGm6tq;WVd)uykC_qci#=$knI69kl+=t@W0=TB#X(Cs#qkex|>DD95gbdZh4fi z;`7CO0$TqNw}7z$a4pdghJ5F~YIV?YVDx}VB%zeV=KBV}3Zn=)zv6_*Hfnp?sP)~K zh`Ip#QvJl-eT51VK(OR>n5c8}P$;OLLPkl7IX9i8*n|P+JA)fao*gCklsFkUfpo+J zC`FccV89AvFkP18plEuaj77Xzj}rSzc+hZBoQN$^4~~-)7sz#Ow_t;y_dhi!c{Wz_ z&dS?KC`c+j4k`Ck^}optGhpTvEn?JHzYLM5iWn0$$i2yjyi@fb#%>IgJ7^x%eXgljJ~nq z(B`C~xy6NIg-31}@yB46;D^V_X>MPR95OyqXfVVaUxt~ixVVB5W2t4!sb$^PnXw2E zMrc!NP?L@f(=_qH);l{x$#gZ^QCL!`Mm@DY4b^C3kTO{{f4ir`!eoYs<-N(5*_R&M z;%P#fTn-6E`raP=xgLD=hu=|W@gDSW-{)$fVj&eQm|XEupimmo#L6T>m!S|(*JlYF zm#|<^I0h7Y@()61k;q}>iJ1TiOby>=;=lADvrk;f^?s}QM~*EGQZWfw#4^qi!pv!3 z;#GDy`ew57g`?C zc7{-fLL5P1g+z`);c1~zreYZiMLtkQ=FvGO2rs{OGAL{r3g`bPZt`Z@pD-w{H~p9VCI9NTubnJ={hj~r zzKedrltBB*jRITX{51JrTD<}fQHf!V^sV)~8}4@>JwiJLFQuwC6!Zk5xYiCrrpf>@ zAwUDs3=rw*U1->~DVA|8@vzxp-*X8JL`MM8CcPjJ(um%V z53@fGo(wkog3a{o?=@S-8uK2V+*nRrbKjL1BPn3SdF@MB?Tc3vXpC1;N-$mI+{OLa8Zr}q@PVZ5DE<{!4 z`(U5HlUsFEdj$&X_B*RS;wv71uLkp%e$!b&c;VNktHGdf@zh3a0#r?Kg$wj{mc~Kc zOXPSz93?KJQf?(Sk?RCYafE5bMBTcI&n`LM4=lM1Rq-j&X$9*k1y-=o<`==?BTu#- zoX95Md#)$@x1S8N4A~`=PNOuPQQvzoyVaMD-i~&kFf2@`0aPNYO8-E2=rRl&^u+~M z45h80*v#iy7v`yZR;Lc=#G@=P-dUgd#E+YkGN7)xl{u^g8^YQPfJ8G0+G#JafH|t+ zJtuNsPS$i^O;{rUdS{x|JH^OU3vii_I=d%0b0PT3KC&Ba3V01YH)tZDt(H}M}><0_y`DO*Vfj}n>q-sFro|;Yz zPQ^y|?_{KcHCcYmvOJtqD6OtwZJ34uFYR6uZnHbcaBBGy#J2 zh#4CWg`^kHy3}~uw9E-OBlrxEn!wQncFrKSi~z9!GZ!H@iKB)5hX+FDuGjx%MqAwP6C?A5%oFxfv-wBKL1c6kAgh$j z4Imo^$TTO@waiM?R;k$(tA0-YRtbd6PwV++UU#lRNXcHYI}ufJ`*b!IORLsq28wNg z;yt-L1ck8yx~o?MmN1Gat4Q9KT{fIu-eD>N!~U&yp?eVt!cu8+_ z8YubzoIiO%>f@1gMvHGVy%y~OrylTP^EUfgIln5-eA6gxY9LSxswswHV9o)AHM?!g z${Wtg(@4Nh94h)^7vUuhP(Wa7|BnNO(>&Sf$Pkgwu;5*981eG*vfYvLUFWx}9{-jo z_*0?d;`Y1yzN?kRPIifftPR|9XwXrMX@o5gE2PCN&O8H>=Iko^@KcP7a-iuw&qU7- zD@G`EhdyrxlHGx1ZBUW2v~ZvTHK^K!F^m9{>?+mpa^A^u@1*B4URd!`he)1Ffn(%} z{orLfcBsQ#u^AP&4&s>(Txn(a|%R#%cId$HVW zu8ZI7w#u@aw_3<1v?Cv)F3q3ydlL+HaX*`d82AmUobMnwj@wCtVZNad~pB z1|9hYW-z~FF_;<5rX)k1%DpF0n4#7@X#}%goa^Q763~9N68{xw6HXIXL3RsPyckxG z0n>#;+Z{q{wsGb%h&kUzRzYdZ1+@YVM-Zc}vr0cAl0EiP`bp6Cs6f`=TdT5zG~jj8 zmn(Mf+z4en-xtfMuLiAOrpG?#$XxUXrNxu97;BCU0ljUN4$%Ic$|W5a>ntE)1L`ea z^@boivJK;JC=s z?O*Mkk82jz8?1#!!WL9}6nz{$D_uWxvq$~dN1c8`y?ISaXQkYnjE1^`X@x?MEq$I~ z>9az4gZ18`a1w#3rO_ZxI2t20Q6MK_cMcuU?{c$#WeP0mDfi3H}Pg0B3Ll08tU39rI zuvdGJS6d*LfS$_rs? z`OIy}W?(WV=UPo`__C7>ajbEJE=Yeo|A-oX0w^AqGB_f)ByTQN)zg4A(cXMzAe_aQhI;mt2D-Py?7+w0rQ>)V&N z*OxE(hqu@M=LUpl0>b4*(ln!K+C5v94vO@q-k^;%QV=D`@@wS}g~+{)>>P-^*9h^0 z;c}j`ZZb&J;jY9K2_1oCU>czJ40gqSoPwfDFS=&{Zq!hQ*jF&HS!o|n4P|B)nm->S z4`pWoZ743A?9vEg(QiBtS*fzVR9Ql6%&m=Ya!V7S;WG@+Z3`c3z^Is2ScIB6*xSWVQ%lX~U= z55v)+wz;1TmuYTZY%w>vZjlq#&}owbd10 z5bqu~y|u*x|_Tjo?r_)hVHVbpBL0_MIsO)_14AaBL z0QNEe^iFU71{zbjOOJ)g5Hl!h>?iSTOom+*0(UVP?qTkFWnC&oib@0`H{7RY#L)^< zL?cLjcDuQpE_aelmrf`}wTzSQCZJ*=$qJ7v!@{#-K}{N*(jS7BB5I5gT!NBmuV5lqX?$ieysaW!eV(VjA;CE(Vcz!UbjkXkmy-HfB z(&ZQpiLXl~mVxXAXNV(Ebp#vBpD6Ij1A%NcC%vn6yay(fH zlTHW&igYR@CCk+sMBJJ!nZaa#Fd-*>G|_~F%BgZSAqmRXbyEx{4{cnyGxUhipwlL{ z?o#B`x7afEFvZF3^WsxY5<6nHYW7ivjf`Le$#(Dtn~ShPEoD>Doc2j8+YxNY#CQxg zSF%)zHnBt-I8Rautb;xdY^EEa5?7pSCFR1_kIf@8PE2EGXE>R5AnRr()N*VPG8Q6_ zu@IJT>I@4{i-j^6alXTXQU>c_Bmr#wUfHnlfc!Cc)EWv@L{-`l_1?^nppsk(8&+x< zR9f$KjwYcE)Id^BYE3W+1y=`^FR%J2%aJm?);VMzhLj0>R1kdzQa%&b*2wG*DQn}3j$uR689oTN z9)^P`()&0YkL(yN3whAfb_&u>*>r#GGmh%XJwak;EwkZh7LKBtfri)uDl=B?y@t}5 zuxp}h4!0j5O~(|Sy(G{sN&9JEZJr6q#C&!Jg~#6L%&&mTYDlF>b7!S~g7p%NasgBb zw_ofqV-K8`TMbmNn(vBaL@2^>Mb)})n#pq_OF{dLJJ)A6GnUOgb`W(@z`jks5ow8Q z^}yX5NU`-PRVYLkt+U=06fT?oOacUTUzD6KjW~?OY>87*qA(3qowy-dBib~iPUZ85)8l#JGiY}Ov#51RhmC>M^xd%P%LzFSKHAAAX2yAX~Fi1q#H60;lNNCeh zi^>Sz+Ztw{<-`?|{7Mi>$A698;60-#)TMCj?3oNjJ4Df1xVV1xD-G%Z9igHn6l#*8 z#n3XKMY^en3ale5+3at8w&T@1bj$4y6Dv}^`>VVz)yn2+JWh0=NVjY91?w_KOYAP zX1r<_V93}lGJ5)OA*n|$szkocWx@aqN^3akwvpe+@?^!-L46)b^?H+U0M3^5%^=6FxuHd5mGMjY_vLDt$kZ2k0evJvND3??*WDbY08p z*J0X)rOLeqyz_=>cP>)iXPEZ*<;vvTi>ZbDU#WvH&n<>pREE%BqAYkrjR2>2ocD$o z-mQPpRd0Cny?%M$yWj9Es4aQVdp?!#1O{M*K?ofdJh(9yWMWNfXxJqhpv5Nm93S*v z$wNg$bl2&?hJ`(1K~jc6RiPSK*;6SCEDAdhKOyVAPDQ^&a zYKTqS@0QsnNk&gYc(#2@4#2D*J}P6a9dFMrWNx!X`>96^Z3qo08X9(E8TQ~Lm`$pM zmD^z@NXy)CP(hCXQYFcMxw-hMc2^++ub3qpf;O6?W}oz?)B<7y zC@qOH5{POI9Erg|aj3AevX{b)BTTxh6fCXONWwkD?&|Z4Wv7S1=<%83;q%|zKtC@M;clv^ejau_-@z>BWC z`P*_bvK`d+>KpZ^?;z#7`o_5mDIve{F!gMW(_TYUR5iAue*ltkq-&`m-9-qnBHdYK zwB>L#y(%c)M_kU0wG67)rxB#r=`-5QZm_T*HBFO-=byB9R=^TkP7MSaI~in%5iTcu z8pI4@=Q&ONgiE;{M6H`f2C)%cFC=Ig?H~{v{;1oWoT&PfxfG(%gbbnTd=R~`d8{0( zpkA>jXQ#VRin%8%gbS)i+JZ5xK#&EVtp}d#8El%L?pk&_W6Z&&=)I5(NlHA(b#Vv7 z%F|+H4fV!rNYNWR$T)$sO9t^C&6D&nI9XK8kasE}m5Z5B#I(;~6B8S);xNU`^p&_S zMkTf>6fHt8SYaa0S#`wIIrf&2b5E>TNg=GhOZf77egri)qztb&>l$i#NSVM(1=VMS zlur*HqoZvoqGr0&)+sL4sx>&j;%wWp%pS80_7;Od)z(ojyemv{+9@!xIoocM%=FOJ ztLT0q!la^=I&O7?H?4eAPrRyH@96 z5_+84KuydoPYzK$_6-tofox2_s|YnY4ne(lq@c8JAeRfET> zKnf+yL}h$a{t<>7I7z7pp=~+O8NwbHY<%LbPf`sBwb%8P?3Tb|T&~?~SlBQYYH56% zKyaGQtG9%J8qkz%L=_*@#|p#8?(lK5HeQ%>FgfL7d(xZ}a6HjZNTmgTv*Fxx4P>V8 z$*6E(sRigxT}ML~eeo4c0ekUnzc^35xWpAo8>NBeKeaDT_6N3NaH87Db6c zc;f&uMTJKd7RztBh-2XdU5Y5 zP6nr0aPqE=sVoj-h7*VJG(QD#D-Od9PR|Xe>4ATzfasJghh7!#PRXqEEI9~E?lKZ) zO>4F{mYIkjzc=d_SBaA$#)bC(+dG#YxsfA}pLahC4;hbq5!i#!SjcBvdmhZ#?Xdu9 zC1@Hj=G!|X$*Lq!XBNTQ7ZYK&Sw*Z=rCchV=T(TT4*akqw@C z>#;NJ%cfbSOU`G86PrcNh1{8?N^fji zbFp17q~>B(b208(Z0$^CW$w;3uB8*vw#QAhYV#(nyhA2*j|~Dr3dmH!)H2E`M4jfw z6H+E>e^jl{xixCDCY1EjW!nU#yIxpvZ8V~+?1h!_!3xMTISGc8K|{)Rm}7y#2i|z{ ztT3zygKUFX(TM{R7#ZSP5Djlvx0;^rAJgT)X1`kMC1x) z9Q0`DzHH9orsc^j1(A3Wm0a=_kTkhVa0@ZAuA%ITmvK1%Nb_Fo&RrGLQZte2=)K5*u=|Qq- zG~Tg}B&XZhLczzGsQ4&8qb+JDDrwFNJ`p_)4@syj>&7Ia5dsW!Lc?aOre|=II4grJM z0$*`RFi29HXu#4l3@$niUUvn&|$&7F5`n1@G9V&=flQ zWeElgq^b+Yfr0bPo8txs67|D#c@&Llb_*{DnK({E!2qXWP+pj3zwl3gWf!MMCUf={ zvm}o&IRYurV3f1W2o>hov%rC#^m@!;EQOpww9u$9Lls4DHxw2a{6X}cUIBAA7T*2A zk<+I>R7iCIS={M_jA(2ghMqaMq3^xv_l|NQTaMI46hWkpkOZ0#RAl`?wqCAj#EMO_ z^;8A!D2XN(q6_oWMg8n=`Lj>5)}P`$mk*-{+xzeX(Sl~^z=MxWp-*`5Sp(<`o_J*m zt4F8}VU#;~++G|2*+f>h6DGre-CO^gZ zsFGyIasM%9eLAWEV+9zx$_QEjD3)uoO6;Vzpz+g>Xo8oxE8j;nR!|LU|)w&h1knM2(8r~F_cPDrhkPS4M=*OoI`F~HJK0bZ? z)cx8eqwu;_{p#V%i_^pxA9z}x{j?K5__N#DgMZFlSpqO}o~S}oqfeibI`Pp#1&7O) zZv}+C7Z7tk?js4%zG(1K<`lrUh66i(flb!(`tad$&r+j?dqoXz&4BC#qs*!Z1Ds-m zQhi_`Y{sO|-r~c_bL6ij@3AR1=39?@sO;R;mAo|`;AHC$8+l0Tg^uhTt# zS|IHxriMvY(?YC5!oZh_WrsLj)8Ku^0A68mmob1j7z|bMrxxPByjYmj-Zw$yjGSwG zb)l zfCgiu^1bCnX@y}87~m|*D}#ce_D~_&WEe{0BQh>%sA?>^omg_RW_!pDFlTD-UMuND z8&yW@2o~WKD?lFBi+LO;gq~z#jG%4vH$JL6p}BGMi{Gocv7OO}g%$Df1?kXA?AUyknGF=KqFFFuqg*Lh zA_W*_d^n{p3}Uy~oRe8fzfaRKd0ImSQo(vWutv#Axi1;HtC{SQOV){8ha6mRQ9{8v z1UO_8I8>!X$$=ExJ4ZMPxIN(f^r`>Pgsy)FpR1YQ+EG9+k(osNP)Vuu&V=xSJ` zfb}vq$^Ns}5eZ;SSO9D8*>AZLpf$y{p;~v(hGjZm`WKG!o=vBI3D$4D&ZKm0n=WyV zR+iOW$TfpLU0bgiC|wUr7h-O`K7H77_eJ?yO#^IPmmX?LoY=hE?)eocSu|4as;iqj zIw&0T0RtKQgja(-gdCdjE*7B*!dEZ%E>M{v01B0 zPVR*~99Hyqh%l?zf1GJh)bH%j@8r5+#ZX7Cg73KkX|HU;e);zAufKl({_Ag_zkGiAGyT@%lR=!tFjA0WE8kt3CN^vb zS6*MYy)IakTN@PveB9ctSX^43urz%Si*k$cn7xR-U<3#-_qk&GB@uTB%KF&T&hCs7 zL`w)7Y@FW4jKVP)4oF##T-)IG%Wf-_jURSJYF?C}_CiM@C~Gn_Uy>;^@YYk%iRkge z43E+eT{9vYU)hH&Ae55r=l#@5% z1bx%-&RLX#*9^vs>mk!v56 z?;dkLW@yeUpo}(m4Q8$b>-gZqnirBQLZ+go<_iY86M@XpxYd?G6^Cu$@KbO*eS#r* zAr@u8Y>I--{K!{1c?3?ThRiEX_L{ z85PnY$_psm21}A%gVS(tLb)vOoNiK`{p0<{a7;&|;-df$?hDi`@ zEz0W5at0UEi$^LiPS&qhSJfBaR#NhF!G1|H!r0u7^0kkZ@2v+3J`3*7C_ab6$I5ou zWqcZuS3SwR!+>OrtVJ~uX!^}qJ6GA*y_M;VF~j4Q%F!coG(Msd#iWpoGI13X7ZwW( zNKvKa--?A%Q!sp~>M!5Ee*6CI%b#DLfBf;w?=SAR@4tNh`u+LGKcD~p^7{)+I$9-x zEy%qpV{7ko;iIgNIpYX6t{J0|$=uJq2y2AOnw-i6QQ&mt!2<-%WFGIqFJGCN9v0Y~ z-b(8~F(GHE!g)8)fz20=kKXy;Q(UmF;P0#?*d`}Kb;z}p&Upd{9;P2q)@l4l99SBd zHMu^Q1X&;2HVf{toBSqh(5S*i7e4BtgLTuHlo~W>yVXiHf~wFN6FeKS!|pfdz1Y` z3VHvKVj&BSaU1VEtHkeAeim;>uV%%hW$DB}2B^Gc~t5d<5MxRCt9&@1TkcEmVBYb z`Y^wYui?gayvyZo;&9z-EqBD6!fx*IAyrG*6FYY;tJSwYhONn zoz+PkO^a((;3Ng7CTq5NQA(%o0Jq1G#ctGg?8kO2kXFB5TWTL0i7x%1D_Yn?KV`Il>!g5db3q?WPsq(vSaKs=@p=Tjrp*3NhKM5OaM|RQB9umQ z*?RVDqEq?N!(cQD3PBB0lJQ)j;S?MfYr|}GV{tF@ud~g|qWb^I`WT6-LnB6NWx%l{ z>lX72|IuqZM=?IP_%M(uS#EMOCkoo7TyN|9 za-Su&AtU;Q((L9G_!N=tkj$8>U>>QqjL@*)p#o9$Ft)G&?INqPup1V}XR8**z&=k* z__jYGd-mr6y};p@$lt&0r-l+3nAs>;k zSOZd(>`PaBA-MEwY29X3z;5z1-EoH%meQ*Br~EB_@0aH$^)5g1U(K%~KVfW#t)x;R z=E9$3R4J8$68X5sX(>iKv{S35QcQW`3qsZyLQzccC7E(Wda+0`nt)Nx!hlTeFa=G} z_i1b!ik?1cNBsyKjo;8SnG`E?J?OBPu)Ek^2Ubpwz{xGmPn6LM=W82M3~f`!e!e;o zya~GebYO~BYp^?)L+g-iRE4IuNfSI+UHIM?WTS4&Q66Xab?_Ai({o$i<}i603m4kt zV=PSUl+R@0#+Lc*EDW{Amv^hj!&8zyC`403Mck|JrpKG!B+$oukH@pk<4KA^(lVyb zgvauh0iN1UN;3-+bWn!%79#fH8oWc zYbYcCAsEYgjrlOq9K{^XK|au(%T=B9F=Egi`Qxy_As3`L=Ez<)&3uV3B6)4c>56<8 zm#q8+L?R}N$&Of4a*4<^JTI-d>=c*9SM%C|0Fws-AZC3qGII2z1j#Y*g3DC9L+UWz zh?_%sd*$TVDa&D4Xcd-X9^fKK(IY^CAzF1ktji!@{XQy{{E7FrZ@bVp0u(u^nFtdf{~09a$lqv1m-LTp^I=2wg@-A zL_%%tQRcQOy*qRs+~(4wHp2E}ImXLPxe=DW6!Bln$%}AdA)wp1N|k>2XMgyc#sk-0 zKKwG~S~5pVyu6I?^s%r0GxfuNeuF*+t9|%KUcI349v}X@1_<-_;hQFe36d8;Okn_q z0tP!8oR@s933b6M3~EA6bO{46tUIVRi-9qvsQ2^^H;0e|!}dRqj9raG=S#ehI3t(y z8Lp8{hd*xzM>3Q@GSKmudyTK=fi$h?aSu83!24ZaVOZ{p37Y&ftpx^<6g4wx9^LySg`EZi_ z$~g(Df{}8}nK5f@b2>{q^m{Qkw-)P&nscABj{uy$9?rDHkGkFbb_=p!UMx&$ z+7ogXt@YS0rCTl!hhBHk_VqCz7og?#l!s&+Sr*+D76|l|$AMTt(;Q2*Dd&ik%))85 z7t^mrddd4hC}dsg81k_Mw4KdVLBYZNHe5+ICbdCEGL7YJkkR+PA+K1i4RYUJ$J#1Y z81ez1Mpe(Julf!n!RHZ9W#r(DG)JEDIvLx<2o^?Cs4>Wh&UtKm&g1&gWsp9GuOMLO zJRD|e-@&S-HqrOgL?8OTQFfZiFk_n2Dr7q3L>N}wQlGMYpE5)LG9T+|x}wtmrV@Q3 zMI8;^S0XZ?2sU1)mURIqIcfzc6|6!C2Lp@OPBs}=jJH7EIIh@0-PuEXcp~~L`2}f> zbzc95LWREm1H8WTHHdEjfb{w(sX$FKpE7YTjLEX0%+ zxKeKPXcs6I>5SB7W~469L5+usk|m0Ml}k97jy_Go!P9~{2gTvNak!QmG{r+v6-lun zoAX2x#9)IKj*jCBY#vT?S!dhCnnDQ+V!T0YNQ1%c27|3`rICa%Spa8JL~t6IM+C!h zUk%57mxgAxm6lIEx2YpXkus8tq!ge~gWhUEQK`Amq@rda!^K>TE;rf|G-Ma-X=!x1 z>F6?_YY0%M$F5Murq7Fc>A|BjdX(=t(Pca-7KwTlrtp%f!$L&OG!DZ8bE9j@`HYJ+ pAzXh1AYo&>^3Apxyhr@+{{Xm$wz-7h1^`YoX&(Rp literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG105.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..4bb5c469f015fb572582ac3eac06496022d8c240 GIT binary patch literal 27768 zcmV(`K-0e;iwFqq#|vfv14u_PFf}eQYc6(UW&rG6{Zku9(*BwIE4G|pk~+c7_s2S< zio-Uh&W>#$sk{B`@q2eHBa_MLz8SvJi#8KH_8Cg8p8SDPP>PvOZlA1CYmr1)EY zvVM7rAWY4Ri=POirJ3$N^Do}J|5 z@83W9?z^_!^^W)L@odrD`e%|4 zz#OOO``Sm~GsNjjK7X!%+nd6!d&Iu%y1ie1UI$#{=JfQ)O0q6l zo~?^h!Pf0@&esh;q9>eie#)~Jh_1JxumvCmI=l&fIGyI>(Qw*7^Qb&NAJbmZqD>}@ zl}a$y%O;cj;%M+`^Ze=}8y@cLZJ%>_m|1%GO0DpN+}U!ib^J7RDjU?%ao-|LnSv1!%kJo)Wi^JHG)iC%9NH1kjd{a z)08rWq}(X3?l04pGP&VaXsYiolafj(*H)u|p3+LFBt|I|p)9bJX~_w~(9>!zQNfkq z%peG@CKJ&_a7{6UR30Cm}?MC4HPA6VRH?# z*-eT!<|=z5I|0g3dt=(M~OlOfr-s(Dj2aEBZQK(R^8&_!ZAW9T0+*g zK$fCFcCLf5CVwzWDaHa2bju-!41U-$to4iW^jv= zil|hycnr-9itjFUG+hQP0y)ND$hnFZDinqZjD@C}>u3oE4QR$l<4`^K8nQ9VsgcrR zEE@H^Ax+L@h8UCqnd{(9(xsG1i4lp+LlNEWH@lpN3k7+KeWZP{IvIppr^QOKfPlMj-Y|MRStFdl-qL z|I9RqmbeOB7Q$HkGAvYZ0<*8AD5eo6b|qQ_qG2vzisqGQ2t^R)aV1&?q6G#;l%iSK z*B~1qcCBQSO14V_B8sMgXbJ%_rf3y*w!lOml@YK}J0uuKYY|whl1#&{<`_%Va*k$)gtI>4)G?caHS$%#e|3o zds|}$P(tarOAtl#z-r4-cK9mUCUgc2)x1yF+Iq6(*C&Fo*)H5w>|M z(E*bvRF@!0z<-iUM2?bCFw9UzM?TVEhVYVwa~+kmB@fAuVw}#XLMv<#5{l$A+JhQgqScfB2anNgkiSD*yyQ5hZzQmIvY*Ed@g)I6s-eXb4oCy zN@)VwLI_l6V8c|A!pK)vW(SkTokGPF9e77231)|wU_L4;F}cqM^N|ybgNc>s0NH>= z%mi2H45*T*InXFEf||KikZn)q2o0Kk@>g^Q)dQq$;(xkbb%NUQ*7!LmO1= zgR<0@SxI&|ksqKak_^iX|nlvu#b1#=zl)Pr-!6di6J8`O=6Fo~nB#mo<} zFlV8VPPfdC?M8cp%pffri<6a6c3fME6ywYePDg7}2(b~ng@wD*V7bD~Qfd)$tJDJH z`c!3kNK}#_d9vAfhI1Zph;e+i>XmRwO$n-_)KT(Q8PsE3S_E@QP=j%BxRM zMxop}sVr9?suB!ZDO~SnqJV-5gxtpSfBst83-Q&R;P+zp)xq;UFLLMIAfHU8=h;w` zs94dH{i};)beinE^OcHDvS|h~CdtSC^gNlK_b16&J{(OyUFM0CkT?;ECQoYev%z3q zZz&s|ob)Hz**MQ*OvL*Fy*`|$kZcr-k#Tlf1_K5@pl&g~CR^1%WYPDU4b zZ3MH*94{pqWaG1ZT;Q3KqsyWJ&}SfFJ`Lcj4sl8U;&RZ3Z$bk`|NV3}x|+Z+pMo&g z45z1V^zqqfIQX=HrS4&RMF}vs=JCjcW%sI>Y)8r!rAe&za*$13ZM(@Ls*8`fW}fs=8-H32Ne!O08#x5}Dh=Hz4BelOp?Nhs-RGQ{k7?Xd zKf9xC9wwe5`~W4+4`=^-ldvgO3BJj(`oPeL$CM%SPPH5>t1?NjXa&ZX{+ZZjF-1Gi@?sOwT`ev9RQ& zIrV16aD&dm$AG68f-4>8$I}^eH*hnHU#`VXiMhB5b5^@60Ag0WM_?s$tAZYRTg}dV zGkxgw`dvX|b^ZV#^pCFw(?Y;4Oe()Q*L?)z;>xc^Oj(*))0>Tt`qObXg;;ih@!I?4 zdD1@(1GkefqAk4lWHg_Lg=pU&5E%{g{G@dZK$Pn*XX4ec|GR_REPz;`8)iXwq0)W* z%7tEqC2ktO-P+%G9Z)WkV3>9e9Fm6#`+NDgY|=a)$%45#|L*m+`>+Ss_^fGqWswgl z7ios;g1G5LBZ88-&)z;-Toq{DdAAT#Lg(zv&Hw!>8}z52+Eqf!VG=kX&pPK_;&55x zwpq6nGa`2rWa4THPoQ6V$(45*KHv}inirR6;Pz(P>P^{tw)N`Oyfu3_v}P8p`#zks zHKi&2-lE%91D>H~EFUjcAu^7J%6#b_3B{l-7j0O){0fvnj@06 zLe-itApE!E^D$jhlv7IAHrBS+4%Q@Db8~yG42L(x(1HAiJ7q9kuFZ=uX?@W?E;C~P?bY->& zPv>)IQ#}nsi%8J3U!AB|dplbP|LTPg+#4biyzgS@96a1yLG<)=oaaZ`r+o6XB_!PR zpL`8-{B71B_jX6a=YNbY^4|Vv&_CIKuI16?)45OI+}=NoEj%pUJv=I{joxioUOs*5 zCXkca)|5jZsx%drZ_ipg$Aze z9Hh_Qrk=*&HQjla!bC`60zva_Gk%h2k8`3P7V$fxak!FOy76!d7X|@7zQN%72 zX_n~wDp;Ex(Ho}NwJ4)x(=FuIhOJSi=} zv&W=@SHZxa$3)4s6~YtcR_D)G&7WVFEogjm^<2E;PYDYwt6;1l1Z9p`nG_MRN@AJ3 zm6tC`wLtQMUOrB1H7NH+@K$JD#HTMIuQm~igux|u?|?N0Af(&^{OEkOPjrYvt&L*L zqp(};uMCAgJkoARB54DTSUOy(RG6ONDTe?u!j&aL1Fm-N@0$6Ya8)5mJ_3?Z*C!9Q zdR__V>Eb?3-TIhm3$Ip#>(pV~2jH^G_&iQWS{-REMp^(WpKsv|Tw)K9#f*$VWk9p) z^4=Y&?#W$-2ml!8)MfZo%G?q*f*I9a4tm94*6KwcJ^a4`c*;1)G3B?b!D(6=15X&A zRc;4f{a8gyRyjIWA@7!0ZV!nn5E|SJ^Op}<+#ih(muilZealF5ln4P_*OSDdPMcH^ z7UN9{inIdgi0)hVr%(_ot7zS$1t2?ZG$89xIJ@heU6cOuE259P0V}Rd!jMaC;wAGvzE6lzgemYci7$(9w{knlMeA$<-8;>VtZ#j)U#GY9x8*2RpgNw41&j9q>j zB+m|T$$05wZE=I4i%FL?CPh5?{a3-Xq;7>p{W^>3l<_EUX$T=gb=16C)Vzc+Gu-7T zIXHjPGbCl2#xSE)Fux0farsN$4QaQ`QaNE zataHz&oR3B!a4X3-5t7@3*DkXx0s=usTkedaI)|YdUtQ((e5p*7|yiOeg|C?SGhRn zafl#_NVFYh*N|vjj&b2;Jrw6LEHsEU1AblvG`M{REVCS(%mWGDYvx%R8V2M zbOMh2-qOhGH=i6}7g@A}xCsX?5V{kEC(IimRub*5IbOzZ~5W-wG06 z%X(zlAn3L!jY}#TcW*$X%(@yB{#-|dLSB7PlgW2MA*m_=L`Cv*?#f87h3^Mnz4#gdc0~Bi)G%!l%cg5~!JljQMaThq{vL4*J-vdrGn?qEkoiDlh>y-k3^|v6YsvkHiQn=hJtfkGX4al8Hl0cVI)PN|ox-DIP{mSFFKHR&^0VOUVm*0U)CQ{R5#08JA z4Ck~CNok4;JO^8C$t3n=P*#9sHvzJVI&l}&q0!ql$KUT=)&7f4_nIrWcVNGjte1aN zu*oE>$0dUoSBtB5JVYqJ%xNc2+KST(p7eTnR)A!;1LU1Cw(Qx+$3toLbG4i9$7sKP z%|Ys`zscE)swae$uK?G6QKy4o2SFSN%EDLsm$*{2gJ8Fv{+G;2u3l(xXM{_?T&I4^ z-5s27(yZp5X775b+z;x#@0G_KSqIAG0j`$cAN7@)PR+~h#b!Z={KrDRb;qQr{{>!u zWuy_~exa6j7htR;=$0_Rm=UjkQM3+0Q`D>3>Vn)3gO6E%o2Sez{{2e>l~%E9!``mW z%<9ycS@tsU%AH>}v-8aER4rS!N;rpoj_(pg4;_>cYEF+k-i`$r-9a!VEmS8bt_8Y}Z zc5|XjpD(fJRKkO*@S7xMme)Zgx?jLsF;Fc>iIl&G;Yj^mp=LIl$dX|IZP)Xa}wiTz3VR|4}(#-qw}W(Qz>n zCOP*PJ`cK6fGZUEFPVe%P%!!U0ch^~J$ZU5VfW>W`s9=iA z>j|xMolEIDSKzAfP3bf1i_%g#t9|Tl2RkbCa6H^TJgDHQJ9u{Rd~A4f=ZjfUnwzJL znd{&w7`gV>EIW91@O+qS6Gr&zoNfyO7Q>8}>zB|Dql%~`As@XNXqIPDf<7}JD1%?j${q5=Ur-% z84-Ei30lx=k8rj^dq!g$=$;nF0uBZ^4}T&usY@lRSXCq?7Rm6XTT)XZWqpo&{84qZ zb$&`w{B#uQ4aJn0MB9=GR!2yc#IGRHzmpgHssgFNs7^ozE4T(_49KiK;ts$DS zjy5kL(HWXE&Cp!X2y;l1nWXLdBVvEE8~JISTE5G)eEreYRniCSY&!@N2YM;L^oJhM z20Om>t%Ei?XtS?LA|qRJ_Y}}|z?m-jj(jH3`1!~fkTI%Vp^P0qnMy`Rw=lS2?Fxjr zN4igasQS=_u-Oi!*(>`SkopT8NJL3@xi5>gvqR;Bq?`3%2qyup0wa=7PUo)_s-wGL z<(_Pb_StSh>^H&CIgEPS`?4^*!t-7MOIxCZbLH%D|8f#~gJzA^@aqrFzCLz8kG)Sh zuMs>YB}KJZ01G1_cH>Z~h^sl=9q-|E#e6FR@N z(sce?dV>tig=S5BjQEy?A@KWkv4?N}{^!$=U!R_zzPZao-8qC>#LIVhdG+V4n zQ>_b2wU+C%pq0LBu_w|Z3;jTcY#T5Xjlv@s0VBu`N+?gOKdp98yG#&{O z)V&*#i&c|zbtY%B2One<(#fxhGxF3Q{3f(f{n5?BQ7Xc9K!e|e*q_oS@)SnpfYtk~ z-us*klweHu)S;E;WN?{GKNTid3wy)!{7TB|NjWx7SswT%x%JVJwd|Op^cBx6(%c+G;qXXhy<%mF!kle&|S zS>m{luGE?6gW9nxvtySxbWMR|sL7_%$lX2b<}Bg3ztx7_`5Sf%#tK%i!of+clqP%&%<(Wmnl<6}u!WWVXz#6?Soy z-8in{s`2USMuw*A0w(5@a3Dl)dzhsI`+SAdyJdkLErTMf;Hn3U~2W&W%X88L`gD|Z>b|PHKibG z3|;Us%x?7QsKa?j9WJT7yx0=*7nN}w$$e!p%{A@45d7kf^!Zg{X43kO_t`<+Mfq=DcJfz3hNeNo-FHS%UT3GrPh^9?cE z<{FcWhQ?>GwcWAGcE8 zCkYV;oUpU3z!=AamKE+dN15Cyat~MW8ve?M;Mn_LP1!s(n?)arvvwO}mCTgpbf3*+ zh0O>4CKssyeN2dEo7p`%(Q&X&q(Vyxo<{XF@#=~p{CpKo!|tDbK9~+T41myqoH^@D z1AFk~*Lbx+L)A5J4;nUf9Rh7t6q}ZeCllu%IZ&t+s;W^_P8>(~3YBZ1@(@%|dKy=P+0FtHH>**%l{s~wtITo+y| zv!77c{pIJ6pU*$P|CibM>+$y&|J(E9pFf_T{`0S=f4uzuVoz{oDFy*cMB!{XR$=;e zxJVA?PYkLZT!kGxdpMZNS_h`ERT?z?d^LL53j026?(gp(9v(KE`@7AZ{IYrAzwfud z9Ghm~L21T2WbO+Rix~r0^LtpAhl-<=T?eJK5ol+;L<(wZf7Jdgy?EiuoprOdKh3ZQ zL*=73mlUdHP^B^mmu$U%fTmv^i_wBxBUC3o1b8}p&OcXl>7zp;ZOUOg6-f)sK#lWE zKBmzdsamjI$-2*_)FMm{GNm3w;|wx-K@L-Y7$_MVNaHnit;^a6-V{-uvVjvbr2bND zvat;3YB5%!T2R??Qhtyt;^nR;nkvWm0je}U45U!45~}G9n-y?Z5C4{ey<8ZQ@$MdX ziN+^{lso0_Q0|~612Vl4eTLXLQ3%oN?*FAE1FPPbmWbaPE1Lnb8YrjxI+A3-_mcrk z4)wCe3Xwazu?l6MR8FyQ#BX+Fa1w#ji2uTz2>m09?TFM1cy z-xPUP#?S_zF?1NKAuPvk1;Y>H*7CmB5KpoE3M{1`Dkp3iOEMKpKZa#M(5{wZ`6bqp z^I$^8k}}5PyM61sLyB5oxhxvb9utNXvUQw}1Y7DWLtIrwELjmyJ9jZ;t;5bu(Pyzb zTW3lP$hJ*H1FN%T>>e4q$NP5>v95_~a-tZX6hjc_%84;2Am}6DJYAFowPZY2!BLErPeIx~q(xYWQ3Rqhz@ua6S=V7g6c0BPO^# zKD^gPB7}NLNh3JL?=-s)L9SKH9(3e%7NkZ@vccLndU{e=sXMLFbC$z6>5E}T>d@^o zdPJl?_j2)jtGMhuWF@JE^!^j479y_{OZB9k+l!9oA6wAc@p)>;=LJcOnl$^PuaR6W zkF=HH822={+$>vG|AW2b!V% zc4dHxvj``5JwCFR$ie88r~1*=`_V4|iE(ja#E88iLWU>~+OBt*wBR-HyO|-ui z&mcMLHIZ9`>$)(!O39r=Ym1B*2wnu)xzyrSYMzTvxT~GIDLW-HY0+`gpE9Csm+aUn zNK`}Yjg~Ig8y|g5iF~prlWHT{$1-B$cEcxr2CaiDOfz7Loa=)XF$5VIWTpmSvcZk+ z8)*o2p&``xJ%ZlE^%sR&iLDrT({VJPEijGQ*%m|oVp>4B5S#WnW2sZ)^(K`tOX><0 zq8(dCiNa~rLG{kp(K|xz=d($B{qWcG!@dw@yoKZ>AqQ8~Zl)#UFrY?NE4M&jgNjRH zVq#}S7$w!YsHQaFf^nlIObweZJZu`UTVLem%1tnj?B3+crBu%yHN^z)5ofQ^zVY^f z!99kmPu4hr3k}sAW3-RHvm2^GFE<9&krei#^p77L{N~>tG1bKLDJM2**4Oev;`pgQ zo5EzhmZ|2%PXlC)F8$BNYJ{e6TADryqWMezhtf1J=o)^>!$$1=F!aN>fB*C8$FEP% zPv2htdUW>XCz!Wu&=bqp-kYkqh#><=bcM#XXvOihFhxtz8uN$V*KIJFW1$XYJID0V zV&7VtfOoT24%H!kzC+x@!tDF=+fVsB|LOOq%Fg>E|EOO@K4Bh3vQvmuTFHs+lvt<$ z4Ms%nka;=|S#I{W{fDB}pwXIt5^35jaMR^Ec1NA&4xNZ_r9^ ze3hjwrVpbvQA|G$uvx|QuY_%i!GnwG7XaLzI>Zbn%Mqj`7fnI78my>6`|N`2h3wW= z`O}5YQjOgW8#@^(Hps?Kw)PDB(NxbLxyFy$dSYu{pIPIuTZzMLS+qhiOkT$HI&_dx zx`91-08EjoU%Ec5RjNy_Qcd2zWxLaXOW9ZBLsBj8aYLZNyZW>J)z3lM-8pI-$gYlJ zS=Iu;Owh#l{D(AK^FZmlIr{qZfRjpnQmha=M;QzgXA;{xYKV(;fW6Zo>&k;H;U_UG zHrOK54eT$$?QTUdKVketr1EpC{7A5s49Nv}N;yGC9H0|IKiC4!@n#EZtfriGMhCcT z3Us))bFt2E&rHqac9(2*#m;)n0KNk&tEaYa$spJRESbh$R~~y!3Yke*FN+ee4YFi; zqUk82@lMfFw3ebJCy~uIe#eTIGc8)>Oq7nyC|XO~Wc(1PxCg;Ry)f?-MQw!n1B*J(Wd z9b2zOXy;Gksn=4kRZkgmjBNos>*TnSmFo|izisaBA2#>*_jjB72Q8;7 zX0r{Llc5AlUAfW9F%tOQ*oeHS~vox`jihW!KqN?Q1#6O7*Z!wQ-MkkDE8d!h&0w+UmKgR?i8F@SaRgzV6k_0$9M> zO&n$|ZckEc#Z=AN>;%DCP7-YAVY?58b?2}bxTREEjtj1?_H5Z)rP_TK?I@+%Q`@x9 z2kWR!`u@nvFjb4z>c77@J7=d}HdZC!H2mX}vB6ZX_}XTE#*s0jPEiv9O#~))sORSa zY}`;*T}46J?k)im^igF^cq~~gp%u&hm}?V@(&i+(iK*^=LsG_49iq-;8N_Ept?h#vHwCt`Jb@FNavZIFeR~^<*b}l&uw0=7{ z%fH9KaeLo1feAM0c}6u&$8;_iZJ>n6j*?uB#n7@9IA+)tG3MmYgx7JWGG!FGri5yNlJO3SU&Qf*3l zqs5QW;t;jUdh1ozk7(`R&^)}&B>WY{pw7lpEhEg>TxH^yiC#~7DUP!(okOv4w%+6g zAhbRsw_uhQq95^)HHttO{?q|S!EyR@Y522=(gdS z3}BSW?$*0fz5Jz`2RCdW$MKuu%M}Og<=S`$MT4)+2Rt00siEDU+wT5&EF}w04LlZ^ zJ`7D)(eszp!0tBf)}*>)iL#J#G#wTpz0klzhs^scJU0MO2&o8@$x>YCWMzb?acMqS zTplv1OS^5C7Hk2FY*C(-B{|c&v_Pa*Nv+ZlJX8wqShv6l*r#Fa(-Vx*lU+*BU_ex| zG}$pLCk5TEOJjIcwn^a`gh#e!OXbpq4sjqJ3KYFsp4)`yQwG#Uo?p(2TVT?B>Z~_A zQeY5jv~-%C*z1eJCxY{g9y4&Do^nVXiB52A$_LSI)hsjt)C6$J$+v;m zIct$N)J0kYIod9Ya&=z_mWeDws7j;~`87l)cF^vX$dF23u_ZF9dsZS(Mdaaq@Dfpq z-U>jM*r{U|AQPsRS5ynCysm`Tz=pN(8f9=pgti++KIS#dpWOa{=^MIpk6ZTx?RT>qhU>Fk%Ddu-vheJ}M04Ea2yF3MfXa!{``91cV@UL1F#Ni=*D~;N(JZhgD#VE_&=s7R!L^=#x&60#v6gPFc z@RnOz3%1xIg{=%uHCM!NHADrc9d;#ZHc_E&M7p9tVN)h})f5nv9`D{Y1yVh8ucOe4 z)?BoTT!ojFGz7a3E$0qcpVav3#^Wnj1t(Ir7CHCdopt4~9g~8kU@e?Q3ng$Tlb!3( z`JKQWZEfS+|Lvat8frb_v_Cvrj%kFaW5wXU#`V2ndLAFRq#bj}#v;k#=FUc!eFq@N zL0W>`p6w1*j#lO9Q}SraP2Ex`Cz}DF15O@YbDM#gBt2xQOn#M(jIuA;q2ad@hi_0$ z4fc#AfT^oWdg)$){0!Z@DMFJGLZM`^!DM8w-UrkdFTQzrc$lZm*=KW7Qe`%guLz&K zdvu7x%0+dL&Sw5Xt>p&HF?7}eXBjPBiPG{*t6Fips*2mee0g6sfvwFcb|RQUw!cw@ z_$qC#!?WwCj?DO>?=-tNzuy0W@$v5a_g{Yg`1$(leox0m-v{!zb*d_sNrWU(a4@F21svrHSC zG4C48$R2QXM$On&nX&ihn`62Rd&15ppF`*%g-qBoLsgOIPPtKT8hzK`I0Tnjc-hA6W8;l_uv_=|ug$Nvk_XSnZ zIXFP(N!hw8wvJBnM6m}tOt_onx#Y$b3`UEnJ;0<%H?M@c7_zQcZk$~|Jr8YfFZSVo zhHIx61KdHz%$9rdMIXvhxj^GgUkDwe4Z4rJrjo)sYV(ugKUTbC#B2dOjBZC^ACn8F zxXA~ZxY%s&_@8@SqE*OFW84fUkDM!7(@D!GU`-$8-c}F75K2LQbANxg5eV=3E#YwC z1pm#TsPaIg@<2z@DrtnVh1LW`dcR$uB?BHuPX_9M+EomwjjV3>tF6P&*6WV%Jkw{M zj1WrypS^S2jpInt@b$b)VK*Z)@(9dDgILIWyW6|B4SUSd7?4(i#KpqEJp4vPH4l~D z)s@v$Z!b%fRy zi_40=R%9<`bmSdaXb81lwpKR;<2x)CGvFB*I1%+8q_1dP9$&3f`_`%#aP^HFdcXs{ z+=kt9^8P#>4`U$o3V?decZ0pb$;O{JeYq^|6aMh_1+8;_?Z)*A&xhHCM7idJC`)VB z7F+E?qD9{>ZKk8u+Ze6xso}@XbSW2CiQJ;gE{={?bvmKbiKdnai`fC1RDdu8HXlrs zTIE=L9=7lh_hqGCvFoeYbj6-cFSfxeBF?j6|EU)SwSm4 zqV*_{aEMlP<2Ho)O5W5fInh|4T+7j0Xyv4YX9Jc(*Wojm{J1q?<7HhlQ1kEV&I9V5 zj_O_wsMTlp5UfaWM9IE7gU?joUgzI)+#lxAwnUf=t)#Ls;rT30Ir_ezR z2ev&JERKs+>4UkB__q48Qr^?dQyq4p;8ot3Cs}cIIi-j(e0+9+f<6?yx*s2VhHSu2UF1$_xG81n|`;FS1g}C*ly_q`CI;B z{+Rx1NaZTp4m$kR5WAVO{cprGTR3EEHby6x(GE96j!qb+C)e*Eb*A<@UTat5*B`(A z@$iFw?DxNJ|Kq>@ZGu-;B886c_Dq(IU=}4E;F^tyCU5?-+1zai%1zTP-#b+nm+rbP z5csZX?_%-*G(JimxQ+uKZ&VE7p^Aa)g3YImZdKf1MLM|zjwQzq_=YNYISD-|Ei<|^ zB(|TQLi&}SvGV=&4IM&t0X~yUixUhzJ2P80dw;l(-o@$|uK2WoEyUE#oI)Zg=-Ie)6XGKT#QFWpG&rW0vz}L@~j(mKe;V z3<7E#R0bDjkfm{b0Sg`dRj72J@*xX`X7CETb2hPWhQ3uLeJ8F%w!i+*@AqH(Ymc8h z4-en0c{&N1dM~Xg>7kSEY;p(YJKh8vniqhk`eXjG{#YXnWfL=n{aM5(B-zE_A?+W6z32t`L;NC>rR`=FQp{wGlHoRg%z0OI^4tpSUrleFW+tRZSG7?eip$7R40RiI>w z1=m5!#fHuriZs;{QFOsKZ*3e0>l}gNOCrsRFnV`^;-!KRvBF121c^gVomgWaSJTXx zO}pOW@kePQ23__vHN~J6JyYk$pm(Iid0C#2O^RR+N8ZW$b`NsRT;3;hnKtTJj+o$} z0MO%;SaOGgi$h-_<6QgVpguvXdxGASri47Mv2r3CxOZM{aAiuOn;)r>METTk@WM2C zayYmmvd$h3zB*i$n9^c}m^IujLMqNP7H2y|x&I#|%zVD5A<6D^=S6@nl(r+-nWKZ7#diXqB@}`1rc#08B$}rmF zR_bn*x{22hb0`5ineh==))j-0j+@^sYe{hpD}|9jAmU=Y zopK0m;O&{PGu&^_C+tm>Dn}4%77h9G;Gsb=M84}bv4k_2{%(SkCXDrWJqOj5(I~UX zx}A?!EE?%GGo5AmQ#)LM3RLX1FF@%&vF;Ne-zPRnbap8p_qo5BsLViv1t|vA4D_tM zx_56IywZZEvFwi?eM$5x`bBcc?o_yf$!m2vgSQ9qSYNSTc496#J@mt>A;!7RuMzd^y~^B_z|KiG?LF2Ydxk zQMixtoPLn9ma@7OS#%t@Q4)=8x63O!0MFW}ix&#sqWzR0JFI>72AzvgoVQiLv(f78 zO1WE>yWCs&Igu)%n$}^B9g53>DwHU83+sr#kLf+564=(T>%qt?j zy`0<~S7vh4)Lp!cHbR=hOg*TW%&f_eA? z^SpChdPA)#*TLgDIvkLxa$sNjAlACPr{>M@s5H8C!qP~?+d6Q1|L`_N8X$_gLMn+% z)jeqcl&XRVdtss#UAAgXsl+YNWt+$!C!SjfE|!$L9Q*yYn2UeB!8!tMa+(Dyw5`y- z_%$}MXhHO}GxjWcBo_S$iwNq>uM53rH^;gp(42JR|EO@>w&OaImOLwE6L{ zrnD(-jkIxaV_Rq=``|nq^Tk2hSGY{sZnOLJL>)M*M_3<&x>J`?D;QYxVJ?Ux6Gym^ zxmElH-=-Gx7=mQ&>{scJakfxDZv>@no@PeRE=M7HLsEb*v_$W zuO04^$Moo!p-tPH!>z$_mFNkSUHQ(%bfC@_Ge(V7Hww?hY2HDNFeN={pn#+AG>F4u>p=oE#38T&fM$wue?rPCG(N}Bf(@m=HidvwJ1x)N*cCu|gOz=`t z`vnboOUkyfaUoS)h5hxZ#w+D&hR{dfUkk-sO26V^ymH3$@k*D{l&j{7lU-c; z78>i5@&Pkz6WL*k4pA+Kr>Fw!Y&nGbyILBP4)vBvSaDIQ}9*hMQ&@L+TCHGdvtuS_dS zjcha2BZEakib9(;1$^!x_yhIGSoTf< z^7$)86tdu@WlMAU@bn!WQng(9FdL$0{#L-xiSpsiM+7Jf+zCr^or|WpSVbTTNkOUv zEkLyZZ66UNOTo$Z!O7&_!mKi0Ng><*zUfm-bgDEr_N0xn)r`|4e{F0nj8RSL>$A0T zbht*8sb#dqhYp-A7=~8?DH_l{Sq(|2h0_jxT1!7R$C7PF&mdqD>lJ2i5VInf_B&q< zSyvLWPTb9nlz=VAnueFRyF`T`c7Y{>s@{JLa)hEIbd7UM#yOs+%M*)+qa914xm+!r zB@@qBkk!7!mG>P)>&#f*#$eN^44r3H7F*SfsrM$<1Wg0iti&Is7eR@?>(^j&thh>$ z`-1V)=F|4mcDud%Bp+_?w)DYvOJ8RH>Fxg08~JpDSMeUcm!a$#K|GPCorq>5j$qXAC^f6}SOX8=z?f#gCw}0x$tn$7ke5#dqRKi%FtUR91VUct3mJW9=I{Gw zF1s^A*;T!WBj~hX_px8ZIpP54)Bumlua2J8z!d-lR_+Nkf#>u^lt3l0mB7FRg4Cek zWAShh1J9B8R|1v5HUcAvT7@+-5erznt70HR@~S4Q1;tDq3uOJ1-sRV_3?3zS=!aTm z*~2+5a*EcCqm^<2WMxHPETp{(fvwR>YK^04%|t7i7ifw44jvqfXYckaBC{GHH#`@Z zV(^;h0&{Y>R`G1v7w3zpkUKy&#G%wJg%SWOQoTvC1jm1<)Xz#H;VB!WuEyZ>8N-Q< z-(S9c{r3Iamp{MW|M*TB!k=b}a|Gr`6_uaah2s@uA94SkL} zp1yv!{QB|O-1Tg+TwbQ!Jz+t%XdSXe;cc-YI$p-ssEo(!(sUG%;o#yHaKT8pSbFZT zSQe?uM!E+TE;f&knDo87>i2G{M?i%eIEpj8DaK}7ly{>)h&QO46(8j-YnE;K^5CIS zW{SOaA+tqbDBvmMaj~F{H6_uh*ue*(WE~Mm*veQa`Vdn|R=cdFj0X=QPy(H-d=R!? zB?9p~#TiE8Nia7ax#5T+cDKjl`D{%-;fy*G-7qhnO>HS5PH}&jo%@sQ5nkx$8O?A$ z1~2P)yTqL%?B6b4^h>$#1P$G}i7o5QxL2)ehux@l7*ES&Ze~-*cRNG=4KBDp1ARKbuJ$2HaA94trCrEXUNVq4SWeZM`MYhlwS$fcM@n{LhB*&!Q z)C1=DH~?ySMqfm@Co)fjx)afD$mqOKH!Ep|FqU2e3q;n}3cHgc5 zb0$hYr^XE0p_rkN^3R)KU*v}s6P$X}oZcr#&m&(!f`q5&@W{s%ar$S+?j$~@& zp|s83HBEdKh!n{%$+?6z=}03#Lqc`x(8_d)w=+2`;DO#wK9u*e@Z<4-xH*%{LB2n| zA=aGhA8nzZReYYa687ea|69L*!)d|s|5l5}vth9q2#I~a6AOA6vF_MYw7c7FUtl%k zAVU`quVnFXgt(@CL`c4*)a$JAuElY%_*3mOrz6JSr?Ri{_Si+)*RlArVBg~1zZewv2aUakc5N5)Vm^Y8;y}Q5&sy67M@VC?Vzv^S?FBwY)KoS*rD|blM=;u z;M4JCW?f%+)%ArVna9god{wHS(kSP~cTEBh=o!L8zZ8jU7>8(BiUk_U;idDL&6pKX`Lvbe5Y&lS6SOsfFL-Xv_ z1#T$GsE;a0%KW{}#YI!|h@roS-L?R!?aV7_XHEq&D_buqmxLX7Rt0(NTM99|?QXky z!BB3Oc~FFI1fj?$(~kSy6nyw}nw4e78S;{IT{Is4_ZJoW!sX$hlv;aj`1r+c|ND4d z_<`Ta3FvH2D1nQfIfIgdvFlv*><g4dPD;K0X3f z>wXhZdpXq2_83z2*7GSr5p2b2=2B`4K$l^28jw?I-)i7#UR9k7k>}$;XS)~*TfSkj zco>xSR+So*G$>6e%wW#EDrgPQv)MS8Z3+H4#L2fi=PFJ&j#I)C*i$g>1&d6oa03HxF#OzfNrGa9n{w`MNQ_CTWWQ-`=_P#&IQg{5jv{ z06tZ9?m-?1BGB$@mf2UryU}_LNRZ(b5E#gZPu1z6$T{6TeVHCkbEa%aq9}@{r+=(_ z{j1&@lR=rPeASLDB+U0NJUY_Un-kuD>^S}em1hmg$X#CU`7%vpvOH z`-tObCYH+%_&`^!m%P$TsdeCh52WC6?+T{zdOV&cZ(;5JBXPLCo)N{<0&uS2ySrtX z3gsSmam|$twSzZq2dCJIiEUZ#?na4iliS0svLpkSc zw!~fa*Yi&mwgymnL26ZDYb7Erc-Jp%U1pScxg>2JkAYYc8IG4_!YWiyU=rWOy4_cRfb#3Zs%psIvm&HsaTQEb9rbDc}<5{bX>+4s` z|EKEe+pxCo@T!;|N!V@T*NzV3ol?R)#syrQKbm)&MROf~*-Qk>azYZ_CPzok?)`+<6^oSbn$TarMl>V+J8vQ@$|+ZhbrP$t4O$$C!_Y$-4cd1CrB*Qa zR>2H5mw@~#cXki0D-LZBt<-I#K0SSUdieD8`1I-Fk$-ynba-2Z-0nxnZS&TkjGX#I zEh3mi#X%z;f|x=YEpw`EyI0$G-o4h>=Abtqt7OR=<=RMM^5;c$j*8ZJxw!Y4=k#O6cVaN$Y(dKrnut8P)~b0QU^Db| z0%^xI&6rk;Rd%ON<&!VeDuSWU(azr59T*vzN6LwLkrCT82bbj|j;janFESJRu9J;t zEdo!0#`Y-7Q|1KH=DJ%%(0asRliPboUdKds);C?I)dNscGBQ_LWu=)yj?EehU3d0f z(@BlXHtU_%<#Lh@0;Iqukc@M_&SxGs?n5H0tpkN`;aVkxZt_&iLLv5*uc07>V z30vx3cjjKV9Ltm=r{LDiSq#J zV|VRi=SU4)#AM0LP;?cXT5U^~6M(kb76Z+{5TXFxOOUoM>Z;g@JTZ2981+6|VC+&e zRY{03si#y=xk+c;NoQR=rL;eN)!OiFHcFUW*t^J&Zldn3$6518v_JNoA>^*T9-1B} zIgEMlWn6WnAH=xr`>}c8zSFc`Sg=<&b_Z_ktQAks<^|ZuK*_jpH7r|tUv&{xEg-+j9g<|d+u5BhS>dJbq&2NM%rI&_?OLqR5 zH*J02OY3`k7%gXzp_~0jIg7)Yq?dy@%^(oP?8miY)db$O37i_`an+i+z;791Kk9_2 zhMv4)j7;gd1$vfChjvi83YDyx8*;fgXrW40%k(Rc;tbPw%Vqi#K60*^6UkA7BButy zkX-7;*dmE(h18JRxm&PvQ~20=!i$5e2!=T4>-0s$(e|KO(s-6-{WU~}G zc(=9(7UaFpQ7Bk@11qF%L|-cX9D;FNZ?OlK8`q!G5KJc}7CA_)T9+f&5KfZA2-#7Qnz`5<+p%A*ptO1Gz4-Og>!+b=u@G4tLP)| z2+KR0cSGTtk)B(ia7IC63s5DukfWCeP(^xb4AcxTzOk;}S-ta;+yh98Z8nq;>yzre+`;@4a*ea;Epb z>_p@{#E{o*Yz_an&YppDRt_)9sSW3iV}l5}Ma{#CDW$s!6z?@%nX+LP#D+O4DH}|= zkn4F`&XudD9m<1SPdjYGCOqwVmTZ=%-H}yW?`ikpEvJa8*{uvzMr%@H!kR{xlNCD^ zc2P^UeZCsHmW6cd4arV%Xo`C5HoYA!r_4+n{`{t{uyN9G^liWQjN#>refsOL4g0_> zPJotj9Zw=##krm3cq}w42@bmibzS+GDTB8+)Ms0{AJ6v~w~eganh}s!8h2*pt~uT& z`*ViaGs<{dJzGXCK5qXCRq7-^qLV~lyAQU`>pCn%O~mgwKC8kTkGfB#lWe_BP&rM8 zHMEDs50DA!T{(8-vm14OYr?E^Em%LWdf$cfsaWZBM*9&B)NF@XZ<$mFXwl@uF)=T9 zPFkwGO}ZAPK5=O?N$#?9uudX(ETgwQsafZvjardVux9Ps&6}I-=DnjU65cno<=~fZ zt~8a^xiyHz0oKYI#C0OA%he#RZ@a2r1kq;)Fd*v!B7b0Q@wt&&bOG}CX(p{|?SrW6 z+p~$t9-=77%EcVZ&}B4`lK550GbwwBPJ$J!Vr0aJA}+p5HR$A{()E7^SV) zJU={tdc#qj8q?~la@6C9!odqxj>H+pagKmUIZ}>>I*`~2Z1~!NBH(gL;X@UHcd<5le~tO|6w26IbSAUC zqhLTpz#|<~=)s2FAMMfV@ZQo9S@^WIxs?K^wQTTw)1&v0@azM28sTY#H=S=dTRRQ> zbBuLD()D0O)a_&4KHjJlL!I(b6a_a?Z>uT`$GE-hc0PWZ<5mxx9aZ#BxYZ-NPSy36 zxz(Z4+lH0B%e&PPaz-W`XWvO=!}9$bSpMhbTB6zDq#_4ioEzAB2@1t}73Z2U5l>L( zx*s$))7b3%9hPp7fRg~JAcx#vw(}gs?Y{Cm%%`cMS8o(*3{(_8-bbtYXUrL$TJ7x4A&Wu z%b_`S1I5_XlD)TUSkn>pTO3i}`s$GFrd3kCAPU50F0jL9EPHe9j3JGm^-~NL!?Q8; zVhyRgeicK#epLsJk1>Rbq4qR1Vq7GkUsu4`uu(D;ZGZ33d&(=CWjdgD3j=x^C^_U% zsJpyoy9!LC7BGiFFRv+J>i~nkuV}e- z9n*O|hjSaH7YfmP+BvHmrPCGF6?jZ!erL2}r{+WIIC_xN2#$(`U-I4~>e7j3y>h4A zt>jMpX$U27uwPIr7suRXr&S8AQmpX9lYv|vP?D)6>y2}wpwvz%MMqilfcwk?*36IC zl0)&(hL?XjBbV~L+{Vf;58ctY5G{# z(V)Qwe(hz<|1bQfUp{yAy?*3ByU!wjVb;KZ^0pwwx;O$PlF4#Uwi#UrHXVvl+F`!C zyli6lMF#l01WaaMa+R!=O}Ar!$bwf*v-?v@9I$Zn$`B{a+q_obxmNA!t-#BrkxMdx6 zHivBGRK^(@C+F+Uu#il!#ii!D00ZV%oH19x?jEojmB}y`K`rwKYkVrsw}F2IKR&6T z(mfwQy62KH+k#juu@yrvm&MqsaRxx_HG8l*4|^YrQ3Z^5s9wBjI7|d=%k(ayoS-HH zqW%*&FA$wj>styt#fwMnN$sS}wj7b+O4vnOoQeG?yiDH6ec+JWBp^gxTfFxeZ2;Y= z=uGy1q~RpRi}ccPYF%bRmlZCBYY|+stLW>lq9|ksLpc}9wy|5;$GG=sOwrm)RJNk& zX{(MCNM%;!bsQS-hx6!FZK4wR{OS4O70F;%oU~RX70LNX631`AD1u1taH1*)RK}5v zw$lvQ^&Zg`uUDKLz1})y-DxlW4W#4EhVwGpCj56aj0n$*GUoPsxcM2Gk(bx!f>4QL`VnG z??tByKsEGkT0`%=h;!QUzj>wRtr*u?QNZG3l}vL;J&qkNU(Qiie-EzyD%{q2EY785 z#Izn?$hETRLbF!Jk?cWmT!U04_k6D}MW)zYV3UG+l+~ZqU!9MX{P;;!jYBmK-H^yA zVh&<~K=y0d5IT0@t~G?t=A`Q$O60W@dAT>33K~SLt!{uKXWowEP3P8>mK4^VE%I(Y z`Sp_=>yXG^ zHcmr8){1j?or{0(T+?Ap7=u=J6w5_={IVP+f}5$^4xX(A&#X%1)TuGcL00}1*^iQMmW308>va#~&Rbi< zA2w&zhvWX7Om+plGa%xnz2;WTG+w6F!@pNK{CoV6*NS&fz#-=fW0K>%z}AO7qHm{x zlMQZp-${+n%^II!_csXbCA&{#<&b%FjI5EPc%e-alC$$KNNL6OLsndO#-&(POjs}& zlKPtQzPQ*N*GM@dXp>2^*M-?DRmBXFHfAu6f7jCq%s?2IpO00t?wc%6oDS5TFpLIM zuBTZVu-w69X$E?CLEuCQ!?UML*2qSo2Lo)Mdg*0GR|^;mZ_6q^w}8)iH}Rs#=~yx# zH$Ovo-L|S4kQJ=wr{_;^Nn0_%qogTmQ4Zo+(QR~0TCBQ_CrL|jh1|EsTK5}kRmvoO zmp!SfHzGr0zGg#g2-;D-i-Ao`NGUJ7b=fIr7y72vsGi?Db`I6WyDZCh89co;{r8`rDD0jpMo6AMv|qeTre_n9I|<8 zkqZ#4UjMw$v|wtG(bn=8C91~;e2B$SGs&2P&npf`X+U=0!G4xev&cq4+@cgOeC%Y` zyOdI(dVYL%I1j zonka%AvDxi$dXGp_TH~+j}&Ou$dAi+CmdWT-iIEPE-pXa za8ppK;XEd8PK#c4@(}7E$k4`=97j4)5!Q{VciWgcezdccFMbd;;Ao4t)S{KMTfR-JPVLT}nluUt3>&7y>QH2-mKwGQ zaK72ndiPD$yQhS}qANa|AlF6`$3}8{y^XiY#}%7riq9S36M+*pqc4pkK;3; zO5CZzmSGTYnYbB)E>lHy&vCqS27E5a{!}!7gT)rgSQS~d@TocC`6Dd}rPl5_b+l{; z89D0*Qb&)mtF=FBT|$|gpH@o2D;aUMs*Nb4#AzREoyAgFf zM?LRyFn@g3^GU52BG|gRSRiIjmZ8WJWkV`vtKvPHEWcB-oSm$cr>=tItigz!EVnho zL{3-A)qE~3#8}CSrJzA`H^nr(Jum^) zc{>ENpxV(s!Fs5!Z==@r?46TJm+^8>$#AF@09(dV+WiHRE8Z$U?fj0v8*afBp3v7B zslm=^y|M!Zdk{m3o)Z8n6nfS!honiR24~BHvk>DCO)*Gvfl!2tn}P)b(TcXdj*i^a z=t$qBU7%I(Wi!Txnk_)L!RLGrNAI&UayQB=)EO+$eW5>Pbc?m?6#Gy)Y zPzlaNh7wYDo1&xf`SHh5O?ijgz1+(cQ`&dM^ZNP2waKLext8BHau;3JrN_t(PWN8# z)H6?WI@JP`;7@ecFbZn$a^(8RbrX88MHVfxEbOkzaGQ&Dsu!Iz$iMb`VC3u8{vxrX zBO})IDo*Jgov>yzS`?=xj~1J>^TC?cndpgSEz&q1Pbx2`ckE@F2tB`euE^R#?2kqw zooYa+2KKvYU|)j|j9yxxlq(&no?1Gl!&&HR6`vj->c5XqpB_Iwz5U&gwYefU;cDER z24rDmzXX@zczKYeiD>$As6mqRnMMx%Cd26@^$d}-INl>rLv$5G^byG7h`JCN!XHK~ z^~kDHeGd=AlN`#{-r2e!JQPaRl&SY1VxiD8OF-DIj{IDj34xX$chk)NzBBvCL;=Jqpbj~7BG>J{2dDdo(VQJu z)RnC(mn<()J*U{IMaq@7Oa{?1ojuDJv)&?CI^Um8Af^*)R}wPR>q@RSVC!=9%cm`r z&Ksw5a*`(%u-<_9XVKG;UAdm+^N2b!t88t*n-Z-Q?l~-!#I&mH!a&2vM^eYD_-(VQ z674~xMFzQJ=qw)C9&!;CIYn+8FD}ZstOM&h1BC-8N0Nt45Y}2Q$B|`s81}dzjh0a`jr26f-2Wm-dwd zYO!*l>Wk{~7FsM9tu#bQ_RD4D*$yU#LKZtgibe)lB}@lti?(w;xsx&8 z^&XstQtyrr9QJ-}os-YmI9bJz2KzBRKJQ+6MeWkwzzP%uEDR+?BlFS}!!cN%w0fXm zEd~p$6x-QWby_{%r$Ta$=LjtidA`h@N)4;j@Co3ul&K6={T^#PXM|4H%--@A(ED-T z)Rd_y8}X4@d?Zl`-pDvUh17r*LRztDtzg|ZSWc$%4LDz%9AV<%OWHYa!HPB{(DJ(G zghMl3l!~-vM4U;=>nZjZ^drY!q$6Ewm_}8@-k$23FjsYL-(ae7mSZ=VsIgYytkc;B zrEOuO8D%UVtGt|?(nPQ|c0aac=)$o7wT8l(k-!cQUPtn!FP|J0Ik{{Gd6PPtBO^N(SW^p@ZJ4zt%Y1!cQ$~ey=wTL}nlLqCn+!Pz z>q|~Xd}kG*Mh32p$0&i<0;~deHgJ*x1P;%nvL;(=vN{xOq4XjUTv2;|c$Hb@cSLQF zD|<^vdf1QJTI&!&Ut)JkQvVoX%-O?H-W@ws6`{Va7Qw>X4vs+!Cj0I{Z*WC==f_^v zIXga_uQfNVxh=|1rLIO*f&fJ{k)t}_&cH^Gc6>WhiBsY>7A6pv%U1BU^^l9lwrCR2 zs;2N=$}O5N-~RXO&%gcl^WT2`^6U3M_zRj6*2}hFRqvF|B$?=FBnM&))u#@_G-~0F zDsW3I+~T>8^%m|rGaeVTaJx-XyIulk3eL0Xs%pdrIFj?(HMHeKcC$jI~_9jUd;JQjjyYVIr(Pnau%FyjGM9fg=7y<*bMAF9f$p#p22+WM@ z|NJJu-#Ds2@(+6t>0iFsr@sz6yW0cs=(El6jTy5PaHT~BG9ei_sBf%Vk}8{STi)kn z?Rkl#*gVl72x#OIxg4Z%*uN5;IGtFrDXxUw0$~%ye=k@245Tcl)rjpAcs3gZFy~CU7U8M!oGHA{(}*c$yr>sOQ1&(~eCoR!X_54l0W7xlEBcY~7#_q?2UZ7Ub`@QjtUq zn1Fp>CzpvdphKN}4zRpJuRX}S>_JWuCnrZ_o5abHrEcCwv@p6^vWnXC|D-wu~!~8~MECr(RYq=Wc-)opZIRn9_iK8kY>LkiD4w)vm zp!e9c9A8K~9aGJQ>V?APG1bOkwcNf>Om%&r&YYaC{?N-3uZ&D%iOEEnrN$m|zB6Z! zPjdpQVd&=RnlHv}uCDnt5!+PP{3GGT-ZF4@XvjK|P~`ZXileqD7J^fq74?=21NrP+ zt6yl$x5TkzGowyyab6gLNugjcmF~TU$Jgf#^!)Jr@bvb9ht0f#ezRZu*~=!ee6!2^ zNdKF?|L{}N{8@w1h2u)09^tXEIA;j3P>Kh^jsb_len;n)6tS^UXOQYHod;kssr zq&zkh=Up4bf*-#`pum~akXXqhJ zX|1d+@d|SF32zk#Irx@YFpA*#1c=!|5yanrY>oTfE?ZhPt)F+tw)3>kRe*5<2 zkFTG9|JU;`-vhJs>(}2t|Nf89fB*i=cX$wN{6wMp zO!b)yS~P6e>C_zUb`&e&n zOP^aXj;8b}eRK1LN}p)?qbzF1WKgVMY!im;Vf>=Bx?6R(i_!=$a@V1X4`bqV!c*4; PtjPU8Cl^gm$&m*DOH->O literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG106.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..47cec223765fd3f095c6e3f9e07170a878c7decb GIT binary patch literal 24417 zcmV(#K;*w4iwFqq#|vfv14u_PFg7kRYc6(UW&rG6TT>&+m43#*LecZG8?I*aeyKK& z!1OfJVcJ7C%!D1`2%>-jw4)0niEj69_`myP)-6ja2?-8RK>0zQMyiu1Gr#=KB{NU` z@WVxakY0=@!(_Je>)wa2Vw?Tp2miMrgeqc~fWPe>?0h}DfNy5$r1!Spd)s?E zb{}v5H~E@O&nErrS?|ro&FE~_ACG#I^lUsi|F8e<{r^wp7NL8ho=5=I3Gy}wLZ z$~07R!!YzzrA$o>kyazf)TK;mxd55`{xVG|Q%K5<;_Ch~Z7Gu*ZiS}${xT`4gmP^) z3g{`Vgi2zRLJ`UWO_`RQAWS{2))Ez53C;|H&}uOeO$65zLuj>{2(^|{gVFtRIa$I1 zR03hu({ec(&ZHKCBFHS4lObHgBw^@TE+=Ue)rumlP*$!cCE$NlA*@hVE+(NgvDP54 z6D!veEKh2LLICLBD;8Bm5U`;4m-&xUP0g4V6hY*tQcWcl#u7UD>qn+xovW|(WRi@| z$HU4*NrGWV%O>RRfh< zfioX@KR{kX8&sh9H)TH-?FBa!!zHVlSnLM3D5;35i3W?InL)ALWgCko1A;(~F&VOG zqJav9VFDx2R7D#N&Y*#oG153x7gj?qta56kv=~97E;_Qvxy%rQG9g79e35i1Wl~~z zB84l$oBRZ#G0aod#v)rm*oEPDR!uAt3Ds6>jBIP!Mgt)#i9)(n8;evTfJsniyutZ2 z)H2j=EK&(2+;9XcsoH4p4K3FQ#9lSAxX9se7>S~PzY0ti!d(0^%9`K=R$oa` zOd~ApO0)<>!&<-;%`4I1iXg1xO0*0_3k-@VMYC|MK{kT#TFEArY?lT^6ioxs6dYnq z(JCBlfr&mUYrsYwkYFCIMPRK;G7X2CV}$&bY+cFbT3JLE5#fkHFoUSJ2#16zfjEzX zh6E)r@&=V?8w?1+*n+J@n;MHC(y9nagmH$r(gmv-156VpLSQqLgk_~QtML=+SO+G| z8q}cI*u{mF9T{8y;(LPENPNc<1EL2*D3z8E= zXiHj)Xi&BTD%myuGn8QtcW7*+!ekN|I#HlC!ZuGOI$#ooY7!&~_)l_)$WgN93^P>G zH5+L#U3kgDwT?>Kl859+F-~VxqJsgk7FFqBJS;^yo>j^gB6JxDVje(>kXI!tLQI$# z5vaUsLO0uDZ1hy3!wiE&U5zGSKIc9liq-+HIVG50r8I$TAq1*1uwkl5VdN_-wSz_D zPN8Co4y>b+1am-4upSkanA~TB^~edv!Nf{*fNa1bW`Zj;22@GZ9B3^uf||(9Q^qbH=4;K^{yr4?_cj>0xsom@tS;F*DgJG`xl&G9OoA z>datHbF4#?P8sU9fvx3j4Pto5L$A-BLd4WM zWIl?Sx8*kE5MwaG7di_-A(-@JgN1H2s?yg6~a2749AuwU88FSZ>harJrmB}@t|f1kK|RK$MX-hhH5dnnE7`$xDkU(t^Rx(Ed22LBq(dFjq2;J&N3;le zMH-aj;H7X`%VZdXX*IR1Eq&+-CJtq|(Wz1H(N(g8)v1`pJej9um?Q?1gb5WHtWB;o z!{l+PLW?gkU0E%IwW%pX@~?6lujNHGN^O8@ZH6wVQ7Cs#D$Ui`ssw{p3fH=snnOVa zLT=;7zx-P13;xxe;P>IKQnSA%BUh!}bbQs^vru}pGZR)>FP6ugkl3s$4X%D2kFTQ62 zpdnWyCmGF3HK$I**JRRnfAr0*(Dn3Y_E3s~=s;2TlW8(cOEu?}s(NxWD%z-PwO455 zr>6Qg?P;cYg75t-@^sWJn{n2GMA}})WoS&Gach$eVa#(V`uPNw% zHXb@nq8>bamICT#>Bx_admg_3HW`mD=e7I&CY?HE+~D>{=jmV#4X5K_IyZw!rH+@< z8zhsKXWRd2bgo3^=G|rpv+nRQ+R6F&nDqw0>he&zV|ZK z^KLhQK7|1so+g6?v|d9sH!&kOvHra z@7^$(on3kTKK|{)&tALthd_hT-)@Gd>12mS$FOd8K8|K7Af&G8@pzUDVDe#p&eLmH zhtr$k5EM_&CSzbnr%*8>Q7`@1+2H2fY5M6i@efVw&0Y_ZnJXMNU8m{nC$5|4{RghWPAl$b*^D7O04xBm$Hk|bVU9KK;-xpSF$ zfP?WjAS*Dd$))e6cfCG+&S-3&KL7~*vzx&z6R?3w<&#C*r!X(Bwq=beOEu@(O(v)P z*(8~PFT2Kkefj0bUjHI=+|EOfHnZN-aj_0F(SAI@Ga9AodE*>_C^ueC#hX$8cL%rJ zfmmZ0a;H0M(mj6TT(3+Mw~P;WkB-~`ltB_q)BdqT@~FrDSbkl0sqjaVU~Lx9F4x_= zJ-Eszi>g-|d6#mXZnz<+cRlOGho8TE+C9!)t4H&zf>!rGuf>!wIQxbAzuzQ-{_J~m zlhAWm1P;jg;C${mT+VS@J}lXaNZkUNrlTpi0Q<*L@5Y-9@9>9q&5KJDFnf7x^Ih3} zzk6^{^ybSgy~&+*KZet$t}IHwx9Fy5z%x|N^7W86n4{x0NMWxU!(yTudbL)2hezvR z;t*m!h#*}=I?DYK&u)b)cu|DVdp~{o`P0_n&qrGy-*0{S@x#{c!SUATUv>|+van~% zt>mq&{ViX?_YY@R6S}1sw@hqpZ|!dFZ%MM{7S~qkkM8hyHHUlWFgg26e;j=r3~q+~ zQ4&$|_jg6Ncf`BU?b_MfJEHQp(-TI1JB@zoAEmz^{zwV=mwRaM3V_zX86JGezWD@T zK1}+PcLjQPfA#)X*U-Ti_v?Bi#n0b0xMDkd`y*F8 zdC;Jjv!6SAM<)xqoD|=_bJ%k~X;ALO8~M4%-~U?vxm33N%PJv_9rEA4n=`LFdl0pz z(9KDI{5GrIe09mqwiCO3nhdv3`-9(7m+9$$-FDT9sNFulxt>P;SJU*;{o`Z`Op>0T z4AaRam`||wLkOP}coawqI={7l93LLV?+;^75bzoAf8L`1L*wn(n3zV4#w23!UsM;s z(~_AM0#7Xm9zbe69Nq%F`d=?5X?mJ`Pp2#KxD8BY);g1$@1yMw20x95maI`UxIGAZsm}x-?cmClXkmK!Wgb{6kBCA7jE$U-+{4HUz)$j>nUc>(y zPF{tLJ9Ab>c^gBk>{Hu#i+G?gFq|Zk`G?Nq2(67`%;TiVofFNh6~YB3r9zBcL0%2; zDdu?jw0fy}C8t#oTQk^bZ0$ChThnwd!f#E3+6=%)K+!792=KOyjkJ!HjDTo_qy=m& z5gK5#4{^ZSo>w!=tn$2;W9Ckt*QQW;bkFO~@VS+x8op~0MP;^(D+VE_1)_qP(lN6o zNm;9m_wzfFdQy_gwR&1^%E6++jLC>n3I2}-|A(_2Ert`KHqB6U-1I1>EsqD=M?F$I z7&$Ca!eXXn2_~vHPBC;~dSPH%4IP&Yu(W`VEukZfB1@q&Z?zm|<}*|)tkztJy(~+x zq1D>hOwDDs?rpU&aq-L&OOol>s)#`t@0mzYQ20Bfb`HnY8_OB(J`eAu;N(9 z09It-DjP*@XRn^#UbP1@c_`0ptVN_b1oe^7V6}=+-o5kEc8Ga$#5{Q>XhT2|9xD?m zARiM64#7Jq00kUmmZqLNKs`xr=y~`+oVv|5<2HJYi^2j(Db}SMJ4oFDQo{Pk%zbJb zv&!ySN@-{JT7#*@UENzY<(>)tD9?O!5=o#mk!L9lAw;OPgSsxK{Zew;8%BBrB0U{Z z<};I2#a#0OK$HsR)7(vNRyzQM%Vo{2t#Ov%*5ja0xefPx4iaRLWR^iR85y6Z0>59= z0FZp`d}jy94v<)Yq#lqqOT%+53P3Wm0+5}D*Bw&0OWwnhSjtG7SP^$JhO3hQxZ$LQ z`_8M6grdN0jVl>Tb?gv#8^7s1b_EZRshAmE08V5fL^I&pVQ^nV2=O9NCR}h~0bzb4 zo3WUiGE@~*m@fPFHxC{7IHfGgVqEliiGN+xFut!BXphLPgB-{U7JnFjFK@ zDHk?#YuW{r&PqKoVr*uh{3jzZC$vP2F|u=nJH*W8gt(!x(Cz}J(vcJ~m$pERAXF{A zxzZt~O)1EGTq|yQhMX%6&XVyP(KLwD0G*t7u2L)9?$-xOe{aHw9F#_uprl;CE>NyV zjx9pvEhlrHbCr+$wmkTN48jH(D;g;h9J>H`DuLqzt}6Ah6rL3z1tuUn{BvA=u~POTJ*3=5=SXRIbbao0t}NuN_7eU0P0L?IK8Q1wNOca5Wn) z!QOpv7OsrD7d(2*b3D(~UCelqY7z_SZkh-h3E)V@1I&r83S7&oz`YJsGD3k0owXJu z5)j7FDz@f?FJ;2cTCX@H^jrh(XNu(9pqp%mB-@~cC?~+N?J}6p!s~o}*ezIC#S-S+ zlQ0D9oK)atx+_-PGS>hLrY*#wiJ6J4JC4q6a8eU+sFAKjZ`C5*#GoGCYbeTy* z08&+EQkv{C*zxXT@7!#ft=yR0)`rXGJ2@}Xj-nQ9Ul~;^9UE8B#6-%*y>A(u()1|yavGvbo{Q=^?>l|T)TS}pQOqi>anhBj+U{m$WGDaac>8&4qj`*OA}X- zTV-*As?sWI^K)ZeTIHFfRoV?nCj7ggY#zGmz@lpIDX(3-fSbk(8({JwkBxO$TnCFx zWUnO4uqXq5Tv0UqAx}YUYJ*YFJ9J2UU_Z~$+z?lrbIN2jpmv)aJ=%!03Se|Oz$!?w z%^=lbr~QdGDn(II0zOoAS;ffidQ;1`dRq^v{0fw&u6%@0vDEI^Di4mWTE&(I3tg3x zHdHC86+wJn`Cctz5&4+F?HTZj%rrG!ea)wX-P8I@5)ff@#Hh_L@d{G%k>-MSRg+#T zFo=z<0|s+d0jM)t6)+@SevY^U#$y?(MX$WwHF{lzamjrNq^u$!E7S1W7~7ozesYJp zb%>!Z{!%8pJrmsUGK9$%mO<+9@~Bxw?G7&pmA|$iC|F~N=-%!0^zdl;ftl5{l3gBA zW+nSX%!#P5WkqMII&7iZxon%x2j|2U9w|3SjPO_X_Vylsi)6*os|+}E7(+d_x8X(6 zwLRqJx#`w{f=aMyk+*T0#}I-An6OLBv2}=e!H7^Id*N4(h{`5`KitBC>YYt$l}%b* z{V{v{7b%OUs|sAS16K#G`+zH}l}>~Q7YA?^fjpCvcY9thImf(VNl{5+sUoVfz>CDZ zELY5=R=UeNKY7;qv2)C;-|y|t_yAl;@h%2lc*#t0xtv)#v-PUpgt{`*<0~tA1X&p~ zVJiUX4nXYzP|G5>m5`Fo-|_F$RXS#jl#mjPEPWGYcOBq)Uk7+<&~cKzI+wT`bd2Z< zbewK_Sg`|L2f90+Gh-F^8CU3|grU^gO}pLBp1$lo+YJHZ{V#ve+JOJXE5I1byF=C; zUKa4;2u5D>lQ$E{y+&N1frZ&VB<5^J@=TGUFl`rsM zhESvzcyyR*O_i1Q;g750om-j!{EAw392%2rQ<}rw(xXmu@S8hHv@DCY9{e`m)I&ZZ zb!%PlM?Glp+%9-CZDQdLQxSj1iK)U#<4h3J-HLp{2NPEAE4w#T+KBp_C+^&eASEp^ zvw8WP&MLm{ZNcL0rz{rM<;GpvYZ7x=f{GJmI#=t-LDe4fMDpWMGS)OwJeJJu>Ty{F zd=Lo=+ueYB1&CRlx2*C3zN9`a;gJ>b?FgkER_a;g1BwDQV4qYZw6j%;xm(*MsFao6 zVci$(6K{A}mjF^sM7gVd>TgNvl7FNm%Zti%{L|%*aJUML9w!mwz*5ey4m@fpx#`}< z)dBE<^GC|jw_LZ+#XklUUwK0ZfE*XUXe&4RR1;tCW z2*KCh5q|Zl?)#;;A8LBJuRNq zE^2L9=K?>y2Xfzu&NFe$x|?Q_$4a`-AQNY~RNaQaL%ox$9rvEA_aGf7qw{q5CB06Q z*%XwevoSnP?)&~Do?VglcQ{;WyegAt1?g%{cksF&yqGC&$a)tA7^{Sr@oxT+%b_Mssxl;^DW+3>`QGk_f#wib(g`#p6?9dLGxKfbmrVGOP4qI?a5A!i29 zIJ!Qqu4EmB^anebd@YochbaQ~5DG70LIOm2S;Ik%*@L8O8sxGmoJCv3C|X4>Ay-6- zIC-lEIZ^CX==PTHM&7ZnjtX2*V1)>R$H z#vMl>ne>DJo#J@t#;({l9l+CzFbc-)gR!hYvPgAEHMN{PXliOG>4%S~mw6PG;#DHo zHdK&B!~tzeM+z#@d0lYYGAggVTL-SN73PH$Zn`|g8kc2MbQt9d!zdqJt>n!C76_tD zPx`_@a9*9m)jKCICnHZEAia@oTjEp}r*H(mRmLouC>EGB8eJc_mp^2kAh{sNDIwoy zie~7!z){qm?}pQwg`{{}hnPsoF%A zoxp1xA=|hQ; z$9OcMYjQeM0HQVrQ-D?j(ABf~g?MHEWGZY%6%9*UqVUz;?Nz?6KYDf}-BFHMgNYTQ zZ+jJGLD*UX*Nl~&yq=*z?E|RkQF|7ZFsbgK84Dop@$p$+?%{N^OYyn=w&)}p$(h6y zs5l53G9ztEBIMYsP}udGQR@jtrf54kuB@#s=Y3~aVv!4hM*HULa3zGzp+!ioZ*&UPPVMK+r7*&L6F&gYLD6>mAL7>Tm0UvcR2M9=b0Gh zt~rHf(hB;{ln)p#bJ2{J1;&@?@j~=o!EClL$V|7Uq|GCZe0RVlkruiEa~llLpCi`F z@+QU{RvUXwD?<`xz!Zb%67%qoqYW|df@_~c`y9t==f1WnQ}Z=@>2{DUfiec3Kd+!g zM-L-HJBh<7Kt;t0OLBPYL|Y!HA)5V%`@Hf9O}~MuBm+vkc{%RABuJW1bXjy zTQIIXY2$!3K#-9^3k{C0;7Aji2%D5qzi4A_RT!?@C(3a)!OzPhI?FAS*h3h`mm$?B z-lR`lIgF7dK$Fjxm_$rI6c~LYr}=O=EV^xS^-l71-*^Plj{@>W-z?ryH@K@?Yz+u` zx)EbVI8b(V5DjF%xS+wO7+w>@Z9;0jtHH)9v5LuQ!chVlL1Onq`tv$18@kHZ-Ai#g zBZnN#F%;EzK$Q?>9XW)WK-$!OyD^cN)mavYFo%YPHUXou|hFPv(%c~vd#*IxOwFFZ#`AucsjI!<;ziHQa zT|0c!oo16lTNK40#yr(trd1p+-Izli6t*edx!* zJbUf4C^0XeF;duJ>AVoh$jqQK7fhbB*W_d!CC?4j(HLa>UU0&ghhF+ggMi@lB*A)= zDd#^%td24QtgV;PDufE{k?SHee=|}kdw0rihAH$mOE0BB=qjRPrcl?;Ru&F#9=8-I zZQgQB*%uu(oTcTg8Ur_h+i$<#20|-3Cr=>6wW#)n8ZGo(#&MM~oaS<#;J^&0w^VLm zwyQe{*>6Grn$iO!sI7a@>0(r}t(~n9YY0Lm#IkuAJdAH%eiW6{W1t@tfKS7ET|94X zGVgN0a_y*s*aC}Y0PI9(e>Si<57-`2dOM;w>LPc`pvBt73Vi1@2?q=|2e#f6%9TN7 z@Kpw(c45e1>=~rR7nHQjQG7pA77N=`?pY1c)j0H^`9$IA33~OQis0ousL4@0bRKl@ zqH@OZ!_yvgZuxVB$z_Z3V&8YrOi&^(+aih*)3GOV5Yv70aJ;V89yu=ga);18e$F|G9sVB=i7<7F+ z$`bQw$My1OuFMT}y+%1VlD|-*EW&`Yp!54m*@foLj72uw{Ph{m7i{S+ zw#(&O5IMHI8)CYR=D?N~AJ|eqw6SD}^ED!12~*K0cT(JkZM4r0cZd52O^9}hNUNm* zR%V}^5orV)rI*z);t)C4QxErdcXtmD5BK*8mxFw{e@K7bwO>|6&pQf*FVJ}W*vEr) zDgQtjO->aU)~*Uprke^?)@Webuh;3Sbk3t15}qOrbi@)KE@%^H?|6_jaiY*6E2>zW zM*v(b*{XD`YPsun1}M55I=d=@RvQRo_e>I^3sIj*)+(44!jOR%8Ja2G4tdcc?bUIkYmR}-kf^$v zZM&N3gMBE9pdLlETdqJ_>ItF6vJT3}`|V2&Pm5lgn&ekf((5@>69*#ii5fp%O6$R` z_dd9_N?KBp6kHXdwnhpirb3H1Fg{bPwCszPrm<_~ZAk1(fio+!{TZ_O5DrJt#^v7XVF?-96FJ!vxqSEI z;qyPgJbwS{d$#b_euv~8zo)~7(CD;TqYtu-QO zQH*cB8(j@n<8Q$D>{AM8V)}zhPCt*W7xPDB0HT(WTQ#vL6NrakCT`YjSeng{|oTLGW2k zM0AIjK(eaV!O}&!cZKBIm0_#_Tm`^2LWQyKGbdvQ8kbd6Z?J&`fzi}4qsE@fPNLVo+efBN6(Nn2v{4E&YHXUJU3#HG##Qi?Sr}WRz&;HeGz-#mctW2CF zmjFIj0(~yXCg>R3wp{|DJP}6O8n3Ku?Ui`I05<1>8V|N=d@!|#^yefpSxqGjT13=ymU*6STrg!rwOJJ#|Y zG5Bwa5Q{B*VvOwKiV)}TR36iF`ilHVaDfDA= zn?t3uLc!5M(hCczsmMD~`VoC}hrd^{p0F)0dFgemDYUA7BMxyL5a zfxK4|K8l1{pYxNyv3Gc(fikokLxt?cTcp1sUy=^ztk-IIKW>6a+ysf}52li(f1phy zgz=NlO2Xzy2-F^7^$CTPNRTh}s`GZfwu_>0>nLz+dR&~>zDZtm`|QDU)E?KiSa@x2 z=xAhQ5}bf}5+EOSb}W+t1sfZ9_6(q6voCC#BqXzAMO~`A%>?Ut^qiDZbJNtE`a!Q< z6n||DiP9f#kX#l}4#Jd&nMhGf-i>m!xRokBGB0x_CYQhzN}d~Sdlpj%1{9MVj!YK0 zL6!~2(j$qkO@Y;$>>iU~n*IqGNL90yL6a5}1he3(q0Tz5X4d)aCx5V6W!)thLIpff zNR5cZLF*s&8SS2A^O)=9ZN~SPP$LpSUXh-+CaaumniCV+6hw}Fpj>c|p@6~&TG1#c zIS0YkpV&|#;-GVnY>+io-3=x$24ClQPe7cF+)4Enr0STgFANcwl{4f%fT8IH-j~0z zP4aXsBRUC`=k69WG?R@3uS7X`DN#z)5~5tQXNooYW{Ja5AN}(bz2-Ir#~>ekYgyw$$x5p|bo%TbshS*A#B!2Q_1LSsfXIm4~Im z0-2x_mb*$?&MnSmQagnkro<4{#JxYEc*ZKB`ja*LllMzzQ6f?RIpqa0q>{Y%MeOI_ zcvX%zz|re#0U%1AK6xBz-f$tsVVHf-L!;KMN3H4PCi@d#JJ}w=Vbj>9B4~MTqyFUD z{$#qP8yZO_C+|#Da~X+3$Eb=1`*8}(#=9Li*rbT!hnuMAJdh?Gx923zj~B976r9|J zL*r{k?onXYI%Yp8a9$FMT!Wm6a8dOBIu^V!x^B2TMXuKqO$T|kBP3Y*L8t_a>RKo) zN5!k88qSK=pL98_DN)8ZQD)(EoF>u9kn3<@=xb7Mr$5XdTwU z$}k4X68UiRCXgnG8*5Fy{^0Jh_O9tkyV8@6#7+e@H$}qfvo@0g&XAwB0CGE$1}XuG z53k2c_Ra^#&`uc(A65i<2YjeDp7Ie|{{fBv@V)=AR_D34#m6KG?S_lUq;W-Ns9cnC zPSW#s`(c4>Y;`oLLI{ILP6D82;`c87=Mpa(6Eop6Xz1;4-^Knr+GU!Y0B4s1gr%D0 z5~8mWdLZmMuiok!Hb@CKX(kxyM53dC5;KXgzg8oPNzp75C5YfEWEOSz4iiMv3{LF( zv3!%5O!da6=6z56l<7p)wyWB}DSb(pk+X#_m!sAF!^6YEeeIikHr>r|&iTXPjNDbg z##R_Wlxhkt-fG>mQFk;uYPEW3406@VhAbm4dywo*;iNhLu2P%(;N%UfC{}jwQz4ZH z1w}2b>{%0a>PDLTTneK1G4R9{o4-7LfBNzC?O)#?fByRP_1XRLPnCu-B40$G5yhsIdn2~(J z#2F1a`=R6wnXoY_Ur7vEt{_$2$-i_AS&RClurG#=rzfWqnO3JNwm1HKDWGh$XY4~L zH#f}9nZ5_1QJ}FhH=T-bE@@5xAC#e8F|@?@$XtY%5g8ebaKrpKT5odDdXT}0`};%s z@7=xw*v_{2&fg<%v*~COR9G{Y=c?%Q(Ursf-QD3{pt?)n60UUWdmsMkbum{TYHv~$ zi-X+&Hpww*OJ_Hfoc`tBTA#H!5~Uo8gUkeWbOC_wASqq1@e`V;7D7|s7r}f+BE2}L z{45qepVlZ2McLf=8iOgcu?6iW?Tfa#>o1ho=c4WO@QZ>IGsgKs3OXdVz9F$wKj@Wd z!{bK4xN}-KkZ7CD8Y@$;7;82?WMsT5#wlbMfh>nUYg@>Q2n4gIwQHBY^_0UB$S%Cm zvx;~(o-$3etzH{=Bs6lGh`bB~fUz}~r61;CRUmagIn|7Dd!!mLB-axLC+OKB>yG(; zI62GPbh~4ry)2T-w+f}nGwMCGZDBMmvE1wthDPBo9OcX*)$_{2Zdf4e+g0>L z0?2X>77~0r-F$awo?PYSwS42@A$=qNt$eq9JN<8&4BFj&Q9>KtSD&5rHvjIU`|9%v zm?UXDyKS*PKhwQ7CGW9E_{yCB=bwN4`TR3|*O&i%`0M}t*Yt+G6#3k=yR96L=!8@_ znk>|H__xF1?vQ9atayU%N?r$8yFrGNkBv=oaSV{;i=ru#TONFPGWd;5X_ok|Ahd7plW z%$nxaVc|W^&G~`74vx*AL`+emed+WuxrbO=6AMI*MC{(1E(+01@lZoe&&6{3e|lF$ z!0L*WqF3JuEZW-nim?Xb3R0?Kfd>@nsMv=kwzKllW6MtLvOj$O=asRKF=ES^fkqL5KGY<%I*{9qc7M(dcdfJ|Q z=49f5dl^Kho~F-v;y&B0j6ibQFtfeFw`U7;T!Lu6MJZ&Zv(HrXAkhd$&XYXo%GCy& zABzVTrlq>_yO2ql2FSZm7^vq6My`Dg&|E_~dhJ${sbXj`qJaQqN?nbro^K1H>1G_Y zvN$0tD3J|43FMb6S?F-)wTI>AMi5h>Lzz4242}?tiump3qtE2pg9jpsWqr-Y7Zey( z5^GN=K$j3C6lCWyl!SmVOTg-k{)WN;alYJ6vN?^As!?Nmb9*)S*39jFv&tMrZ(d?P z6m$Dl?nPt%Rvi85!HfCDq3Mc4lW6h7lZ!%&$~-GAN3_K57PrvCg9B=o(VpR3G?ZLB zl$>lj%@jR|-2%GoOhpk;Ee%R0B7IQbl=GNIp;>4Nb)b}Wc#(eZP_T|cn~a-6;f&Lp zxeM*`9GA>@mTQX%kDO+xhVGv6XhMn0(gAcdB_v z1D&_yvDC(|qyR6T$N%w_!oUA|{QBj8fBgFN>*?q7$r z241IuDfwr~^qpyRVf))FHlUsVgrN4lw0&PM>o4^g7ae=z3UepGiC$vQ04+G1tqiR5 zGtK~Y6rJ!kAL|#fY=lT^->ZMdr$-mh&CM|7W--4Pm@1?MJYX@q1=B9{-XG>P_tf<3 z{AiQ&wND>yN0Of5V4Tny!uk4tI$=C#!uV8ud;wLo*|W-M;Q1;2^nQth0}i z+2>z-+f0mik#yhM_AV=Ob8gD<12JH zW|e?-O|2FkUtM(EVA5=#e;~{J!$mpjkfxPJ(ILl93)Ed>Wg{XG${NQ(XR}|$*t|OM z8zk`*5qn33bLEzYrHM5?nJ^;4TEE_dP!X|nL=eV&^qnGwO@&4<6Jl+`gtt04Z>rI~ z7cNwsD2jNMD8=}34CYf((VVj52=Ws)w^-c{PFa|W4KK20F-rYGkw=h(6ZRC$@H2~&=u!dOvF`zF2V(L#GErSb?+fwhO(V@GAZ6GrcpDg3t&bL>;tCiZ>ol_p1DAYfPH1Wp zATEf;RfL{7k5#e84WBj7E;G**98H7c%#I}FzSzVb4NSmsy?9k{90D9!#30(iu?FG9 zS@qy!PArcpO}7E$?63Z>3$A((Dlr;!DtmkfLnhUx(6Q;kQU?f=D=CjIqRJT@riZ!A z%b(dd&o@1(rVY~cMBj-!FpWGkk70|xlHzK|xLOmLPHdE{{pWfgQXY$waeu;(({aDz z=hke_<=LF;BV7EY(thP_bHR4;keLQiq1R=yf$#$1$@n!w2r zZ(Lo*Kwd{OTKO)ke9Or|h<&82)J);DfeHXl-R+N)t`;e$cwdY}$30U3QvC!)$-t8+ zrHkpoh|Wfwq@@6E;NodCIXX_t*bWSc5(mg|chr~+XiNzwN~bvjOx{&C%dcO{X28ql z+M=i_z=)wDT&;!6aWJ%at3=t%AQa=7II%PcWN?Ews-kA6sF^1Q7rii)jkQHDLzxjK zU}1fN(izON&tNuYp(x_&soWK#6w#EdvK)b}3mQ`w289D$k-3wZSl|0{`IT-*V!Zx{ou2mertzdda~mhHyFQRjl0VSzd`_5f`jLK z@C8f%IZQA|nM@Gn$^g-(tWYt5PG_A*NC#&^2Zpm$sO;}6%OeCR;<2x;O{6aW9?kKh0J^N;WU`u&%G{`H@~{%|So|MvTzzx?xme);bozy5%Cel&ke|MvSY zC12F9{73myMee5;Z4=dWN8$;N$%YFrw(wQDz8?!ba zJ?1+!^1Z|KNq3VwBYE`gG9LQq&;00d`siW$=!CXRTfeED(W6aC?o8;0j6&&ubhM)`t@YP-jIRZahDf19qe1!h<0K zoy#MIqLdx{M7vfHVK*NPJ|!TU9XG9gb#lGjhl;U#2O`IHsuJ_sVar*_Ge7$g}0C~33g$C-ANHlU`Jb2{FVE- z4R%|T+5FQl-mHKB!LVqj9!o22?V$FA&R4{ERN~|A1J&BjDf=k`Ll0m&8M0yI3W)&Q zhb$UI8Vw?z#1KR%b6JiO-4rlrREtFc^Ali9A4H%d+ndEI6PCVli)OoIoF<(oNjjfe z9WUpVAeVbkVV9thCavPmV{xX@VZe@Yx3<_Rlu|bNRt%_KfCwT2>K3s@M9gQqd%{Z* zp+ONG5j?p{S54m}c~Ih7i+GwRto!s~-u#qsSgnN1H5$mT}{rFe< zPG@;9hJ-eiDO4g$!gXL1Owii-a1o}E>5%*2QqJMC_B*ikZIK_2wAp;u7R_&*jEw%l zXEk=Lgog}+8Ns4m!axJVg3_Zf9;`^7fwMxe9}y9oD@L0Q3?Evl%u{Aypv>(x7<%XPVg6*v2&stG zYUOB%AQA9SP;k8usf`I@r8y!3&2awr^75j+ZCjw2saG~kU|sAvABafJ8&el#TtyKM z#5>J2Z9!-@u5j*x7>nK$O_ZMn66DI(?@cjr988Ey2xRl1U~~0B#!Mg)x4SeeB6f<1 z;#`+Hl$a0^xhJp{5uB?J9jhM+5rcspg&x3mHdPd4CXfisT1xB`67!>qoEj*PDukd$ zlLC^g|H2bvef0+py|!@2%0&XhB#{e)>_tIR<+p=3q#C)quTVCR#qm_Tns>FU z52o>|ZWY564fR;0c{{Sbt$f0S6(V)MYZxi>-fG-a z2O#!JguUfjrvw`tV;(o#@GLoqSu+*MJusz+AzL=z6HHLSUKg%=tvTiocypb}>D5!? z;yJ;f61pNr-@B-zz+h{JxSy%YM7;> z17h_h8lkR;RM<&x9LuHe&~OXTDzxa4&{|;EeetgDi?H)Pkgb9Nr%Ki?tYfVh zeFYi1IqEHpcQO{p+qTv?M=E3IWsQotge`)wsd6D4+gh7inKH0{dwYF*d42o#_WJTI z{qXiW{9NI%KR8^Us$R@T3${G~!!7rO3S!ZFrGo6f++7<^vaqKNRL5{)cmjzKGbEac z8w!crkbrV-8H-mP;#B;@V#t2N8YPYd2`mQFHWZQoO)n@d8>>O$aEOpQgxrLBlaHOS z4$&>gAj_4vZOYI;>%nZBd7MoX253EU+%f+7>$F}zswchQ(dhDPo6=}5P zx3GTv9c6PfO$fXG_-|_`u+TKX_faHU%v5#RdTZTgVB8ReS{VdXG4*K_Q)4PC(WJ6c z`VLvRP;ECn!*(qOMa)wm=Ch~a=zZ@+vsuPsawl6!ht@m9wx*y*OiimHIDZXQgi>7( zMw(ku85?UEwAQO&LyLg9WgSsG_rPLjQ7oK82b>){65sc;v-+@D=Jow zh7~MMYBu(qsuD6&jl+bM*x2}AtCHIa-KVj?$E+-aaU8m(IMUh-MFFvtAHY3;%wo-y zSeAO2EZY7>>E!J1UvIzfzWrW1U2|E@KlQXs9XJ-rk&28{QL3@xII+UJ;n2>-Y|ly- zCxC$Xb;(0R#fOKAtpx`RCokyJUry*5V1k(}S=CUtqCw;)AO;>g%j8_>?5UrvfQZmo z`+6im%*TP4S%;9P7BUWnIC=Kg?icjgPXh=$(2uhLkUK9KqIbF$Y5Cb>d3JyH>=A(4 zY8`Y&xnLdU2HR_4ok!az7)%h6_0Aj8s#HWQs0erX4BjvT3W!)XcG9RUsbKa{bh!2*Cb0JSJS*Dj(v}ws!IFT`Jm8P0krVU9*X@#=VH$!iU_TF(>dq?#FHSQfn!AjGiYGgDH?8B4P;#ca%CD_)q2Sr zrzf7fP4r^0S%SMy-JDR6teZS--aIu_)gS3;F=VD489n9inBc7ay|*Do$gm zV{pEMfYVz^2IEw+uEmIe-V8)Vk9CiKle%{+@Id~ z5)A6&&LCj(yI*&Atuene5)5kuI;{~>BrrU^O=1T0`szD< z^*c*`D*k(}m<7im&0z%wMx6lc9vF|!9;I2ZuJ>F533J5@-C?t$cxe+aZcq)D38S1z zdsp$|47G(9EkPH7A{66b%$(!s&uUOtj4xikwS$TyMv+Tjbi?N0+HaY^na#XbV|$8S zFjEgFc9FEM-93=j-ZSKbS>VitgDCe5lQ_rV^cq zSqW*GWkHo+!9IpET4@G)8jS8OgNkJ(M#)`S_`dpoaWnv%1!HckU9RHguC>boynO81 z!}T9`o#j zJo>fNvxJBYYn(hft{`VdEV`aUCdQ(t z3K!R!FRjAmUiJ!RxP;!jOp?Pmvg5o7gbJ7T;Id%C0o+G%{ShARSjPI)&NLQ3w4uFc z_+fJm>!=T=T+;=vSP8?;O*6yvqXmzR8HHfrLsCjCF7-8T>}$L=!%2E zl^^lyNF8sF)GJtU%RIfJf*v_IAHS>LfBWmN-~RVk`J?}RW_14J z-FDWhB4U?_K*$#tDK^N(MYcH{XX?Rvrwz<*0kOoR%=H0NW{@_eK088COMw>KlzH|r z4YRG39y%+Lpt=Fj;p70n4j-Ps-troV5Ler5!fGq~aS zQP4C-nnj@c2}c)W&UR2OLeWpi`!G;_IdYbGXXcz^El!uP!C6ys&XyuXBg`Hn%!YVk ze9u(kNlH?N&f^JgIi}Wlve$S*Hj_Gx>%rR2dV97uagH}E(i9E*MMJr&Hz_ux^x`O? zVZ4+Mp_p;%8RT)&%XtAiYv+Vgm~iY7vvChnO)4?k?e2dHoIL_(`QV+hw~NU?lHA|o z2{#eY`pw#8ikrRRW`3EU-Qr>@Upw$_dUhLuhVZfqCR(LDbCt3xhM5I0D{m-xOtc+MwVvE$JBsWQG);p*5ZlefWzvvYif8wP+Sbk!r$|# z?z75b1HybjlNXvk)jzdc_ZFh+b2g}0@Sdf=s#CWdd&il#&mGG0yB0pd1)cC5JwXiv z9mq$6(n_Hpc1d;wO7y%z4rP}K>IyAlN#1(C1a&7B;(8H252esEc1*)PdjeLS4mxAZ zcJq>UVvZ7S?nRju50s9~u>7_?!x*p}uniip+74J7itfiUbwnPBT!$o{UTn|89C&NA zrQ2~!_pm^PLd8gd%JtFbGltQOC!r)7e~>VxD49ozRNSs3>|N|)oVNA}B>?Le8H$ny zQ6jN~1tlU#Csg(`m~gp^Q^McTVG=l}9NCK|oS1Ni6Kl%Refnpmkkl2d%q+bYV5Opi zKLi~YcUkZ8**GMuT-Mu6*ul>GiR?=P1hej`jxz>a3!sxO9S=HES#>`J7&Fp~9TMgF z;4`;73%2Qx$IQh&`sC04v|ajz4Z=rl*XP&eQP$EUz!A~IxBCe5-f5HHw{?MW%jdn|3|O0X2oB#??te(=@hLUtmGi)y*KL%bqzEP z1{(DFYzwl1l8{v=aV9`+?;o@4)b@VgHP0=^s`VYl%A#y&P#KYx^&?GZ|_=mg6ft$DW{WqnR>{n#Vp`QG}$ zb@8*e*>?=}7>4@^tp>%-nHUo37XPl@jcfdV;_fS*P&s00Kv@Z20#lSF7g_P4;A&N< zN_CG$avxNoctlh}F+_d)@%_i;bm%%8_vmcQplcB*&iO$zETA8M{r7+V*FOi%jQ{y} zfnPr{ETaBcz%kY`vaPH%lsq>oAf&9cVTSDS=85CYt!AqP3W|d!JK^-&*uXF}TP{|5 z3^1_e3o4Ze#;TFR^5*sfYQ>0qQXU5kItW$7ffHzg6)iF-22eNqdc85syx#qA)0Bt7 z8=W1iC@O8(8v5t|vY&rt*0EH7;t~RS=5hO{j47=jr}^jq)t~R=LO7XENwoD!M)+*zp+etE=5=hsZXii*pe}`QCt5Kk;R+Yea4~{ zQ*!MEti{#bB}-N^0Z7^)2;%_R7eFvr6GYUfT-^_**@?j`-hBaNK2}I|xz!#RhS?~m z2^d69rHUt%BfvodR5D}eA%+gb_9oQe5ScxB90m+bb=z({A+omj%>GgB-s0-0+;{CC zv}@l2ishZ|-0|px4@(()LA$;vX@|uO1sk&7E}WP2$CKzXf@~(t+yc}a?$(8wwTOBT z$h*VL0}*q1_Hm;j{`=?u{`0SY{p+v)_{ZP>`1OC~SDL@8psE<3N`x`lN{06KDFj_y zeohAO7vKI}V40b^UwZqiM_j9)_Z%JLufJ~Wao;;$`FgL6K`#94JD)s+UcpXjK)Z7t zmh$94HIe*z>3e^lN#4KrStg;GkNxWYrM)v>|Ed?i?)WDr{A(_-JBrkogx0?7Ch zWR^e~J9D|46l$sT1wJb}3>27iFVQMCVB^`QDgRoN(DJ*HTS0%WYQG)yw^i+%sT7Z{ z+82|fF~F~%<@dXgADzOmj||jf=*~H@nsTt&&bL1=%OkF8=xNKRe6-n3PIDp! zB5d*mQrbi#)0#>_+Z$%7{xZ)TW&EUk9Tpaxl+V{8(e}(*TFKH;Lg`EdTTz-5dF=SK z*l}kDS=_Du{Yzk3pQ?QUK?fLm#p-A_txQc{eJ zgVLR(VNtYXPvne)Ju(jF@BFln(PSYg*tH+E;baa>aDB)494Te@oclF|g0G#JLF_dc zb(*5lsEM>8N#**^!-LS_gAkOaxIm{G&y)t4cnX~)SFcMQIu0E)=)@{ZEamUqN*{>M z%J&ZXoT)8V?MNDyvCKVZXn4ttoAL7P`+2lkikHi8c5TbI9xv-r(h&Bcc=>!}Y&c>T z)Ozk?Z0-V>Qr1WqSv?s;*shOtH((a!sfPmQ1~NW)9Y05BYLWB9r;a``h(E% zdAx?%m;6}kXEqBCG-4`N#*6mUgbzwTl+iUmJu(F9j3! zGMPasoic^9yd-ePgwBET)Igb=+s(zImE$~0p(-Iq8|S4`_E6g}2}fEl=h4P__gbfJ zUrx?q=#I(V!e!^{!gvG>)(6N(r}>b<%7 zBu=i*a}rsu3*y=DrLy1J!QKE6B9phQKAHh1IMG3R!nabdxs_TA2C80$#0G|ZX6=wu z%-1J5UeY{eNwf0#(XP(2)fFP0@_EY8*De&f0J11~aSsCjLhv#wBe-fk5P1_>fgxjGC`)}ILP7z*DL70gG#@mA z;Uo;Hr{JO_BOHOkK)yF}pbQRaT7aU}hy}sSc65Y^4svGS|M>p>&u>1X-A#howge(d zJ);SgK|s5Vo)ohbK(deWj{=iTgoabRsfj6SuiAl$C@PE~ilL?@UnF{3B9&UdXrD{@ zLTZD%h7-s>r#lW#RxX@Nhsp@!BGzAh3}z|v!>92k@+9YgwFgXQVBgg z0!Ua^cuqQiUL8R5v;NpK57XT|+|jnJv?zw^TmEBFl5(TEZANwX?QBk;yP%m)noAYd z)4>?VSIiJ)u@?NSXYe+E*((nhANp{s-fQt~$NI;-$90efm!K5wv=7eKZju?F1oN zISf#KJG$AzHha4kt@bcNW{OzKV{SD|L6rs{embf)ph~5p3M#5fDHO*xE1m9ljvlKH zW;(R_77Vbo?X^B4szgY^Fu_vZz^QgD9TQ8W$@uwp421Oq_T&^WH z_8N_%JFT#7jp|!e4>UIfRdaP2F1ZS%1DhuDNEJ+@pz0G-eqIejPgxK@lIBxFlB%81 zaHu;8-7r_OsMDeLQMz=dwwQ9lN_lmqPDjuTg3NbGYX~~obB*hL4T1fV z#{qPYni?iBy&E)DSTHd)n!ro93=n+Gw8JrznU|u`_4CQYr_GrZhtrL3e|%dniuCRK zZ?0d;7`vxU|)X}3;)3_sb94Asmta)VC_*Chn5 z`o*;*cCX^}mB{kgOR`k~)Ij?YT z^3euUusE241uN)Xa+b9U0(sA7XS;JYh?<3hCze6 zwd5LUi{jdqir1~NpJ~?o;K{O@4pPTleNc7cfLcJLI@maQSME9MDu7BD!g>X7Od*)K zX=6r#>ki5epgjWUN{@E?Vx!bLVy5gsr7^cfSG)enOd+@v)S+;+CJ@0m+6iXjok9nh zN_{j=cCrLi_nbQnfadR@vmr!s56m5~t<-e_6xu*YbfD}CC@_+rLnS@u++pOYqIJPZ z3{FWrI8NRKJGgqC=6W0kXu`y?0fj<#lDq?@7AV0M;G~t}tWyD?9AS%N@-xr&=J%4H zJllJ~tKam4%cj|5Uf4WcDrQCRUG^FP=B9UBhH(T&tgmUaD~?^^Xg*o6 zU2Rqg3+!^5UNdBs=nj*w%x9Sk9FO3V-$A2dv+)ruIn8|8Nn3B6Nvrmp@38k1f;QK( zk}3}dO4FlN&2k*qQV2xB#kO~alX*)@I1Nf-?vTxT9Y-uctcOybs$MKr%~Ne{GFIwS z8V0EC8i@kJ9V8Y1_Fw1Qf8#^4p@5*l{8TN`bNr zixsB=>;(+>keIeiM;O>R0><6PK|sBgoGgi)Y2x~z3wOXwy>RVbNK55fegv&#WtD+D zd2B50GE^;LEzM6-R&bh1nM_iBwZTvpN(4(I%4A^ZdUbRRl+A`CR0~I9($}StrZ}Ob z6re=*)aF1LDj+hEERh0~Q;97tZ$;p|9wwN^?mLS5!I_7R zK^mmv-(XlSQGxd9~w*AH@_3=u_oNu8wXn*bJHCL^4v#=7k_nK`H04An@ zjJh@t#APM{Fc@4*iMg*R4wtZ~6CG)s~QMqwUF zfEWUjJ7+w{1mbK*aghtUSTp+XUjmE95<-0@8%U&J^o*tmLWl@X``cHXxD2rsgkmc= zLp`?A@<(axuh{USF|L=m^Xc_hPp>y$VB>IZl}lm?RUo2`v5=GM!^A?ixe;uVf8G!- z9=s2~H+x*!VlNeSczBAzsMQu#dMs5)FcGQ|B~tQ_t77gm#jHMbnLkj-eWXroiJk{u zAhci;nb~E+4+Eq5JzK7abtNgG0VPiiEC>?<_!Pu}a=MMPOBO8EO96@*aWzUhCeiCo zO8cs1uWVYDl(^4V%P!cieEQM2RQv7%G)-N`5}mlgEJZ(&*=ao50I$mx`DPBPRLgGj z8w6VmFijF+R&?O)6L{OewYnrH8yDt|#o`(SbMzi}kEkJSxGjIl{CSvJ&~*^aZlaKE z6IIW;Aksv`zMv!vAEe4U3`*u#)X}>5f&v>K!m(O^PQL)U25j)W9B=mq(;z*cCQyWmC&v+atqd{rtn0g3l7zVcG z13_SCT02nQh?G&fh$W(w%7l0tQ3_D9v#^g2lv9b4OmD#UPof=`e^6sz8{>8eDBmB^ z^}6Trb2PUzBjuaUv}S4yMwcmBNO)pxOg8&@?l|Bc47eD}UuHdM@{u~F787wyF1WoIGx?+AB#iOI20PkA$v#z7L!<#EZ;_#OpzI1LFdjvg#53pv zij=%Fg-LR!b%)7N##()%puF=J7{#X5$f{ zZZ7RQDwrdCgHOsEL~DJo{hHIl`D7I8emnI_9prd64~!D=$)k*Cqo+890jz}1(j<{B zHFfHIN(mr&?Ryv)&F`w>Nq97+4$-WDTDVDxHtaNgRrR!Q9!9n$QAaXdwLmz_F{(Ak zcqy{8QeLOjVxCTFSpcqY1HUeAJXSz)!$V*AjU6ankksLR sGz+m93xIF}7`jeo@ literal 0 HcmV?d00001 diff --git a/opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz b/opencga-catalog/src/test/resources/biofiles/HG107.1k.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..065f94379eacf4f3da378fd29105d5d24d90f774 GIT binary patch literal 24985 zcmV(%K;pk2iwFqq#|vfv14u_PFgGqSYc6(UW&rG6Yi}FLvHh(43c~y4USzD>@5eX_ zpwMfs5j!hO+C>5c5Ju8S;$1$pBxT3qgeqc~fcN_E4nAI7!6%D!)_XbZz3jc5 zx|f&#n|w^>7qj8*qW9wJZgR00PA9!tdNG|{{?~u^{{N=|C3^qpeNs+`r-GY%)Dd zMvJp#l8ipjhx4;}y4b%;=8NRdD>7LnlTphhvk#Za3z^g!W~Gz}GDRhmFe*Uk!)3}+ zrlFD>hM}h_WolxGv>HLCE@eu~1<2$NmuX6wLQ-xNR}YtIOPSnoD>T&)mq|$_lxwR| zKu>8UR1%{Uicl74%CzJJ!SuB9B`UZQoEZe6l`|1d1lJTpXyr|WT1%5DAm-AX+aT0zAx2OQen8z*4SudZ(z97Ixtxxx z5G4sl94&{?D?@NbI0m;CBbe2TU|Jc>A?(T!N*P7)MxbP61VO;T5l5h_BQQoWuYon7 z3ET?7_sb!8!!&7>2vCe5R!5*HSqm#hkgLgD+r;=9OqjMG*YB5-kJK0)rw-(JY*6kd2VLRvNKgW! zZ%~Q0!GsWuCD=-|sj&zmt%{ID7-xu{E?6xXV1_Ue0-K>UEGw;9jh|5GItXFbpiXrd z!Hhv9Rl!17bA_q32&S4tzKJSasT!|hLPUkLtuYfQp>%yp5JmGqYs*kp_$t{Z3hx`HY8Sz#raC>S~xI>@lle{kQSq{P-z`HBqxZ_mb6yU zpezSevTOWjD8roYFxW_i$s{sNqCjheWu8iOz$6MaBuEnQpX3seqhu`^W~icTG16eB z@REhTj!N2+hvY{wc4t(gg9)(~Rq0?pEJfL#Rmv73Oc@AbA3%zbS0yS!OxPF^sJv>z zG}~e<^i-n54ueGXMiVffOCJzL>j2lB63nbpnn1P?0yP-euvMfm`jwU1fz!BMsF)RT{@{WgDpWB6qsddPF6ti#3 zZO9?UV1h497Jx!9>B$C;ZZ)dX;e2R=ioI~jN?>-Id99ey7&|E{twYhAU`|Mw14HtJ zI@jUCBgU5FO6kyw7Bvud3>AKrqaPE!UyLP>fsYD$!v$R}xh;t3eMn=GGbu zn7v@G!aNeA{kqZIBtHvN79PS?i8#OObM% zeB*SjCWRCmaavfoIt`jD%r2!CA-75`Fm9i!G!KbN5~N6$+cWfez#+!=)oND4lA03K zK&flZTV+tUacL3wke~)*<8UQAFsD)ib2(3oFqOAPb3{7SAst$dx_3m2kXNKZ*$!R` zm$goYF_=+P%bM%Mm0;pfh6|k<Ezk`Qj#-XcE0nv$JM~)5*b$le=+mdes|z=v_@`y~|{g zfQ)(X({ORqTiguiz3X%`U3|Vxdrm^niRfwaVo8278fC}Yq?gI$@^Uy&u4idlAL(#3 z>RrGWz5JWxW17i#Z}o~F_dti~-C{nxbf2dF!{mIF_Gald2$}aly8GaBCIALr`avl)Szf!}$1?m{jU`DZNoLyG~~r zo+&xM%`O1u3?vk806%qz>kY@ZqapkfE@1k9pRcEPb1?H22y>U=##vVS;(9t6eQu$t z`&zF*1^MYB?G3lteF9}J@~^_L#>31AS2LK_Wb(O}sh(eU1L#wj z!0~x9N zqn@FY0K)ya3-4+0b>P$~u;F3|=yKPxU%$)}Q}@J4>7|cniF}ByQS$Xvo9B$_`R6_w zmb_F@Z<3iC#>`?2M2ZQ7(ph@3$eDWuH+lZD7B?m4>X%Tk+I;~~XT=B1WiDuIGovX0 z)8j^4nuw;c-3M;y#tC&}w9x-d)+d&8?Rak~sN+AMm{r-dJ8qWye8W;99D%SIc3C^uhD#k3)9aQm;%C=f+2eCns(K$|4EOG&prgp7hus%a6-TD)Nye@Xg}4>vi{O53cgbs_K8$_S}`R|&Y)2L_q${?TzqaG60RJazyUd* zoDV&R%O!5hrzP`<)H%pJoy;Kx7@S7EJ0CK9!XL&pFD^|W?B$~^U&`U@!*}nBt2zF{ z)#S;#pTl|6rL0PSu;`|0z%x|N^7WE8u+eD?Qs`H6SQx6|s#=YAbkYVBM^N)Y1?ei% zNuG~*b}LfBtD=PN|8)HG`@N%|Pxjuv-aG#B&EDa=)4dPB9KPGj%AP&v$$Q!Od;SF9 zKV00*=$;~sQogspce-~v==b}Fdy?!q58Eq~(gXIYmUSOc^7rT{x%kU)`l`5O_)eH| zxv%tZ087KW@w?-w-#?-9xAQYbemj3v;PZgL3d6Vi$-Cph;pty%Uw3ba+B>g*ebtac z9sD#rNq;~3krMK+s6Uvv1CU3NfAc*!%26_$y((hhLI32e9PO-(jPUNt$mOT6mV(wn zA8NrAl$Z^tFS8SoZ?3u7cjND$C*%F|;pn&2^-qQ$_uZL4)b3y2-OeNbt$BLw{y3Y1 zf2Nmb;}oj@%LroV7>d#aehRJ+1Mdw^!a1oxwVlUbu`HI=~+#l zduN9rK|CZVr!f@~XE9|Fv+#H6BHNDm;jX1&T~u5hfZj z@{MrOpkA3`tjRo9r52y86ShNe%K{A}BIX3_=5iFuVoOIE z3BZSEFJCQV`9ASU4ImTn>2qkRV`d9{LV-;6w)iZtSr3bw@EIbqRVKX|pG_Ei)a-g2 ze4<%D-+6L48l5JS%XEC4-loZ74&%|ql)BT8&u`D>qv@?gi<_M2*zuTql`>|!$eI8q zlmbrrkTow<&ww3MAF2{Lo{g3|PHQuz^_wzUHQ<}0*?RD_Xuv;s)5iCXBBmk7j@%Ni zaXocfEaPaaIW<1te(*9*R~dFa^?Tw|N=V`vl!7E?$~DzFV+BBsqV1EeZk-VsbM=*dlqKu$2?doCU1 zo*Cr6c`V)tNai+4YVJ_!5=K$sk<%_=?C|)_SIjtb;MCMpCY0HtiqcYNyVef7WetR7 zjh!>R^)~n1#A(b7D-CZfZ_Q1e-4Qy>PoN=}fkqJHL8IK>MNutk0cfmfzrfys=KBCm zUI|hXYw9y{PTU4Gu1eS#LPf_ly8xS~vr{ZbmEbXDB616%Jfc8G(v+w&#%0&1{dV5z^&4U-ASd6-W4I8)`Y_hSN6TCA8*o$Gf-mm{oeir!UaCgLQ1fVC z0#n;9JmG$?Z(NE?ZDRKXM=tUkFSxa()s>a4Z@lQN{zNJqp;#=z!HZKaAbBkeF1eID zxCQHphKJoTe9rKcxxIIkgOmH+EnHNVm)x{I$)dCTld*i}@+|B9)1p2twu>092=D6C z-AoA4DgqL7aKGK3MmEA)jcJa`@CB5u#hs=tUo=jbJOp- z?LuX2AS^@q&HMowT+sqH)@YTTA$fRsxLeS9hIhq00mu|L1H03u{0n!BO#xoI8}2%q zX+9=OQFoiBqQ!l8wAgba2oY*+4%sCUTlRK$6fGMw7v*jzVG;M69-zPw<(^bQm|lN| zSO<?=eb?+#i6A}P%YTnjiMb6b{q#Az26;EDxhvrI`@8FTAf*z z?MUzUyOiQd^o2LJktB&}#E5GqNfvV^3p;bV#YvH!m7i}aAeEzjCS7fzRLqN`&H*CU zFBF^(y1gUcFGz}(g^0C@s8s&;V}OY$VIq{!zL@Cpgq_|purVXhET+UlMnJMorYLXF z5W@J4K+OwAoqZ9D#dXIQ?9f@8n@B=4S5)eVX%h<;F$H;L$r6(4^(g8>$@2;&TP}Ag z5i57*9Y$Lg@a;0@CFBH1dvF220WZ6VjO`Zvlz%>tinvnQQ!oTA zmj$fyhs(Fy8SteCuWZ7~hWhJ4SlO0u9u+J1=9Z0JqNmahg0zPk>F+@>DiS&tRmNP215O*9)-^{xu}SS(!6gt4Q})mz~L(o=4-!&{*+^a#fafMf{XRk@kxv z9k1;Y&UXFrL7QW(j2ZLIDJ|SnXayrBB#qKrZT4I)0a~x$tt|%by?)mcgG=SYBdp&& zvv|7Y&1h1_5(rPb#bKjkZi{6-Nd?`-rwMiO^$`!pe`(964J zq7J>gjb0N&5$$dTW$uyRym;6*pjUB=_K@5z*X&|`ZCj{&pc1zc6EZ(Tnj2do&u<>? z9}c<|&z)z^dN+F4P`UBRac)xwjfC)P8ZubZkW>rWJ(TH*;%`^s<_=1s5jP%gKzLGB zaNFXPtPXA++}fOoPu;Q8%4Ua-GfgV6>Fz}Q4s6JwR0g3`)k3Ku>z8~xxOH&558R}U zm2gk5caPbU!HL8GH`c-JX~1pgz?BD1qkTzg{VOn<3BYBtyO-OXUC^~ezW0{M#$8g3 z#8hzLFy#-@l(8reP?3yK+wIW2d6s%#+`$k6aY7B-LWBDy9|%pvQ5H-65W%ipAOUQ9=Heta4~lhkyh^c z(yZJvs*L7c;qdfg?ruCQbz6=z{!Vr&Vyz>0cs?)IzLceYM`?Gj-*dllYvbyuKT(OQ ztPo`}D-Zq!lJduYZ-;hzrr{r>6c>0kheIdm_BQ}};Bf9V)%R~YJB zEdXp>{q&`$)v?c_s{WW!@;~gITW{RRvB#hDU5JCOOW$~q2SEsw=Z(&@v5B?b1?0%E zm4|%$)72!K)Ov$I4^unQJJR?NB~b0*He{h#?vXM=#+iZYwEf zZO;w1Eg&*kCiCcd z)`bt9{dw2fpOx0N*ydIyH}O8DfUcV!i@x!&8qn>|&V96VES{1=1q^wElk+)&GN2f}kJyx8?;q||dQf)+&P9!C@K{+dqt_S*8VS({CROKH zH)e;O=5dR+87@VwplS4}Ag>-|fCRFsJk}|pLP#KU4|1T%XW|uP z1^HulWRpd9DHNs*GA5Aw(1LmPc@za%LB2vn>^RhDToqG9>?)BU7(~Q2pIx4QmRDuH zFWuXo$lph&Rmk~HW=g9tiU2Z4TObM}9UirP`?h_T;&Rl2`B)>^Dkek5ayWiaii&LU z=op2QyUGW-j6uF;EGbNE)*&^8SucP;??S#u(06^am~v^kS(V^q zmn%f*3ze?bmeLB*O;LFrcWje8_Ia$4Z3eHq{TPjb44#_9^@4Y00NTd(rk#=9;p`aGNu8n?lf`4ERVm2U&~}Qy$?8g8@*(xm7cG zAdgs6B*#&dWvQ|*r3oVA&YiMsG#I(bQXkgqcX!i&IB9}D3Xntwpq2Soi=vY_aDimZ z^!}8ZpPLx79&gdh8TZ_x_oiYR8XHQ#g}Sm2XK7N%bd}IM#yVmJQPRSSVhVepV}&DM z?%egV6{0uGIW2SV;fW6Bct7*`zUx6No3t3cN<%Dr8Yyp+yAHk=AB@J5C-qhzZeiXv zVY^C1l%ixSXQoqPW-H{ru@jAR)G#*1i)qAsm5s*jO;lLs8Uo62xlB~>Fy{8m$In!% z6?<~aY0N05tJ5Pu=&8j!(SdA<_Iw#7JhiY zJ1#8)$8b6Dr*b@8K5e_+)ges}VaDE6W=X0n{Z4rSzI{(fX2DM0_#8^ocD7-nT^I>L zE?^fX8G=92@NRZtJspDX8=9G; zZ^k1Xu~~vZ^(n#**$TovnCa`E`RigmE0Ac$Ss*`KehWG6K-6)SkZ7A z9UzR{!&BV$i`x}qKW~$nV-W2W2NmHPGZ(yBd5uK5+Z=aI8Q2r%J7sd3Hrkp(*M9~~ zNrzH*gVfDi=s73fl|3CWm1`nAE6Qi34}l&Q7(LB+KRV+b;o+(=-n*s1)`dhZR~&1{ zIYM-$0!_x*mD|i~bTh`+%68Dsc;|fh96G_}HCmD|QhFtpdN{qi*u)2)1?SOG*9+mO z++CeJL$cn;DSa_w6p3Bo4)bN1$C<@zjU=~D<;M3N@oa-a%CV4n+xWVLv+ zQwZl`wZOdjPzNWgjX+V2RAFt2PqL!yZ$Nfu14+G>xzxNkHeJ!f zmzC8MoqEoNR%7z7wB>Bm2wU%uI@{gQvApM8G%<>}kgudn^D{Jr^IF< zk^0ytMwmYVw>yh=r6_ydWIq1-@6S(P8`6G!dVaOgu{auAiS$-0kDnL18A@zr*%x53hC}`7i(;@n@0{fy`r6De9C0(#8h4$jOd&B)MCFh&9>L`f%jElCY}K`S@hYkAq)9{ILxgir^W@{?IVNC6D>``*r5trXpkncx(-CI--@@Kur^Uz0E4tH*ZGSXtON z3td8-+(eX_4Zy?%r0~H)&qCgEO^RkZA>i0=HN%)cl6|gcDQecg3QrrnpML$eOL$d>|F5)&&V9{T2l}+g=r4&S(_5HxLsP?aX%T8IiWN9MQ z94d!37)~sJ9Fi$4P}JVWzF0US8aaNdAt7Qa&L{Rn*%nJY8EtH?cCWW~r2?ZDN>>+5 z^8}KRgI$}71nHF(bX;5N(uLWLVKE+MQq5jwOaUpo6Do4VXnY=;(2CZ6+{tK|2_)I4 z2#`paDZ_jvv`8#q(9q&$SV)1SoFx<%&^A@6GD3r3tkWI#8-hV{4wAXdJmo8EnB{az zf+1c`NJCjzJqsc_3KB5H6fY!?!C2x2@NxRtQbl3&D9DsV-nop;^#LyOI*63_;52mH zI|^+-le1)^m(mm(m%;~ANN~<*+u~-IZ^t!9rZ0$4NcKib6CNrbWe2wh%!BqwcV%iW zPLGjeq9R!1O(nr>AHEW0VOPy%c7)G33Z}Lxm+>`#Z+mIJz`zKa%j}AU!=_}s3ZBmp zCqg{QnNYTc4>rhJ1K(l|e8R5LNK|tQ84Nz_Q^h(!738vPiB6cn%tuDoSJ$<^dTC&Y zSiBGiIY=CNSVUn$P+%08KLg|2Dba{kND-_n5iDDx`9aGOU`CwM1Yl-4r3Hvw*ePvw zhP-t;jwB@(d0{U%$S9U(odt&ZH5auZt6}Bm-}j_}FfnrwYnKd!9q90*C9~kFuo{RJ zWUB-uOR3gMV3{w{Q2(lNK|@|&bpsz|(dtH-{0>%p{m`&;qaLqfI6E-x!$U6fAwel) zioH)6L;z8HFOWD~`+~9#dA^rnIVZQlZ_S0Y+26FGts?p zwg9?z=?(>S|9}E^fJW&UF_g^>&%w>NpqtF%4*%gzO77N|#m$DmZU40%C4 z*52hg-o9QHpxsqggtm#$T7}%}7=&m4M&di;<$8D`lBLal>EQ0SjY0t6W_MW$LBAi5VYoZr}osd+S zPK(4@JV*zL_7xi)@KC2WF55Fq=xeAVroYM585`_j@%Cav&I-$FV403aG9E_IFcpv+ zjzY)gj-L)B-YyzW&@dSdeuIX!3l?596xl*3a;;`nGBy?@)Qv&RPd~7h@^Vta^_|i+ zInZrouYi;F30ZC%LQ0!`XM+fu65#z`?$fvRR+1--16|BT?PiVZn72A(W(PU1@lvh_ z%3U$WLXzbL$38UBSq(aKYs0N=N$InZolg%Hf=@}c?}=Cv-{|V++8@5}E6FCeRM}#q z!e2sLLNv{^yjElP5`2v2I4pMpJ%R4p?kB^V47PB$uFlzZx65Bv^ zpelXb)01;~a!(72>}vT}5G{_+wMCJGO3@#%uYk-OlOH**{AQ1u{Og8>P7H)kv>00< zN4XW)(L$X>p#}(-qGj|YKmYODZ-4yjKhLk_S&wqdU`tt4N z`M+PEzW@02<<Qs zmqRQ}VJU!Lu!o~8ZGokkeReiEp|v%nm_&4sxt#x@XuZkK=TRE%4-a?gKli$Kv(3yd-QILECgLS6m)f?;xNM=LXQ8pCt_*b($D zD?&GmxI+%_jkof!wovBOZXjY^LS!5CLR)KCH`SDURwf+)iSKmXRIWik+3?Lf>p43mEd-d$uDd& zFoOg-$^W6NFlF&)JaBWrX#ft64Xo)Xm*THfj2}%0Xo!CDI7MKy=G58nm z$>6tSoGh=6QZrgq8-D!(PS;#+TTtj7`;w99^?!f;{?9*Nzo(!3{MW}{{_k&NAU1gs zi!P4k8eM5fMU$1a?*4LjcYl{yyIb)%ubv^f@Icm#kt+~G=3*UOW5@cgRRk|~?BVX= zPTktx-I^(GO>RJ@U>AI==@<(SOd8_c0t?-koy`(_A)5v(Tc}-#V@=a1xb-^8jaA-8 ztF$0xe?XQ!buw~7$Q4=|_3B&iDk&{JEtJzIjCJIS5;WF?o|Yw(RJ)_)N^WK}wmiPh z{P^p?KRwkP_O1zU0q{{Hb0tipa4l$s$A!RnBKr;Aa_v$%q_5VDhK@`PIUd zk2pE0Mu4`Y5ajTzjVVBcrubAktrpm*iuWxPpZb+72Xam=C5gER z)vshF7TU4o`@6^Vty;1YeE;w^8k~wmd6r3G;ruZ(DTv*6Q{%7^nbse} z1|*WYl*s9kTq^=#8RbAx zF1W(-#8h8vk|&qN0JJjB1BNO<7*<8CJqtzQVO4S^yItd5N7j!|iuEasv60ErN*W@0~0H=c32v?_Oi#z1zaW!|i z_|FKQ&D90DInmnx34ots;NQPc_@5t7Uq1im+mBB_UcSFReg2f9;4e>~$1k|cN*gxf zzNSh)8qAY;liR-2!dE5YxvYE?BoDO0k|{(=e}?kNccQB zh?tAyzNT2J<31Xr54`aQ&NG3b0-FOy9Na9k0qyj;41M2qzAuxU^uXL0H9=H0VX|yvcdlJu3dUvZ`u1rMWqDVjsYPBFYb?Te&bYvO2IclD zx=RYU$eaN(wRIIs&lw6vA?oq^onmyvvdz)8Gvx>l#0q`wj9k7?QEA~PT3R_jTOM>- z4NFT*(pki%jMh|WWr|&hnvu>A~EE1g&3&d6IsXk_Jz;5;1;xkTTW!{Ne(G@C?MpNO;;HAgTk3> zB^YCKh{^g2LUKD$+zv)2U18kt3gh9vz=S0uuA@sdB-0T~&}*qtX?c9SQ}eO1!1v&% zeyQANb#^4{O`gq(TstfJPyIM~qR394+)#pUl%PD`$2Olc^`^2zxhQ9C%&L=mnth{g z>2kH@ZXc4H5GKep5e*c8oOMe=7&SMWiFYrGQE29rJSB|e;4Ka?(mTrg!e}&rq4fGJ z+fh+`kR1jv4wmT4srUJ4?=xO{jWR@TO&xrd^5I^m)Hy^yzsIf5z0T+E$Do>Hf0CtS z;g!DD?$G1>TDv~@njgG9K_JT1hSGz3(X=lQ&h6xzR=IZY;9Uj6OV^e}id>|p`He|; z;c_y5y3xLpCzlOTx$7L{gk}XOZI3dy=u_0DA_jYVa)RW!W4>-^P^yi+5R&sAFE^s0 zFTSpR))`Yha`KxKGs#R)bKkDtN^(BTSS8m`VCA7eC()X3yi@H`sBhxnCW-S=bxv-g zs?(Cdwh>UwvU%x)&&69rpSx0bkIKS&`ci-T`g0mmA_ryef5z&NP~+olJbNKI>!ATLRZU2<`- zTJ0?mYU;j<8u44+Wa zWqa9#5oPt{DPyT6S&O<7eltFDwBQI*(2mWvloT8(^pM!;^80F;_8XaxTN$c3R2=IV zsvuglC8!DkG^kR3rZm)I!iSoET3?C`ogknla<}fJEa$Fk$h9Py5bsAkB73zmYGr2D zkBDrZ79v?Tky$|=0F_nxw9l$Q%_uDiP|1%$)4j*Crskt{Msd0+oaWRJmX52Ll+Qb{ zUmoOyJev}B$B?T^T2Q(j;1)zwxj6^M%A5#9nPVFOl*J`A?^l3E43KlRqvrCo%_oAf z8-xr1us~Zy0lF!G@+FBVhiRP8;(|y$KQ5{VQ+`equCv6c&4p_@J6X290{L zJi1m)CP?K`&RTK-$hGT&YJe1=<4XOp>6~$=GuV}oLdwn>1GL`xHs$C4*}Iw^xsfCL zhj_?{jL3}St)WBj-F-J~L$(LdK!R7m!vB6Vk}M`ms$!9>>TVVpbI{0;y5&*6iq9AC zZR6}rKS4;n6t6R{=g!Etip0=cg37Hkmo{-@?7&&F!r zS$R7N1xcmHA?2Q`{x`W{2F#qIMU49Dmm%_05o4kTxi|TccdGuw*o|Rw2hD@}j|51@ z;IZU$8rMPbSatN6(Kj|6 z+MHB0x42NO@W>4#{us;>{O~wA&F#yPL&ir64ThNG%P^A_7gsQ1EVXPowXEAZGZq2D z2yIFYYSNKmnkGKjdS_=SnXX1V3QH>0sHfJap&CsLQYNeBZ}(JKn9LBdyf^tW`_f}u zJWWWG%ORmi-`j&f*MqPA@H^@(-h&?Q`&=zlETn=3lPf+76iOqSSeZoVG8E$J`YeIt z5*7>!$ACgl{z2$05;=@KF%uwxso~p9{FfeN_K7RG-fuPk$g!nCDkcGoSjIU*m^tlB zyh<_TvZJ^qco-RTCNQD$Bh9pa3qiwI-%M7%a8wa9igL0lMeJ#rpFAWngZ3kYl#{u0 z>Ius#N{)Kd4nyVQiG%UPb`?^lv7ono$>q2}jp~s5EJUYh&;pNv(28As{;r#!^O@5Awvd6}YZqx@EVxvwUcG9zw_VS zchN7H5@2=m;R1T>9uuW@v~sQ)Qg!ZTL_sF}vcr^``&W zQTW5a^59zOBHwf?Wl@D0kTT^#Q(KNo(h|_^TXouyD0mJKix;%4SWE~={>5?g{aDW zAMEpYa;uJNuRvklerMH3e8uDM)nNY8Z#pXoFZ|kcH5e2wp4x~_fT{_uaDm>=(m05F zi5%~Tqr_!Y%B{pEa-Co)jxep5s9RU@*(JyOfhCurDn2DTtzbQ+zzP=H{31AfU$4nxBAl2+tKb5hK1=gfJ#JF=^yA0U4~(UzPP}O zp|lkgoB2HJ!aQ})>eK<9c$DSEJL@x__;GVm2GljTGKZC5Ls)wOkZ1-$JM9G)Fh@1K z=S1$y$(rt~32OvE?@Y6Lrx=-P0WR}VXZHkW?qsNb(i~fiQgIc1=TC02XD_&#R`fU_ zAwr|3nVv>5M!Y#h9SIBZBzPVgj4o%OT9Z&H`oo5W{b1od->e`v5a^_VR1K)yQ`2d| zsd$NCH}yxr%lttk^8lC7kzuHgBAJS;%avm&1I#l5W|}GETlSrAQ_qwkU(t|?#i@-e z_cX5bPE7&HYk48@Y*@)@jic9=e~Xa zzd!%>QgJe*QQA5tBj*J}GBE=`cKm7Ns_&;>4CL`wBDD!hqNhK%+ADq4lAL z3h^$Mlw(-f3l>%^Wwoi{vakoxi!QFN<%$u;Xp8%OVr0IMdBR?5HvcF&h>VT`WR;S+ z0c67fndW4=mRX6~Dm9y8)z8V_DuIysX+7V}>&`U@DcLJ_C!#8DpU%c&Y1P`yK(Q@Q zyeD^upfEN-clBz(5=Iea70KJO%Z9VdJ4{7j*uQl!3Y??R$l(i|LTUc`t;f$HfdFX?Sg z14SQz^CvGzeLRxRXz^{P*P=b()B|2@-ex~5=U2s-=`r4LWKujj-img|wK(nP))KoLxm9eu{BX4m7>zndsSJ z#R!G&(C5uSvOAEh4JuNW77kRP235N-h7n+rU8Ndc&O2G|o%CGB3oBmg5Xo~XaEv^$ zAG}P*4t3Z})F#eQ$bC=n6$-*^^~lkz!Kcl6)#p3KHpX&xN+Yxo;tFrx-JxawfumoD za+zi8l3cy?7^}2;0YfwynPqrtFP3|a z+;XHg<$^M`IY$hTU`)|k(Bs6192vM+wF9PHNjkm#sbKKFvu3gCVc%dl5uBv2Bmtno zsKcod7?SfFC&^47emyvMJm&Ii7F+FnficBj`zEu2 zpd-J)4CZ$%1~Y@%lw_z=x%UJLGt`0@|-u;=clI!fE0v$Zo-k7sKi? zV7hQeeQ8=;Kn`(hdO)u8pu^w{SdnT!6Qw0M#hW6hBvptr5k0ouP)xuoM_odqOpK)uDQ z-Vj7bwqe{C7VZ`^jaaPQQVWo)Y|%TriWhO+Xjyj+%j@g>7qGm*zE#M+L&>uU92a@I z{j0t6am~VdgSF5|*n(=0qK~6zrR!&I_NX8GsMAlVH?K+QtdyIR(NI?~tx)K(rOy*A zeO4%Mu-;n~P9iY1G#bPSM`OhAE92jq$+GK&H$;!Ih-xPwfzgP}$H4*=-C-{}K9yY9 zRmB95Xt$Y1f`WzxIXM>SVcwW(n0$&GH&uIPH_R;q19Q>fx$)QvH!-TdLWM=>c>|Zy z#jjn$1z1!}_%)cQk57+${K-;(VsA35sJqsqKh8$4?+ZdXuw@_UDM(9@`u6A@+oAR0M-1^8n8ER*AX?Hi}@6p*U zpSdmB3{1x4T&rmfUv`oqjx}!31?i9HA5p_k0A)t5zPj^%P z;=2EmzvN&2_O**J^>_Ze`!4zgx4l*oqw;fdlJL@apJR`VaMYK4kKhCvj6MuT>s)t{ zQ!CJfq%3kDazq)bJOqmK`3=?yK6}AWKrM;xh{5MVBqy2CDM7A4$eGsnVZh)cv_$2u z#9<+(jK+nC405#~-PelYo+@>7D~9PokUFmGOc225J_N@iy!pkYI~#d>dwqL(ef#qE z`tl|J@b=pO+<@>*K)Ad}nr1XjyJxG?L6P3n8?=!|3ZevAey#kW5V^OJodc2g8XC|HXSkCT()iHV%r+pn3|ZzWE=ESieQU3$H2`rOh|Q$m2K~}K#pfX zAqp#I@m9TjcJ(s(;+RTH#BB{qgxEY7qO|0cF{)YsYM?XTEffn zFd5|^O%T=QvfJ2l8?a#=S&Sau)7GPa)tH}GV}{b5XwX1t0F-WC4;CVWS#$3+Xefy| zw-w^cNGc}_ti44He!kA^tx@*6gQiv0;)>z*GjhGA-_>gsKveAWKnuh)v;iJ5nw9H; zN#=BW$_LN4$0 za#_X$0`ED@r&8V0EnO!jcJs|It(sS4{Y@(0K3sR~bUI4PW?^nM=VS3mY zz&_@m-s#QXKw~O*>9H^wVg^Nx{Un}^$*`+J;4UV^JbVISa?<}s7ZrU`a{r?B%KW{h+DHIGnniTCgh}#CYq2?IaRJEBthA_Zi?aLp^Xc7h8__bblSw$ zU5cFg7F(tsrZ~BMUVN%aVn@tY%|6Pokr8Yl*$&=da}hSErEDsi(>`fsJAw_F7>~i` zN|q|oCYERe=SeDob*T0?<~s7f26-kbRmRFW%U!%7W< zO6$GO(Im8i8c51XtqCTf;Oe0AFXW!w2Ek z!*CEqdLL)wksYIDArE@mPC>dUo9>T&#!)@FCrIq9Wi}km!ckN+&=6ZdWyY$#*H9W0 zc1@Jc;r0Wh>6oIkmjv1+X+Q0&%`+jHn9t6j@Yoxj`4v!E4XG4q?yS^LuwH^uE`SQ* z_KO{6?19sAtAXlO^IegQ2t_!qs9M)eGkH#ADQKT@=laZM#cpEGLl$DYibP3WeyRb=JFr!e!H+Nr0g4i;~l&5r?suEpaMJ6vnuI z+NxuA!cbc|R9*C3ex6%9QDE~M+-sCr*Q`t7&0^A_hUDksJsLU3*;e zN12$!q4r=zyU-aw`elSX6%>AJforKTYlF*0qQZsZAgJ5?G=j_N=;F)koY-+oF8&w5 zoPlIw-nI-dmnLOvCT^=^#}z=_A^hIlZTut9N-WpDxwHgq$=65rQ21XjmL86g9@GS? z5pF}S6iNkIi$>3QeZA&yL*ZVVfDdU$7rpwW-t=q(_(_mhJ20K>JcH|vL!xi==i?y3 zj92Xf3>mvcMo%9uB=yKemB_cbOc;PcX$?o+Hu4);o~)QUsLunbUT^XZz}b?X**y>q zwvl~en2=Xl?_x;gIhUL?W_@Lxc(Z~qoG4C+dop=BhRgr!3@1==!Rj&3qOc+cp-mo&v(o-*YRfg%Ir79i4 z9NdaCIm60lV`WYvk(Q}JptJ5KbWYkYk1@=(QRx;&rSB*50KFuy$0l*>{Rl^%u4`HS zI!wE;RJqrHciu4V&PB@m4AUOJT$!AEF}0BYD|PVYxy4Y6$`JZXlm&075#aQW^WN~n zyY(-+>J4wc*DvpT_ZyxCwI%O)&!_U8zyPc;2%*D*2RFuoOsq)_4ZB1GwAcin?ba&$e&L0hsl}M`f(F*V|q6h z-s>3l({ZtY>@ojDR?is-G&KQ013)dgSRsY(I#t=KmS^m<-+{%d^hD5tH<32!#83eg ziu%XP+vWb;*zWJdc7OK*nBnJleBfCX25JK~xr6f9kk7qTEpl=L9xVzTCJId(p(&>% ziDCs^hDjLsW+6Hg$vqHERwgUqmP3t@{g^c;@yHMMWu*a?9jG4nt=Kc+qt? ze_KvQwu9PUeWU*L9i)6$-#AwxCFD0Ark<^F+G}Wvs>W9I4?r@GbS*Wcy9fbRq&usO zwj7S8R|UoUh|9ULmO=IUG=lUxeMXzv4Hg!prfJgf{FC<13RptRsewRaCxZ+z!sUcd zgP1|=Jg2Fja4ENgsCCoGAU2}wg#<059Ry;-A9b6P6IFjQmqHYpkReo^526<~kCkH; z)GPMn>~t4OG52JJa6$D*TQG(d2(rMl^}usIgH7|(UCT~qj5)Xzy%&-pNr?x!F79Ah zd0MQjq2726DSBfE87FXd$spdNd6FImCyR<1@=hhBaxoK%nD!ZLVq&9J9Hy9=z7p5P zsKhpfqDANhD@?>Wt9cI&le)lSP?jHn@5&Xfr7gR%z%rm587QX#GIy$TvFDms0TN-R zZh-t^<;t$gmDQ7AT{c82$KDch?uivEDTLK`3142%kD%s;l;QPeT|+GoDHC|9p!$rE z^69~2bhHgc)J%8UI>n`0wFc)`oNZf{*<+T$-eNGQ+B)imcZEq#I|U{-XWLDZnI5`& z72PjHm{hb<$E|MgruA?PG@Jy}sf!E=az7i#?s5_Wo0-QUu+Wdda{s~I2>>d!>3j$l zV_>7m9lV^Vcl18Ti>Nnf@r*AZG5M_z!9IfUefmxx$M>G~(3gJGOw!4fubSv(*Xle> zLXT4$sEN7d$svlzzCj``kd5hg6`>}_A*lC`6qMEt#tU-}CZ}9%PnvTAjwkvFskGp4Hk^B|fz0$h z85IsJwE*3z>uBhrFTR2)U@yMy7w4%Lm$*V{!*azlaV(sG+`0N3UG&1DQi>8I+nxJPqsv;rgj6Wcu?Gx|g`ZM@;EY7F zW57J5b?HT;C=}5sP;xXBA-Xyv37l34(HW4Q21t)SN@kKaiqaiHl`ew{ZO9l-oes0X z$>1~#PTsXKmBnGqaN;nY=BFTT#bKDi>AB%FJ@D@o5S^0c(5u4TDVcSiB?n>2T}HyJ zY0dV=G86IR_h$X#DseKzxbXk&olB40$dSj-yPt)Jj7Po*>_KQO!t4v2o)gqEfkK_kY1m8YYFN)vcWTN zJ$8nD*)*$k$@$E1Vza23eCBNcnJX_jd4d-WynIXliPMI7$yu2kccDhAkUO(f>5Xk` zF1G81)Lg7;F2-Gpt(~c?%-y-hwR9rd_PB{wZQg{HcgTe9u|Xh60hub8T1GjAsMFkd zLdrz#kE-=Kw?=K&gpyvmY@2{|*9$AIjYgD}y|6MqSOIw^C&7?1Xh_)(b1X3Uz#C7V z6^0dIkZlkvI&nY(L$A^X>Dz`=UOh*Br*qUxptw1vDZlA`R*=xA^oS~k8d(;Rh+M&p zgB}gtm(5w+v^<%mAQCU4l1shgM}0gSZ)beW~ZhdoxrKV#YmatFW)H(s$>b)^5w=UFTUz}qYxqJvb&K!FHrj8bm_)9BG+q|S8u^&-j6)q*<}WRD7$VjU>;r`>o^o@#xzieBuL>JD?*M%IuTKiYAz%<& z;42OZ21#lY4On`H!9}OR>#kt9b<7E3-U{KisOo#e3=uSX-5D>}f(je6;2ql(nnFjv zEWu!bRCVDvFmRrEbKJl{qJDTTkD@WnZsFx16US*N7~nJv$_vx%7yjw5?BevuWX|4V zmgEs8M<4|njB=J4p~4({7C6w8UXMA9rI0g-78(_1sG{iYhQb1aKZw55D`4)%!n;2> za{APV3aJhti#wf=5sl5m&@<;Y^u0Iz-cc@O%aOW>B8b!xl0XxJimV^V*2^`GSg}dA zo~pndCDFt}bYXtFsGt2UfA&e%`cs_e@?rE~dmnxvTF?v~c<_-a^a&3>YXE)06R#{` z^$4{gjB=+<#=@hke5@(D^77Wk)fV8E?H??9`2~i4x8h|}drjzUo9cNh#UV1qriaC|a z3v7%Tiivp4j81RlWZmfW8XvuM@?L7UauADTt*d!n#`B~bvVkTO{rL1D|L^J3$ES~< zx?j6w6kfNgUp;(zahmwz15eAdpLXI0e|9^2@Xxs`O8`dB6IEzx^yyPlCq6o;;BeXU zt$?ui0%Fd`eIx^)$aXhpX*J8 z0N zYei`SO7=963lOqZ;;sja-p=pSY8m~#UE9^gKa^sZjOIX!S-N#`i@0DIOO40l8jo>S zl67br_h1t%*s~7SlR6q@=37G8obXKz$*;yG6paQgP|(^)I$817Ymcx`zDB-k#lXY zj=Ag=ItCRr+LwPA*RjETB9NQw)l$vEjw$C{W8X3iI%s|;Fsv2Ro)-{P6ltg?UosBo zc=%?;F1xkUdiHl}(N3N19Si5Kl)Ue8w-}sEfXKmOOi63Ztk-taJ+?>MVHU*QuN?tV=a3Oxfojx z&|qv-zPG$6tuU+s1Dr*9Wl%8G9x5c83`1#rM8*XTRgERL6H89kY!A5s=1lF~YbBj% zqsnLvo z0EbKhhpLn)Igny|=LjbOw+Eb`KK1{Z(Dm=&b5+w}1f0%)QlaJ5b&9J^{Qh6bN{kYz5c6BHG*B`%qe)*C968`Z&pZ@xP|2qa&1i75&^W6#(k=rg-Zu0cV zJvri=IGVE2tt72L5;WS_p@w(?rS)VBRWaZpQ5p@4WFHSih6IhU(@_ve?C=5^T@8yA zuwKR{*?-nLA_0sE3t-JX`z==jw5GT=RO{~9uuSJm|H4t;v+2|?!TPP&nUt<=(n#rw?21z9?U-X@HIE(nC#&6PtJ2J--4ai$=;_b#-$` z2ZdukU?78^@M^G!kV7-xrK5g(8Rl5LMIfW%zT%Jt5Tp!QMnZ)XJ6~c_IoTyAHfuG> z$-R(=!;1b65oQ(pk24L5`kfv6om@Ap80yGX@IALf(ZF1l17YM0%v6(C_1Ev;fBo(Am(MSMrr&yeGKjMnMha4F<-1GM#D?wQ z%IoX4*9D7mYolU-k6XJHi%ZKBmZtAvQEo9Fvlp=!i~s@VK38nNB;pQ1Ss#1a*_}~> zXbC}sjnmthQ8*^U0V(T|Ya85t*=>cg@x!i2&5IJ$Ug$^!Wle_WOEP5!-g*i;5j}pG z;ZgdbYeq!lEBlZIgi^Ad{1wR6I4m7d8$g%tG>JMb>Uv3{08Ar{+)1N6z}78~a`Gme zpl>?fIg65URCnI(XK;a+X$C!g{3*zpPRXU0TZfVXCI&L`H>Bh(yNB9J*6x7re@;;;=IehO}>4zyRcX!vtUAIcb%lO-x)}v9;uTwk_Y|F;8ZyZ3sBoA8B#=PA6Pi&N0wBL zUAvKucnxz9@tWkBqN`+VoysDXO;NC!ANeXLkHE>)ka?wvJP=_VnaJy{`dJInt0meM zVdK_@#oB<)x@nl)61j6B*m{Ho(ijTEhGCc=w_tKeBE0EppHDn6l-M_d8NTeUfIK1~ zqe41Fc>#qRAsrFbvc3a@H#rf~;AAf_ED+tZPPCRR$z>7W)7G*PBd&JVTdVuqFbSfq zMOmF$&fsEt@kr&x$@3Y@Mycz~dp%;P=ynr0F@U}nAjl=bH_XVqqHe)YtUv)mZvg# z{?7GjvsR~d_f>%!J#1@ZZK@dLL<`EnYhO?x!?5vD%(n=h?qzhgiA8H6g70cCpeWH( z0fUG&xqrOme%vR7td$$;V5{J|iiM7t^BAsLf;YDW@7S&uy#z}VjWSi%b~jXA`gfhX zeLxGaVEP)JY$_+a;6o*2EUr+%fwn%2t9_&;K-`d9SO~(4OzUIiMYE~+5$D2!lUkZv zJX{b7?Exd%I}RkdCdk?`7Sj<3n$4b1PdWm*7Z@%!k4imbd@4rvL@V}#g`XQb4{wzM5%usUqDFAFr@&oQEw;;05$J_Z@T zJ;UIQ3)AJ+6^6%!p{;wSv?j+U&Q=gbP5nF`=fOl>&Nu=JrwljOIvv(PTmhSI?aQaH zvpR{RX>pAToTT8?WX(1&O6k-c;Px1@*p1qb{n(BL((2cXYu)Y}VE)oljsCn3gv;nirR_xL{W9WSPzi7^STSZe-=py4; zJ<&cr(WM`BMGJfAr;HYGofL3wF6e{l3AuR+OKyZKUXOs+l-d8u5K+V&E}OhkgwjYZ zThE?NbSgi37>q_iA*ex0GM+0moPy(GZJ3R2Ebe9gb+&m~RR2F&A0tt9Xv9dZ3^uf^nc}{c$*1 z?z5yeWJJGEn%$fNpCYmyk{MGK%p=v75gHaeR3NGz#ugT!U1U`jcEiH>Y}LXT*yo7} z-}WbD&;C517Z| zK84|8&sPV6 zH$j)54ouN%4R+^pXdRM`s?hW{X@Uo<3*Y;KY}9Qz%H!<54!*)*dTz_x941d=;X<2y zjD?Av@|i5$*fPJJg`w8?@^1BbcuKMdg=lK1h!#ppTLn`|8IUWmrlu-l z4Q1p%1Y=pRF&`$HqnM*P$OpP}xvG;sMhvE)kiA=cN^wo#L|iYF;}KVDdl!#HEpp~I05+w*z-qAD8-(S+t^oBpvlU7!SzHf>_Fp_aX?u!(Iz?{V(bP?{s7U9O1 zNT{tn%G@@kcZbe{+gy6oM%aEV$9TCZH^S1FBK~VRc@Zuw1auo$snQSs><@p_c;MR0 zhhN5AOXg^amzNQqKK9jrrhfR(Z_vkJwGaQus~0rh*J(-a8VSb074i+Ui8LHKZ@VLa!6= zL!|k0VG6-}LohxRYID>>wU?n#Blls?4<6X4pu&N2VcRHs`$iT)rb1&E1{w}Q6o%cw zz}Tik!BuiPyz2>KSaL30S$I$unw{XpK#YxksXtBsq5<+66g*&1Fgq7%e$P85A5M~A zIVV9?Fj9^=GiHr#PG@O{elO@ zhr=xGJ6N^UCi2*Zk7>QlDwQ)cL2=3`w=S5*4nRH9F$ zsH4IAN<;<}!N%*j9NU|{ju$tL59@fOG%#}yl>J9}skPeflOzaXu# z&g*$pg6oY4%bqHrg$i-A}Kax zbDl_o7;MnO(Q#aX&BJLf>uj4?Qz&6Uj5ml4X)w6mV6fG#G?EY|3*bzO2u=g@h+sJG ztKqos($LJd(( Date: Tue, 2 Apr 2024 17:51:21 +0200 Subject: [PATCH 249/354] tests: improve JUnit tests, #TASK-5603 --- .../ExomiserInterpretationAnalysis.java | 3 +- .../DockerWrapperAnalysisExecutor.java | 2 + .../ExomiserWrapperAnalysisExecutor.java | 4 +- .../clinical/ClinicalAnalysisUtilsTest.java | 4 ++ .../ExomiserInterpretationAnalysisTest.java | 62 ++++++++++++++++++- .../managers/AbstractClinicalManagerTest.java | 15 ++++- 6 files changed, 84 insertions(+), 6 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 0ae02104c82..5611d1c0d4f 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -191,7 +191,8 @@ private List getPrimaryFindings() throws IOException, StorageEn // Prepare variant query List sampleIds = new ArrayList<>(); - if (clinicalAnalysis.getFamily() != null && CollectionUtils.isNotEmpty(clinicalAnalysis.getFamily().getMembers())) { + if (clinicalAnalysis.getType() == ClinicalAnalysis.Type.FAMILY && clinicalAnalysis.getFamily() != null + && CollectionUtils.isNotEmpty(clinicalAnalysis.getFamily().getMembers())) { for (Individual member : clinicalAnalysis.getFamily().getMembers()) { Individual individual = IndividualQcUtils.getIndividualById(studyId, member.getId(), getCatalogManager(), getToken()); if (CollectionUtils.isNotEmpty(individual.getSamples())) { diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java index ae2b5072473..d68f363b36d 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/executors/DockerWrapperAnalysisExecutor.java @@ -31,6 +31,8 @@ public abstract class DockerWrapperAnalysisExecutor extends OpenCgaToolExecutor public static final String STDOUT_FILENAME = "stdout.txt"; public static final String STDERR_FILENAME = "stderr.txt"; + public static final String DOCKER_CLI_MSG = "Docker CLI: "; + public String getDockerImageName() { return "opencb/opencga-ext-tools"; } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java index cdbb24c2ab8..a6325932fb9 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysisExecutor.java @@ -196,7 +196,9 @@ public void run() throws ToolException { .append(" --spring.config.location=/jobdir/").append(EXOMISER_PROPERTIES_TEMPLATE_FILENAME); // Execute command and redirect stdout and stderr to the files - logger.info("{}: Docker command line: {}", ID, sb); + String msg = DOCKER_CLI_MSG + sb; + logger.info(msg); + addWarning(msg); runCommandLine(sb.toString()); } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java index 26bf31c9dfc..f77a1025377 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalAnalysisUtilsTest.java @@ -76,6 +76,10 @@ public static AbstractClinicalManagerTest getClinicalTest(OpenCGATestExternalRes variantStorageManager.index(clinicalTest.studyFqn, "HG005.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); variantStorageManager.index(clinicalTest.studyFqn, "HG006.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); variantStorageManager.index(clinicalTest.studyFqn, "HG007.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG104.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG105.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG106.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); + variantStorageManager.index(clinicalTest.studyFqn, "HG107.1k.vcf.gz", outDir.toString(), storageOptions, clinicalTest.token); return clinicalTest; } diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java index 04d8147529b..ba185297c28 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysisTest.java @@ -1,19 +1,23 @@ package org.opencb.opencga.analysis.clinical.exomiser; +import org.apache.commons.lang3.StringUtils; import org.junit.After; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; +import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.tools.variant.VariantNormalizer; import org.junit.*; import org.eclipse.jetty.util.Scanner; import org.junit.experimental.categories.Category; +import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.analysis.clinical.ClinicalAnalysisUtilsTest; import org.opencb.opencga.analysis.variant.OpenCGATestExternalResource; +import org.opencb.opencga.analysis.wrappers.executors.DockerWrapperAnalysisExecutor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.managers.AbstractClinicalManagerTest; import org.opencb.opencga.core.exceptions.ToolException; @@ -26,9 +30,13 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.Optional; +import java.util.stream.Stream; +import static com.mongodb.assertions.Assertions.assertFalse; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -50,8 +58,8 @@ public static void setUp() throws Exception { clinicalTest = ClinicalAnalysisUtilsTest.getClinicalTest(opencga); } - @After - public void tearDown() throws Exception { + @AfterClass + public static void tearDown() throws Exception { opencga.clear(); } @@ -95,6 +103,22 @@ public void singleSingleExomiserAnalysis() throws IOException, CatalogException, .get(clinicalTest.studyFqn, clinicalTest.CA_ID2, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID2 + ".ped"); + } + } + assertFalse(pedFound); + + // Only proband sample is returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(1, cv.getStudies().get(0).getSamples().size()); + } } @Test @@ -121,6 +145,23 @@ public void trioFamilyExomiserAnalysis() throws IOException, CatalogException, T .get(clinicalTest.studyFqn, clinicalTest.CA_ID3, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID3 + ".ped"); + } + } + assertTrue(pedFound); + + // All family samples are returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(4, cv.getStudies().get(0).getSamples().size()); + } + System.out.println("results at out dir = " + outDir.toAbsolutePath()); } @@ -148,6 +189,23 @@ public void trioSingleExomiserAnalysis() throws IOException, CatalogException, T .get(clinicalTest.studyFqn, clinicalTest.CA_ID4, QueryOptions.empty(), clinicalTest.token).first(); assertEquals(1, clinicalAnalysis.getSecondaryInterpretations().size()); assertTrue(clinicalAnalysis.getSecondaryInterpretations().get(0).getPrimaryFindings().size() > 0); + + // Check Exomiser docker CLI + boolean pedFound = false; + for (Event event : result.getEvents()) { + if (event.getType() == Event.Type.WARNING && StringUtils.isNotEmpty(event.getMessage()) + && event.getMessage().startsWith(DockerWrapperAnalysisExecutor.DOCKER_CLI_MSG)) { + List splits = Arrays.asList(event.getMessage().split(" ")); + pedFound = splits.contains("--ped") && splits.contains("/jobdir/" + clinicalTest.PROBAND_ID4 + ".ped"); + } + } + assertFalse(pedFound); + + // Only proband sample is returned in primary findings + for (ClinicalVariant cv : clinicalAnalysis.getInterpretation().getPrimaryFindings()) { + assertEquals(1, cv.getStudies().get(0).getSamples().size()); + } + System.out.println("results at out dir = " + outDir.toAbsolutePath()); } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java index d9f384a5789..9a10ff857f1 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/AbstractClinicalManagerTest.java @@ -16,6 +16,7 @@ package org.opencb.opencga.catalog.managers; +import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.experimental.categories.Category; @@ -23,6 +24,7 @@ import org.opencb.biodata.models.clinical.Disorder; import org.opencb.biodata.models.clinical.Phenotype; import org.opencb.biodata.models.core.SexOntologyTermAnnotation; +import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.test.GenericTest; import org.opencb.opencga.catalog.exceptions.CatalogException; @@ -34,6 +36,7 @@ import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.user.Account; +import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import java.io.IOException; @@ -45,6 +48,8 @@ import java.util.Collections; import java.util.List; +import static org.opencb.commons.datastore.core.QueryOptions.INCLUDE; + @Category(MediumTests.class) public class AbstractClinicalManagerTest extends GenericTest { @@ -56,8 +61,10 @@ public class AbstractClinicalManagerTest extends GenericTest { public final static String PROBAND_ID2 = "manuel_individual"; public final static String CA_ID3 = "clinical-analysis-3"; + public final static String PROBAND_ID3 = "HG005"; public final static String CA_ID4 = "clinical-analysis-4"; + public final static String PROBAND_ID4 = "HG105"; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -147,7 +154,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setFather(hg006Individual) .setMother(hg007Individual) .setSex(SexOntologyTermAnnotation.initMale()) - .setSamples(Collections.singletonList(new Sample().setId("HG005"))); + .setSamples(Collections.singletonList(new Sample().setId(PROBAND_ID3))); Individual hg004Individual = new Individual().setId("HG004_individual") .setFather(hg006Individual) @@ -197,7 +204,7 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta .setFather(hg106Individual) .setMother(hg107Individual) .setSex(SexOntologyTermAnnotation.initMale()) - .setSamples(Collections.singletonList(new Sample().setId("HG105"))); + .setSamples(Collections.singletonList(new Sample().setId(PROBAND_ID4))); Individual hg104Individual = new Individual().setId("HG104_individual") .setFather(hg106Individual) @@ -226,6 +233,10 @@ public void setUpCatalogManager() throws IOException, CatalogException, URISynta catalogUploadFile("/biofiles/HG105.1k.vcf.gz"); catalogUploadFile("/biofiles/HG106.1k.vcf.gz"); catalogUploadFile("/biofiles/HG107.1k.vcf.gz"); + + + OpenCGAResult sampleResult = catalogManager.getSampleManager().search(studyFqn, new Query(), new QueryOptions(INCLUDE, "id"), token); + Assert.assertEquals(12, sampleResult.getNumResults()); } private void catalogUploadFile(String path) throws IOException, CatalogException { From dbd516fd6ce5d44e593f75d6a2d913b6ba6c505b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 18:13:13 +0200 Subject: [PATCH 250/354] app: fix Exomiser parameters, #TASK-5603 --- .../exomiser/ExomiserWrapperAnalysis.java | 3 ++- .../VariantInternalCommandExecutor.java | 2 +- .../internal/options/VariantCommandOptions.java | 6 +++--- .../opencb/opencga/core/api/FieldConstants.java | 6 +++--- .../models/clinical/ExomiserWrapperParams.java | 16 ++++++++++++---- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java index 172f8629135..c4a9d87d4f7 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/wrappers/exomiser/ExomiserWrapperAnalysis.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.opencb.opencga.analysis.tools.OpenCgaToolScopeStudy; import org.opencb.opencga.core.exceptions.ToolException; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.tools.annotations.Tool; @@ -52,7 +53,7 @@ protected void run() throws Exception { getToolExecutor(ExomiserWrapperAnalysisExecutor.class) .setStudyId(study) .setSampleId(analysisParams.getSample()) - .setSampleId(analysisParams.getSample()) + .setClinicalAnalysisType(ClinicalAnalysis.Type.valueOf(analysisParams.getClinicalAnalysisType())) .execute(); }); } diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java index 34ee91a796e..b39a1387329 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/executors/VariantInternalCommandExecutor.java @@ -1018,7 +1018,7 @@ private void exomiser() throws Exception { ObjectMap params = new ExomiserWrapperParams( cliOptions.sample, - ClinicalAnalysis.Type.valueOf(cliOptions.clinicalAnalysisType), + cliOptions.clinicalAnalysisType, cliOptions.outdir) .toObjectMap(cliOptions.commonOptions.params).append(ParamConstants.STUDY_PARAM, cliOptions.study); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java index daedb022e2c..aa25fe630e1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/internal/options/VariantCommandOptions.java @@ -1842,13 +1842,13 @@ public class ExomiserAnalysisCommandOptions { @Parameter(names = {"--study"}, description = "Study where all the samples belong to.") public String study; - @Parameter(names = {"--sample"}, description = "Sample ID.", required = true) + @Parameter(names = {"--sample"}, description = FieldConstants.SAMPLE_ID_DESCRIPTION, required = true) public String sample; - @Parameter(names = {"--analysis-mode"}, description = "Analysis mode, valid values: SINGLE or FAMILY") + @Parameter(names = {"--clinical-analysis-type"}, description = FieldConstants.EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION) public String clinicalAnalysisType = ClinicalAnalysis.Type.SINGLE.name(); - @Parameter(names = {"-o", "--outdir"}, description = "Output directory.") + @Parameter(names = {"-o", "--outdir"}, description = FieldConstants.JOB_OUT_DIR_DESCRIPTION) public String outdir; } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java index d5476e10f60..2c2b3b9ee6a 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/FieldConstants.java @@ -38,9 +38,7 @@ public class FieldConstants { public static final String QUALITY_CONTROL_COMMENTS_DESCRIPTION = "Comments related to the quality control."; //Sample - public static final String SAMPLE_ID_DESCRIPTION = "Sample data model hosts information about any biological material, normally " - + "extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most " - + "basic and important information."; + public static final String SAMPLE_ID_DESCRIPTION = "Sample ID."; public static final String SAMPLE_PROCESSING_DESCRIPTION = "Describes how the sample was processed in the lab."; public static final String SAMPLE_SAMPLE_COLLECTION_DESCRIPTION = "Describes how the sample was collected."; public static final String SAMPLE_QUALITY_CONTROL_DESCRIPTION = "Contains different metrics to evaluate the quality of the sample."; @@ -492,4 +490,6 @@ public class FieldConstants { + AlignmentQcParams.FASTQC_METRICS_SKIP_VALUE; public static final String ALIGNMENT_QC_OVERWRITE_DESCRIPTION = "To overwrite the QC metrics already computed."; + // Exomiser + public static final String EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION = "Clinical analysis type: SINGLE or FAMILY."; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java index d2183090e14..3b836063439 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/clinical/ExomiserWrapperParams.java @@ -1,5 +1,7 @@ package org.opencb.opencga.core.models.clinical; +import org.opencb.commons.annotations.DataField; +import org.opencb.opencga.core.api.FieldConstants; import org.opencb.opencga.core.tools.ToolParams; import java.util.Map; @@ -7,14 +9,20 @@ public class ExomiserWrapperParams extends ToolParams { public static final String DESCRIPTION = "Exomiser parameters"; + @DataField(id = "sample", description = FieldConstants.SAMPLE_ID_DESCRIPTION) private String sample; - private ClinicalAnalysis.Type clinicalAnalysisType; + + @DataField(id = "clinicalAnalysisType", description = FieldConstants.EXOMISER_CLINICAL_ANALYSIS_TYPE_DESCRIPTION, + defaultValue = "SINGLE") + private String clinicalAnalysisType; + + @DataField(id = "outdir", description = FieldConstants.JOB_OUT_DIR_DESCRIPTION) private String outdir; public ExomiserWrapperParams() { } - public ExomiserWrapperParams(String sample, ClinicalAnalysis.Type clinicalAnalysisType, String outdir) { + public ExomiserWrapperParams(String sample, String clinicalAnalysisType, String outdir) { this.sample = sample; this.clinicalAnalysisType = clinicalAnalysisType; this.outdir = outdir; @@ -39,11 +47,11 @@ public ExomiserWrapperParams setSample(String sample) { return this; } - public ClinicalAnalysis.Type getClinicalAnalysisType() { + public String getClinicalAnalysisType() { return clinicalAnalysisType; } - public ExomiserWrapperParams setClinicalAnalysisType(ClinicalAnalysis.Type clinicalAnalysisType) { + public ExomiserWrapperParams setClinicalAnalysisType(String clinicalAnalysisType) { this.clinicalAnalysisType = clinicalAnalysisType; return this; } From 339c0cf3aa273f452e20d6aa0acf210e9cfb7c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 2 Apr 2024 18:21:21 +0200 Subject: [PATCH 251/354] clients: generate clients, #TASK-5603 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisVariantCommandExecutor.java | 14 ++++++++++++- ...erationsVariantStorageCommandExecutor.java | 19 ++++++++++++------ .../executors/SamplesCommandExecutor.java | 1 + .../AnalysisVariantCommandOptions.java | 13 +++++++----- ...perationsVariantStorageCommandOptions.java | 16 +++++++-------- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 20 +++++++++---------- .../src/main/R/R/Clinical-methods.R | 4 ++-- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 2 +- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 2 +- .../client/rest/clients/AdminClient.java | 4 ++-- .../client/rest/clients/AlignmentClient.java | 4 ++-- .../rest/clients/ClinicalAnalysisClient.java | 4 ++-- .../client/rest/clients/CohortClient.java | 4 ++-- .../rest/clients/DiseasePanelClient.java | 4 ++-- .../client/rest/clients/FamilyClient.java | 4 ++-- .../client/rest/clients/FileClient.java | 4 ++-- .../client/rest/clients/GA4GHClient.java | 4 ++-- .../client/rest/clients/IndividualClient.java | 4 ++-- .../client/rest/clients/JobClient.java | 4 ++-- .../client/rest/clients/MetaClient.java | 4 ++-- .../client/rest/clients/ProjectClient.java | 4 ++-- .../client/rest/clients/SampleClient.java | 4 ++-- .../client/rest/clients/StudyClient.java | 4 ++-- .../client/rest/clients/UserClient.java | 4 ++-- .../client/rest/clients/VariantClient.java | 6 +++--- .../rest/clients/VariantOperationClient.java | 16 +++++++-------- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 2 +- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 2 +- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 4 ++-- .../rest_clients/alignment_client.py | 4 ++-- .../rest_clients/clinical_analysis_client.py | 4 ++-- .../pyopencga/rest_clients/cohort_client.py | 4 ++-- .../rest_clients/disease_panel_client.py | 4 ++-- .../pyopencga/rest_clients/family_client.py | 4 ++-- .../pyopencga/rest_clients/file_client.py | 4 ++-- .../pyopencga/rest_clients/ga4gh_client.py | 4 ++-- .../rest_clients/individual_client.py | 4 ++-- .../pyopencga/rest_clients/job_client.py | 4 ++-- .../pyopencga/rest_clients/meta_client.py | 4 ++-- .../pyopencga/rest_clients/project_client.py | 4 ++-- .../pyopencga/rest_clients/sample_client.py | 4 ++-- .../pyopencga/rest_clients/study_client.py | 4 ++-- .../pyopencga/rest_clients/user_client.py | 4 ++-- .../pyopencga/rest_clients/variant_client.py | 4 ++-- .../rest_clients/variant_operation_client.py | 4 ++-- 76 files changed, 174 insertions(+), 151 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 48db1bde2fd..8aae8622858 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-04-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index af1660a9e33..39e19ee88e1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-02-14 OpenCB +* Copyright 2015-2024-04-02 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java index 59d5ba0c3db..de60333d151 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/AnalysisVariantCommandExecutor.java @@ -1,9 +1,16 @@ package org.opencb.opencga.app.cli.main.executors; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.opencb.biodata.models.clinical.ClinicalProperty.ModeOfInheritance; +import org.opencb.biodata.models.clinical.ClinicalProperty.Penetrance; import org.opencb.biodata.models.clinical.qc.Signature; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantAnnotation; +import org.opencb.biodata.models.variant.metadata.Aggregation; import org.opencb.biodata.models.variant.metadata.SampleVariantStats; import org.opencb.biodata.models.variant.metadata.VariantMetadata; import org.opencb.biodata.models.variant.metadata.VariantSetStats; @@ -12,14 +19,18 @@ import org.opencb.commons.datastore.core.QueryResponse; import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.main.*; +import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.options.AnalysisVariantCommandOptions; import org.opencb.opencga.catalog.exceptions.CatalogAuthenticationException; +import org.opencb.opencga.client.exceptions.ClientException; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.models.analysis.knockout.KnockoutByGene; import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividual; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.job.Job; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsExportParams; +import org.opencb.opencga.core.models.variant.AnnotationVariantQueryParams; import org.opencb.opencga.core.models.variant.CircosAnalysisParams; import org.opencb.opencga.core.models.variant.CohortVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.FamilyQcAnalysisParams; @@ -40,10 +51,10 @@ import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.models.variant.SampleVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.VariantExportParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.variant.VariantStatsAnalysisParams; import org.opencb.opencga.core.response.QueryType; import org.opencb.opencga.core.response.RestResponse; +import org.opencb.oskar.analysis.variant.gwas.GwasConfiguration; /* @@ -416,6 +427,7 @@ private RestResponse runExomiser() throws Exception { } else { ObjectMap beanParams = new ObjectMap(); putNestedIfNotEmpty(beanParams, "sample",commandOptions.sample, true); + putNestedIfNotEmpty(beanParams, "clinicalAnalysisType",commandOptions.clinicalAnalysisType, true); putNestedIfNotEmpty(beanParams, "outdir",commandOptions.outdir, true); exomiserWrapperParams = JacksonUtils.getDefaultObjectMapper().copy() diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java index 294763c0b74..0b3a28d11b3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/OperationsVariantStorageCommandExecutor.java @@ -1,12 +1,19 @@ package org.opencb.opencga.app.cli.main.executors; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; +import java.util.List; +import org.opencb.biodata.models.variant.metadata.Aggregation; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.utils.PrintUtils; import org.opencb.opencga.app.cli.main.*; +import org.opencb.opencga.app.cli.main.executors.OpencgaCommandExecutor; import org.opencb.opencga.app.cli.main.options.OperationsVariantStorageCommandOptions; import org.opencb.opencga.catalog.exceptions.CatalogAuthenticationException; +import org.opencb.opencga.client.exceptions.ClientException; import org.opencb.opencga.core.common.JacksonUtils; +import org.opencb.opencga.core.common.YesNoAuto; import org.opencb.opencga.core.config.storage.CellBaseConfiguration; import org.opencb.opencga.core.config.storage.SampleIndexConfiguration; import org.opencb.opencga.core.models.job.Job; @@ -15,19 +22,19 @@ import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationSaveParams; +import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; import org.opencb.opencga.core.models.operations.variant.VariantFamilyIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; +import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantScoreIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondaryAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondarySampleIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataRepairToolParams; -import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; -import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; -import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataSynchronizeParams; import org.opencb.opencga.core.models.operations.variant.VariantStudyDeleteParams; import org.opencb.opencga.core.response.QueryType; diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java index 7ed949a68a5..328cc9eb556 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/executors/SamplesCommandExecutor.java @@ -125,6 +125,7 @@ private RestResponse updateAcl() throws Exception { queryParams.putIfNotEmpty("study", sessionManager.getSession().getCurrentStudy()); } + SampleAclUpdateParams sampleAclUpdateParams = null; if (commandOptions.jsonDataModel) { RestResponse res = new RestResponse<>(); diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java index ed53b2c1ded..f4a675b0e53 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java @@ -410,10 +410,13 @@ public class RunExomiserCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--sample"}, description = "The body web service sample parameter", required = false, arity = 1) + @Parameter(names = {"--sample"}, description = "Sample ID.", required = false, arity = 1) public String sample; - @Parameter(names = {"--outdir"}, description = "The body web service outdir parameter", required = false, arity = 1) + @Parameter(names = {"--clinical-analysis-type"}, description = "Clinical analysis type: SINGLE or FAMILY.", required = false, arity = 1) + public String clinicalAnalysisType = "SINGLE"; + + @Parameter(names = {"--outdir"}, description = "Output dir for the job.", required = false, arity = 1) public String outdir; } @@ -993,7 +996,7 @@ public class RunHrDetectCommandOptions { @Parameter(names = {"--description"}, description = "Decription for these particular HRDetect results.", required = false, arity = 1) public String description; - @Parameter(names = {"--sample-id"}, description = "Sample data model hosts information about any biological material, normally extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most basic and important information.", required = false, arity = 1) + @Parameter(names = {"--sample-id"}, description = "Sample ID.", required = false, arity = 1) public String sampleId; @Parameter(names = {"--snv-fitting-id"}, description = "Mutational signature fitting ID for SNV.", required = false, arity = 1) @@ -1079,7 +1082,7 @@ public class RunIndexCommandOptions { @Parameter(names = {"--fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String failOnMalformedLines; - @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean family = false; @Parameter(names = {"--somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) @@ -2035,7 +2038,7 @@ public class RunSampleQcCommandOptions { @Parameter(names = {"--job-tags"}, description = "Job tags", required = false, arity = 1) public String jobTags; - @Parameter(names = {"--sample"}, description = "Sample data model hosts information about any biological material, normally extracted from an _Individual_, that is used for a particular analysis. This is the main data model, it stores the most basic and important information.", required = false, arity = 1) + @Parameter(names = {"--sample"}, description = "Sample ID.", required = false, arity = 1) public String sample; @Parameter(names = {"--vs-id"}, description = "Variant stats ID.", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java index a9b95be294a..4f81b547328 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/OperationsVariantStorageCommandOptions.java @@ -160,10 +160,10 @@ public class AggregateVariantCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--overwrite"}, description = "The body web service overwrite parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--overwrite"}, description = "Overwrite aggregation for all files and variants. Repeat operation for already processed variants.", required = false, help = true, arity = 0) public boolean overwrite = false; - @Parameter(names = {"--resume"}, description = "The body web service resume parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--resume"}, description = "Resume a previously failed index operation", required = false, help = true, arity = 0) public boolean resume = false; } @@ -280,7 +280,7 @@ public class SaveVariantAnnotationCommandOptions { @Parameter(names = {"--project", "-p"}, description = "Project [user@]project where project can be either the ID or the alias", required = false, arity = 1) public String project; - @Parameter(names = {"--annotation-id"}, description = "The body web service annotationId parameter", required = false, arity = 1) + @Parameter(names = {"--annotation-id"}, description = "New Variant Annotation identifier", required = false, arity = 1) public String annotationId; } @@ -370,13 +370,13 @@ public class AggregateVariantFamilyCommandOptions { @Parameter(names = {"--study", "-s"}, description = "Study [[user@]project:]study where study and project can be either the ID or UUID", required = false, arity = 1) public String study; - @Parameter(names = {"--samples"}, description = "The body web service samples parameter", required = false, arity = 1) + @Parameter(names = {"--samples"}, description = "Samples within the same study to aggregate", required = false, arity = 1) public String samples; - @Parameter(names = {"--gaps-genotype"}, description = "The body web service gapsGenotype parameter", required = false, arity = 1) + @Parameter(names = {"--gaps-genotype"}, description = "Genotype to be used in gaps. Either 0/0, ./. or ?/?", required = false, arity = 1) public String gapsGenotype; - @Parameter(names = {"--resume"}, description = "The body web service resume parameter", required = false, help = true, arity = 0) + @Parameter(names = {"--resume"}, description = "Resume a previously failed index operation", required = false, help = true, arity = 0) public boolean resume = false; } @@ -473,7 +473,7 @@ public class IndexVariantCommandOptions { @Parameter(names = {"--fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String failOnMalformedLines; - @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean family = false; @Parameter(names = {"--somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) @@ -607,7 +607,7 @@ public class LauncherVariantIndexCommandOptions { @Parameter(names = {"--index-params-fail-on-malformed-lines"}, description = "Fail when encountering malformed lines. (yes, no, auto) [auto]", required = false, arity = 1) public String indexParamsFailOnMalformedLines; - @Parameter(names = {"--index-params-family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO and execute 'family-index' afterwards", required = false, help = true, arity = 0) + @Parameter(names = {"--index-params-family"}, description = "Indicate that the files to be loaded are part of a family. This will set 'load-hom-ref' to YES if it was in AUTO", required = false, help = true, arity = 0) public boolean indexParamsFamily = false; @Parameter(names = {"--index-params-somatic"}, description = "Indicate that the files to be loaded contain somatic samples. This will set 'load-hom-ref' to YES if it was in AUTO.", required = false, help = true, arity = 0) diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index c3041969f51..9eb3da76a50 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 53cd5d9802c..f2305dc2afc 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index f9fdb51fe6f..b95464800e9 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,37 +10,37 @@ setGeneric("projectClient", function(OpencgaR, project, projects, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, study, group, studies, members, templateId, variableSet, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, file, annotationSet, members, folder, files, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, members, sample, samples, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, annotationSet, family, members, families, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, interpretations, clinicalAnalyses, annotationSet, members, clinicalAnalysis, interpretation, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index ecd04d6d74d..12050747f04 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -61,7 +61,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretation, clinicalAnalysis, interpretations, annotationSet, clinicalAnalyses, members, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, interpretations, clinicalAnalyses, annotationSet, members, clinicalAnalysis, interpretation, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index b4cbb071860..0f06995005e 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohort, members, annotationSet, cohorts, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 9f965314e0f..ae6fcf23567 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, families, family, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, annotationSet, family, members, families, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index fd0ad7f691c..11e4a3b6e53 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, folder, annotationSet, file, files, members, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, file, annotationSet, members, folder, files, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index d9d2c5689e4..66438d21bf7 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 72d5e0839dc..eec88910643 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, individuals, members, annotationSet, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, members, individual, individuals, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index edfb52fbaff..37c35708bab 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, job, members, jobs, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, members, job, jobs, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 730500d7b4a..4281a8dd7a0 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index 11e89656de2..20688eb888d 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 3d1c5bfb8d3..447c7f260e7 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index ebbcb80dd92..2a990c23110 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index c5f0bbd3357..d3236dcb5ff 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, members, sample, samples, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index c86c0da79b1..80dd512e819 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, group, variableSet, studies, templateId, study, members, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, study, group, studies, members, templateId, variableSet, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index fb403c674e6..6fa09e03fc5 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, user, users, filterId, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, users, user, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index d114e5d4882..2139d8a1a6d 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-02-14 +# Autogenerated on: 2024-04-02 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index d4fcd4b1d60..ad1d3acb437 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Admin webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: admin */ public class AdminClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index c6c8c84fd8b..42c0aa02a6c 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -49,7 +49,7 @@ /** * This class contains methods for the Alignment webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/alignment */ public class AlignmentClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index e4858049e0b..0f1a735818d 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -54,7 +54,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -63,7 +63,7 @@ /** * This class contains methods for the ClinicalAnalysis webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/clinical */ public class ClinicalAnalysisClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index f136be11310..edc593ea0df 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Cohort webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: cohorts */ public class CohortClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 497e02f5445..42024d2cdb8 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -44,7 +44,7 @@ /** * This class contains methods for the DiseasePanel webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: panels */ public class DiseasePanelClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 437d6e65255..cef93b298d4 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Family webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: families */ public class FamilyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 66ae008ab7c..727b4bdaa1b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -43,7 +43,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -52,7 +52,7 @@ /** * This class contains methods for the File webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: files */ public class FileClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 5d007b409bd..29ba4b837db 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ /** * This class contains methods for the GA4GH webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: ga4gh */ public class GA4GHClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index 67bb7feb715..570b0c5e290 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Individual webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: individuals */ public class IndividualClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index c4fb407be93..dc70868534f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ /** * This class contains methods for the Job webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: jobs */ public class JobClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 4f1873c571c..c1038c2bcb1 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -37,7 +37,7 @@ /** * This class contains methods for the Meta webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: meta */ public class MetaClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index 19b3144a06d..46ff0306de0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -41,7 +41,7 @@ /** * This class contains methods for the Project webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: projects */ public class ProjectClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index f1e5b7ac798..2e7dac9ea70 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the Sample webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: samples */ public class SampleClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index 4a9b4550de8..9f304ec146b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -54,7 +54,7 @@ /** * This class contains methods for the Study webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: studies */ public class StudyClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index bbf582a2cc6..a3258204820 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -45,7 +45,7 @@ /** * This class contains methods for the User webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: users */ public class UserClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 1480df3ca9e..72a918c8f6a 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -32,6 +32,7 @@ import org.opencb.opencga.core.models.analysis.knockout.KnockoutByIndividual; import org.opencb.opencga.core.models.clinical.ExomiserWrapperParams; import org.opencb.opencga.core.models.job.Job; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsExportParams; import org.opencb.opencga.core.models.variant.CircosAnalysisParams; import org.opencb.opencga.core.models.variant.CohortVariantStatsAnalysisParams; @@ -53,7 +54,6 @@ import org.opencb.opencga.core.models.variant.SampleVariantFilterParams; import org.opencb.opencga.core.models.variant.SampleVariantStatsAnalysisParams; import org.opencb.opencga.core.models.variant.VariantExportParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; import org.opencb.opencga.core.models.variant.VariantStatsAnalysisParams; import org.opencb.opencga.core.response.RestResponse; @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -71,7 +71,7 @@ /** * This class contains methods for the Variant webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: analysis/variant */ public class VariantClient extends AbstractParentClient { diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 5351b58c869..e7e515c9357 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -28,19 +28,19 @@ import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantAnnotationSaveParams; +import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; import org.opencb.opencga.core.models.operations.variant.VariantFamilyIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; +import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; +import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; +import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; +import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantScoreIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondaryAnnotationIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantSecondarySampleIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStatsIndexParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataRepairToolParams; -import org.opencb.opencga.core.models.operations.variant.VariantConfigureParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileDeleteParams; -import org.opencb.opencga.core.models.operations.variant.VariantFileIndexJobLauncherParams; -import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; -import org.opencb.opencga.core.models.operations.variant.VariantPruneParams; -import org.opencb.opencga.core.models.operations.variant.VariantSampleDeleteParams; import org.opencb.opencga.core.models.operations.variant.VariantStorageMetadataSynchronizeParams; import org.opencb.opencga.core.models.operations.variant.VariantStudyDeleteParams; import org.opencb.opencga.core.response.RestResponse; @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-02-14 +* Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -59,7 +59,7 @@ /** * This class contains methods for the VariantOperation webservices. - * Client version: 2.12.3-SNAPSHOT + * Client version: 2.12.4-SNAPSHOT * PATH: operation */ public class VariantOperationClient extends AbstractParentClient { diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 30fe2d2b09b..2377deb6a5d 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 764a51d164d..f19e3f9730a 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 1556652d3d3..43355233c98 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 97ef19dcbdf..eed9d670e97 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index 52601203a30..ad3750dddd8 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index 608c23c087d..cc2a5e7fd84 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index f09d5c4562f..a512552f575 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index b656c0bd696..ad65f679658 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index d8bd896ae88..3446e95a702 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 9489c82bc7a..2ed4db0e9b4 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index b5636ff6a5e..8a452420625 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index bde7382c84d..6c5dc015c14 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index 990f3b3b04e..6a10489e885 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 7d443653ad9..9d68b8ecb87 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 2093a3aadb4..b008e70997a 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index c98bccd6bf5..1874e9b146d 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index ad54d4104cf..65132601a6d 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-02-14 + * Autogenerated on: 2024-04-02 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index 4a60e9c7e2f..3cc57636937 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Admin(_ParentRestClient): """ This class contains methods for the 'Admin' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/admin """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 98b40a3f711..54e58d84df2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Alignment(_ParentRestClient): """ This class contains methods for the 'Analysis - Alignment' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/alignment """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index 1e4a73902cc..9b385f43826 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class ClinicalAnalysis(_ParentRestClient): """ This class contains methods for the 'Analysis - Clinical' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/clinical """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 50af2a865a2..eebf5207dd3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Cohort(_ParentRestClient): """ This class contains methods for the 'Cohorts' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/cohorts """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index e234b2ff148..cad832f07e3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class DiseasePanel(_ParentRestClient): """ This class contains methods for the 'Disease Panels' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/panels """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 4fd32087258..3401712dbf8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Family(_ParentRestClient): """ This class contains methods for the 'Families' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/families """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 22e58ba63be..ef79d272d7b 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class File(_ParentRestClient): """ This class contains methods for the 'Files' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/files """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index b15c6e8bd76..55b32f7a9a3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class GA4GH(_ParentRestClient): """ This class contains methods for the 'GA4GH' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/ga4gh """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 3b393328993..65ab19393dd 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Individual(_ParentRestClient): """ This class contains methods for the 'Individuals' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/individuals """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 1d5369c4639..1a9e30fa472 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Job(_ParentRestClient): """ This class contains methods for the 'Jobs' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/jobs """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 1506926345b..91f1a0148c4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Meta(_ParentRestClient): """ This class contains methods for the 'Meta' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/meta """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 338e65d466c..9265e6cb11c 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Project(_ParentRestClient): """ This class contains methods for the 'Projects' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/projects """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index e83e98d3be2..01affe601e3 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Sample(_ParentRestClient): """ This class contains methods for the 'Samples' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/samples """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 17fda942ec7..620c5e3fdc6 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Study(_ParentRestClient): """ This class contains methods for the 'Studies' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/studies """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index f991cf25dae..b684890bcab 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class User(_ParentRestClient): """ This class contains methods for the 'Users' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/users """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 57cd7a1a9cf..cf74d9e49c8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class Variant(_ParentRestClient): """ This class contains methods for the 'Analysis - Variant' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/analysis/variant """ diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index b48bb9d8ad4..315ddf4e234 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-02-14 + Autogenerated on: 2024-04-02 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -14,7 +14,7 @@ class VariantOperation(_ParentRestClient): """ This class contains methods for the 'Operations - Variant Storage' webservices - Client version: 2.12.3-SNAPSHOT + Client version: 2.12.4-SNAPSHOT PATH: /{apiVersion}/operation """ From f9f40511b9afc65120dde7583dfff03e1d8040e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 3 Apr 2024 16:38:54 +0100 Subject: [PATCH 252/354] pom: Add log4j2-test.xml #TASK-5603 --- opencga-analysis/pom.xml | 8 ++++++++ opencga-catalog/pom.xml | 6 ++++++ .../src/test/resources/log4j2-test.xml | 20 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 opencga-core/src/test/resources/log4j2-test.xml diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 8f1dbb61469..abd6d563378 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -243,6 +243,14 @@ + + + ../opencga-core/src/test/resources + + log4j2-test.xml + + + org.apache.maven.plugins diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 7a4dd21139b..e20025edd44 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -265,6 +265,12 @@ template.zip + + ../opencga-core/src/test/resources + + log4j2-test.xml + + diff --git a/opencga-core/src/test/resources/log4j2-test.xml b/opencga-core/src/test/resources/log4j2-test.xml new file mode 100644 index 00000000000..dce741b72cb --- /dev/null +++ b/opencga-core/src/test/resources/log4j2-test.xml @@ -0,0 +1,20 @@ + + + + ${sys:opencga.log.level:-info} + + + + + + + + + + + + + + + + \ No newline at end of file From 8b9b5a3d098e9faf71585baab9a263861e750450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 9 Apr 2024 00:30:38 +0100 Subject: [PATCH 253/354] analysis: Fix PlatinumFileIndexerTest #TASK-6007 --- .../variant/manager/operations/PlatinumFileIndexerTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/PlatinumFileIndexerTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/PlatinumFileIndexerTest.java index c109362961a..f62d332470b 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/PlatinumFileIndexerTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/PlatinumFileIndexerTest.java @@ -107,9 +107,8 @@ public void testIndexFamily() throws Exception { ExecutionResult er = toolRunner.execute(VariantIndexOperationTool.class, params.toObjectMap() .append(ParamConstants.STUDY_PARAM, studyId), outDir, null, sessionId); - assertEquals(2, er.getSteps().size()); + assertEquals(1, er.getSteps().size()); assertEquals("variant-index", er.getSteps().get(0).getId()); - assertEquals("family-index", er.getSteps().get(1).getId()); variantManager.iterator(new Query(VariantQueryParam.STUDY.key(), studyId), new QueryOptions(), sessionId).forEachRemaining(variant -> { System.out.println("variant = " + variant); From 8875ff0e4944c349f8aba13895de695c3de862c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 9 Apr 2024 00:55:40 +0100 Subject: [PATCH 254/354] storage: Allow hgvs filtering via xrefs. #TASK-5878 --- .../core/variant/adaptors/VariantQuery.java | 14 +- .../variant/adaptors/VariantQueryParam.java | 2 +- .../VariantAnnotationModelUtils.java | 114 ++++++++ .../variant/query/ParsedVariantQuery.java | 11 + .../variant/query/VariantQueryParser.java | 2 +- .../core/variant/query/VariantQueryUtils.java | 11 + ...AbstractTwoPhasedVariantQueryExecutor.java | 2 +- .../VariantSearchToVariantConverter.java | 66 ++--- .../adaptors/VariantDBAdaptorTest.java | 61 +++-- .../executors/VariantQueryExecutorTest.java | 246 ++++++++++++++++++ .../VariantAnnotationToPhoenixConverter.java | 29 +-- .../SampleIndexVariantQueryExecutor.java | 6 +- .../HadoopVariantQueryExecutorTest.java | 30 +++ 13 files changed, 490 insertions(+), 104 deletions(-) create mode 100644 opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java create mode 100644 opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java create mode 100644 opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/query/executors/HadoopVariantQueryExecutorTest.java diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java index 65c2bda05e6..9c04ad9c9bf 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java @@ -105,6 +105,15 @@ public VariantQuery sample(String value) { return sample(VariantQueryUtils.QueryOperation.OR, value); } + public VariantQuery sample(List value) { + return sample(VariantQueryUtils.QueryOperation.OR, value); + } + + public VariantQuery sample(VariantQueryUtils.QueryOperation operation, List value) { + put(VariantQueryParam.SAMPLE.key(), value.stream().collect(Collectors.joining(operation.separator()))); + return this; + } + public VariantQuery sample(String... value) { return sample(VariantQueryUtils.QueryOperation.OR, value); } @@ -178,8 +187,9 @@ public VariantQuery includeSampleId(boolean value) { put(VariantQueryParam.INCLUDE_SAMPLE_ID.key(), value); return this; } - public String includeSampleId() { - return getString(VariantQueryParam.INCLUDE_SAMPLE_ID.key()); + + public boolean includeSampleId() { + return getBoolean(VariantQueryParam.INCLUDE_SAMPLE_ID.key()); } public VariantQuery sampleMetadata(boolean value) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java index b021b0e1382..f2d03ba6ddb 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java @@ -215,7 +215,7 @@ public final class VariantQueryParam implements QueryParam { public static final String ANNOT_XREF_DESCR = "List of any external reference, these can be genes, proteins or variants. " - + "Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ..."; + + "Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ..."; public static final VariantQueryParam ANNOT_XREF = new VariantQueryParam("xref", TEXT_ARRAY, ANNOT_XREF_DESCR); public static final String GENE_DESCR diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java new file mode 100644 index 00000000000..cb317120362 --- /dev/null +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java @@ -0,0 +1,114 @@ +package org.opencb.opencga.storage.core.variant.annotation.converters; + +import org.apache.commons.collections4.CollectionUtils; +import org.opencb.biodata.models.variant.avro.*; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class VariantAnnotationModelUtils { + + /** + * Extracts all the XRefs from a VariantAnnotation object. + * Includes: + * - annotation.id + * - annotation.xrefs.id + * - annotation.cytoband.chromosome + cytoband.name + * - annotation.hgvs + * - annotation.consequenceTypes.geneName + * - annotation.consequenceTypes.geneId + * - annotation.consequenceTypes.ensemblGeneId + * - annotation.consequenceTypes.transcriptId + * - annotation.consequenceTypes.ensemblTranscriptId + * - annotation.consequenceTypes.hgvs + * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotAccession + * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotName + * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotVariantId + * - annotation.consequenceTypes.proteinVariantAnnotation.features.id + * - annotation.traitAssociation.id + * - annotation.geneTraitAssociation.hpo + * - annotation.geneTraitAssociation.id + * + * @param variantAnnotation VariantAnnotation object + * @return Set of XRefs + */ + public Set extractXRefs(VariantAnnotation variantAnnotation) { + Set xrefs = new HashSet<>(); + + if (variantAnnotation == null) { + return xrefs; + } + + xrefs.add(variantAnnotation.getId()); + + if (variantAnnotation.getXrefs() != null) { + for (Xref xref : variantAnnotation.getXrefs()) { + if (xref != null) { + xrefs.add(xref.getId()); + } + } + } + + if (variantAnnotation.getCytoband() != null) { + for (Cytoband cytoband : variantAnnotation.getCytoband()) { + // TODO: Why do we need to add the chromosome name? + xrefs.add(cytoband.getChromosome() + cytoband.getName()); + } + } + + if (variantAnnotation.getHgvs() != null) { + xrefs.addAll(variantAnnotation.getHgvs()); + } + + List consequenceTypes = variantAnnotation.getConsequenceTypes(); + if (consequenceTypes != null) { + for (ConsequenceType conseqType : consequenceTypes) { + xrefs.add(conseqType.getGeneName()); + xrefs.add(conseqType.getGeneId()); + xrefs.add(conseqType.getEnsemblGeneId()); + xrefs.add(conseqType.getTranscriptId()); + xrefs.add(conseqType.getEnsemblTranscriptId()); + + if (conseqType.getHgvs() != null) { + xrefs.addAll(conseqType.getHgvs()); + } + + ProteinVariantAnnotation protVarAnnotation = conseqType.getProteinVariantAnnotation(); + if (protVarAnnotation != null) { + + xrefs.add(protVarAnnotation.getUniprotAccession()); + xrefs.add(protVarAnnotation.getUniprotName()); + xrefs.add(protVarAnnotation.getUniprotVariantId()); + + if (protVarAnnotation.getFeatures() != null) { + for (ProteinFeature proteinFeature : protVarAnnotation.getFeatures()) { + xrefs.add(proteinFeature.getId()); + } + } + } + } + + } + + if (CollectionUtils.isNotEmpty(variantAnnotation.getTraitAssociation())) { + for (EvidenceEntry evidenceEntry : variantAnnotation.getTraitAssociation()) { + xrefs.add(evidenceEntry.getId()); + } + } + + if (variantAnnotation.getGeneTraitAssociation() != null) { + for (GeneTraitAssociation geneTrait : variantAnnotation.getGeneTraitAssociation()) { + xrefs.add(geneTrait.getHpo()); + xrefs.add(geneTrait.getId()); + } + } + + // Remove empty strings and nulls + xrefs.remove(""); + xrefs.remove(null); + + return xrefs; + } + +} diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java index 9c89ffb5b61..5c90df943fc 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java @@ -226,5 +226,16 @@ public List getIDsAndXrefs() { public boolean isEmpty() { return genes.isEmpty() && variants.isEmpty() && ids.isEmpty() && otherXrefs.isEmpty(); } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("VariantQueryXref{"); + sb.append("genes=").append(genes); + sb.append(", variants=").append(variants); + sb.append(", ids=").append(ids); + sb.append(", otherXrefs=").append(otherXrefs); + sb.append('}'); + return sb.toString(); + } } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index 1564ad0fabf..21c1124c88e 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -851,7 +851,7 @@ public static ParsedVariantQuery.VariantQueryXref parseXrefs(Query query) { if (variant != null) { xrefs.getVariants().add(variant); } else { - if (isVariantAccession(value) || isClinicalAccession(value) || isGeneAccession(value)) { + if (isVariantAccession(value) || isClinicalAccession(value) || isGeneAccession(value) || isHGVS(value)) { xrefs.getOtherXrefs().add(value); } else { genes.add(value); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index 114379c77a9..c11c3f64634 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -466,6 +466,17 @@ public static boolean isVariantAccession(String value) { return value.startsWith("rs") || value.startsWith("VAR_"); } + /** + * Determines if the given value is a HGVS. + * + * @param value Value to check + * @return If is a known accession + */ + public static boolean isHGVS(String value) { + // Check regex ':[cnpg].' + return value.contains(":c.") || value.contains(":n.") || value.contains(":p.") || value.contains(":g."); + } + /** * Determines if the given value is a known clinical accession or not. *

diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java index a49fe60c3e4..5697998edb1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java @@ -133,7 +133,7 @@ protected boolean shouldGetApproximateCount(QueryOptions options, boolean iterat // } protected int getLimit(QueryOptions options) { - return options.getInt(QueryOptions.LIMIT); + return options.getInt(QueryOptions.LIMIT, -1); } protected int getSkip(QueryOptions options) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchToVariantConverter.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchToVariantConverter.java index 1eef2a8ef5e..62841c0a3b9 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchToVariantConverter.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchToVariantConverter.java @@ -34,6 +34,7 @@ import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; +import org.opencb.opencga.storage.core.variant.annotation.converters.VariantAnnotationModelUtils; import org.opencb.opencga.storage.core.variant.annotation.converters.VariantTraitAssociationToEvidenceEntryConverter; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.slf4j.Logger; @@ -59,6 +60,8 @@ public class VariantSearchToVariantConverter implements ComplexTypeConverter includeFields; + private final VariantAnnotationModelUtils variantAnnotationModelUtils = new VariantAnnotationModelUtils(); + public VariantSearchToVariantConverter() { this.includeFields = null; } @@ -666,19 +669,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { variantSearchModel.setEnd(variant.getEnd()); variantSearchModel.setType(variant.getType().toString()); - // This field contains all possible IDs: id, dbSNP, names, genes, transcripts, protein, clinvar, hpo, ... - // This will help when searching by variant id. This is added at the end of the method after collecting all IDs - Set xrefs = new HashSet<>(); - xrefs.add(variantSearchModel.getId()); - xrefs.add(variantSearchModel.getVariantId()); - if (variant.getNames() != null && !variant.getNames().isEmpty()) { - variant.getNames().forEach(name -> { - if (name != null) { - xrefs.add(name); - } - }); - } - // convert Study related information convertStudies(variant, variantSearchModel, other); @@ -698,11 +688,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { // Process Variant Annotation VariantAnnotation variantAnnotation = variant.getAnnotation(); if (variantAnnotation != null) { - - if (StringUtils.isNotEmpty(variantAnnotation.getId())) { - xrefs.add(variantAnnotation.getId()); - } - // This object will store all info and descriptions for full-text search Set traits = new HashSet<>(); @@ -721,27 +706,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { } variantSearchModel.setRelease(release); - // Add cytoband names - if (variantAnnotation.getCytoband() != null) { - for (Cytoband cytoband : variantAnnotation.getCytoband()) { - xrefs.add(cytoband.getChromosome() + cytoband.getName()); - } - } - - // Add all XRefs coming from the variant annotation - if (variantAnnotation.getXrefs() != null && !variantAnnotation.getXrefs().isEmpty()) { - variantAnnotation.getXrefs().forEach(xref -> { - if (xref != null) { - xrefs.add(xref.getId()); - } - }); - } - - // Add all HGVS coming from the variant annotation - if (ListUtils.isNotEmpty(variantAnnotation.getHgvs())) { - xrefs.addAll(variantAnnotation.getHgvs()); - } - // Set Genes and Consequence Types List consequenceTypes = variantAnnotation.getConsequenceTypes(); if (consequenceTypes != null) { @@ -782,10 +746,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { } } - xrefs.add(gene); - xrefs.add(conseqType.getGeneId()); - xrefs.add(conseqType.getTranscriptId()); - if (StringUtils.isNotEmpty(conseqType.getBiotype())) { biotypes.add(conseqType.getBiotype()); @@ -855,19 +815,16 @@ public VariantSearchModel convertToStorageType(Variant variant) { trans.append(FIELD_SEP); if (StringUtils.isNotEmpty(protVarAnnotation.getUniprotAccession())) { trans.append(protVarAnnotation.getUniprotAccession()); - xrefs.add(protVarAnnotation.getUniprotAccession()); } trans.append(FIELD_SEP); if (StringUtils.isNotEmpty(protVarAnnotation.getUniprotName())) { trans.append(protVarAnnotation.getUniprotName()); - xrefs.add(protVarAnnotation.getUniprotName()); } trans.append(FIELD_SEP); if (StringUtils.isNotEmpty(protVarAnnotation.getUniprotVariantId())) { trans.append(protVarAnnotation.getUniprotVariantId()); - xrefs.add(protVarAnnotation.getUniprotVariantId()); } trans.append(FIELD_SEP).append(protVarAnnotation.getPosition() == null @@ -908,8 +865,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { if (protVarAnnotation.getFeatures() != null) { for (ProteinFeature proteinFeature : protVarAnnotation.getFeatures()) { if (StringUtils.isNotEmpty(proteinFeature.getId())) { - // We store them in xrefs and traits, the number of these IDs is very small - xrefs.add(proteinFeature.getId()); traits.add("PD" + FIELD_SEP + proteinFeature.getId() + FIELD_SEP + proteinFeature.getDescription()); } @@ -992,9 +947,6 @@ public VariantSearchModel convertToStorageType(Variant variant) { List clinical = VariantQueryUtils.buildClinicalCombinations(variantAnnotation); for (EvidenceEntry ev : variantAnnotation.getTraitAssociation()) { if (ev.getSource() != null && StringUtils.isNotEmpty(ev.getSource().getName())) { - if (StringUtils.isNotEmpty(ev.getId())) { - xrefs.add(ev.getId()); - } if ("clinvar".equalsIgnoreCase(ev.getSource().getName())) { String clinSigSuffix = ""; if (ev.getVariantClassification() != null @@ -1064,6 +1016,18 @@ public VariantSearchModel convertToStorageType(Variant variant) { variantSearchModel.setOther(other); } + // This field contains all possible IDs: id, dbSNP, names, genes, transcripts, protein, clinvar, hpo, ... + // This will help when searching by variant id. This is added at the end of the method after collecting all IDs + Set xrefs = variantAnnotationModelUtils.extractXRefs(variant.getAnnotation()); + xrefs.add(variantSearchModel.getId()); + xrefs.add(variantSearchModel.getVariantId()); + if (variant.getNames() != null && !variant.getNames().isEmpty()) { + variant.getNames().forEach(name -> { + if (name != null) { + xrefs.add(name); + } + }); + } variantSearchModel.setXrefs(new ArrayList<>(xrefs)); return variantSearchModel; } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java index 1f305574a64..010c72b1ea4 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java @@ -30,9 +30,7 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.VariantFileMetadata; import org.opencb.biodata.models.variant.avro.*; -import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.models.variant.stats.VariantStats; -import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; @@ -558,28 +556,45 @@ public void testGetAllVariants_variantId() { @Test public void testGetAllVariants_xref() { - Query query = new Query(ANNOT_XREF.key(), "3:108634973:C:A,rs2032582,HP:0001250,VAR_048225,Q9BY64,ENSG00000250026,TMPRSS11B,COSM1421316"); - queryResult = query(query, null); - assertThat(queryResult, everyResult(allVariantsSummary, anyOf( - hasAnnotation(at("3:108634973:C:A")), - with("id", Variant::getId, is("rs2032582")), - hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, - hasItem(with("HPO", GeneTraitAssociation::getHpo, is("HP:0001250"))))), - hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, - hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, - with("UniprotVariantId", ProteinVariantAnnotation::getUniprotVariantId, is("VAR_048225")))))), - hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, - hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, - with("UniprotName", ProteinVariantAnnotation::getUniprotAccession, is("Q9BY64")))))), - hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, - hasItem(with("EnsemblGene", ConsequenceType::getGeneId, is("ENSG00000250026"))))), - hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, - hasItem(with("GeneName", ConsequenceType::getGeneName, is("TMPRSS11B"))))) -// hasAnnotation(with("VariantTraitAssociation", VariantAnnotation::getVariantTraitAssociation, -// with("Cosmic", VariantTraitAssociation::getCosmic, -// hasItem(with("MutationId", Cosmic::getMutationId, is("COSM1421316")))))) - ))); + Map> matchers = new HashMap<>(); + matchers.put("3:108634973:C:A", hasAnnotation(at("3:108634973:C:A"))); + matchers.put("rs2032582", with("id", Variant::getId, is("rs2032582"))); + matchers.put("HP:0001250", hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, + hasItem(with("HPO", GeneTraitAssociation::getHpo, is("HP:0001250")))))); + matchers.put("VAR_048225", hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, + hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("UniprotVariantId", ProteinVariantAnnotation::getUniprotVariantId, is("VAR_048225"))))))); + matchers.put("Q9BY64", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( + with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("UniprotAccession", ProteinVariantAnnotation::getUniprotAccession, + is("Q9BY64"))))))); + matchers.put("ENSG00000250026", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( + with("GeneId", ConsequenceType::getGeneId, + is("ENSG00000250026")))))); + matchers.put("TMPRSS11B", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( + with("GeneName", ConsequenceType::getGeneName, + is("TMPRSS11B")))))); + matchers.put("COSM1421316", hasAnnotation(with("TraitAssociation", VariantAnnotation::getTraitAssociation, hasItem( + with("Cosmic", EvidenceEntry::getId, is("COSM1421316")))))); + + // Query one by one + for (Map.Entry> entry : matchers.entrySet()) { + Query query = new Query(ANNOT_XREF.key(), entry.getKey()); + queryResult = query(query, null); + assertThat(entry.getKey(), queryResult, everyResult(allVariantsSummary, allOf(entry.getValue()))); + query = new Query(ID.key(), entry.getKey()); + queryResult = query(query, null); + assertThat(entry.getKey(), queryResult, everyResult(allVariantsSummary, allOf(entry.getValue()))); + } + + // Query by all xrefs + Query query = new Query(ANNOT_XREF.key(), matchers.keySet()); + queryResult = query(query, null); + assertThat(queryResult, everyResult(allVariantsSummary, anyOf(matchers.values()))); } @Test diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java new file mode 100644 index 00000000000..9da19716cfd --- /dev/null +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -0,0 +1,246 @@ +package org.opencb.opencga.storage.core.variant.query.executors; + +import org.hamcrest.Matcher; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.opencb.biodata.models.variant.Variant; +import org.opencb.biodata.models.variant.VariantFileMetadata; +import org.opencb.biodata.models.variant.avro.*; +import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.datastore.core.Query; +import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.StoragePipelineResult; +import org.opencb.opencga.storage.core.exceptions.StorageEngineException; +import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; +import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; +import org.opencb.opencga.storage.core.variant.VariantStorageOptions; +import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; +import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; +import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; +import org.opencb.opencga.storage.core.variant.stats.DefaultVariantStatisticsManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Paths; +import java.util.*; + +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantMatchers.*; + +@Ignore +public abstract class VariantQueryExecutorTest extends VariantStorageBaseTest { + + private static Logger logger = LoggerFactory.getLogger(VariantQueryExecutorTest.class); + + protected boolean fileIndexed; + private StudyMetadata studyMetadata; + private VariantFileMetadata fileMetadata; + private int numVariants; + private DBAdaptorVariantQueryExecutor dbQueryExecutor; + private List variantQueryExecutors; + + @Before + public void setUp() throws Exception { + + VariantDBAdaptor dbAdaptor = getVariantStorageEngine().getDBAdaptor(); + VariantStorageMetadataManager metadataManager = dbAdaptor.getMetadataManager(); + if (!fileIndexed) { + studyMetadata = newStudyMetadata(); +// variantSource = new VariantSource(smallInputUri.getPath(), "testAlias", "testStudy", "Study for testing purposes"); + clearDB(DB_NAME); + ObjectMap params = new ObjectMap() + .append(VariantStorageOptions.ASSEMBLY.key(), "GRCH38") + .append(VariantStorageOptions.ANNOTATE.key(), true) + .append(VariantStorageOptions.ANNOTATION_CHECKPOINT_SIZE.key(), 500) + .append(VariantStorageOptions.STATS_CALCULATE.key(), true); + + StoragePipelineResult etlResult = runDefaultETL(smallInputUri, getVariantStorageEngine(), studyMetadata, params); + fileMetadata = variantStorageEngine.getVariantReaderUtils().readVariantFileMetadata(Paths.get(etlResult.getTransformResult().getPath()).toUri()); + numVariants = getExpectedNumLoadedVariants(fileMetadata); + fileIndexed = true; + Integer indexedFileId = metadataManager.getIndexedFiles(studyMetadata.getId()).iterator().next(); + + //Calculate stats + QueryOptions options = new QueryOptions(VariantStorageOptions.STUDY.key(), STUDY_NAME) + .append(VariantStorageOptions.LOAD_BATCH_SIZE.key(), 100) + .append(DefaultVariantStatisticsManager.OUTPUT, outputUri) + .append(DefaultVariantStatisticsManager.OUTPUT_FILE_NAME, "cohort1.cohort2.stats"); + Iterator iterator = metadataManager.getFileMetadata(studyMetadata.getId(), indexedFileId).getSamples().iterator(); + + /** Create cohorts **/ + HashSet cohort1 = new HashSet<>(); + cohort1.add(metadataManager.getSampleName(studyMetadata.getId(), iterator.next())); + cohort1.add(metadataManager.getSampleName(studyMetadata.getId(), iterator.next())); + + HashSet cohort2 = new HashSet<>(); + cohort2.add(metadataManager.getSampleName(studyMetadata.getId(), iterator.next())); + cohort2.add(metadataManager.getSampleName(studyMetadata.getId(), iterator.next())); + + Map> cohorts = new HashMap<>(); + cohorts.put("cohort1", cohort1); + cohorts.put("cohort2", cohort2); + metadataManager.registerCohorts(studyMetadata.getName(), cohorts); + + variantStorageEngine.calculateStats(studyMetadata.getName(), + new ArrayList<>(cohorts.keySet()), options); + + + variantQueryExecutors = variantStorageEngine.getVariantQueryExecutors(); + dbQueryExecutor = null; + for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { + if (variantQueryExecutor instanceof DBAdaptorVariantQueryExecutor) { + dbQueryExecutor = (DBAdaptorVariantQueryExecutor) variantQueryExecutor; + break; + } + } + Assert.assertNotNull(dbQueryExecutor); + } + } + + @Test + public void testXRefRs() throws StorageEngineException { + Map> matchers = new LinkedHashMap<>(); + matchers.put("3:108634973:C:A", hasAnnotation(at("3:108634973:C:A"))); +// matchers.put("rs2032582", with("id", Variant::getId, is("rs2032582"))); + matchers.put("HP:0001250", hasAnnotation(with("GeneTraitAssociation", VariantAnnotation::getGeneTraitAssociation, + hasItem(with("HPO", GeneTraitAssociation::getHpo, is("HP:0001250")))))); + matchers.put("VAR_031174", hasAnnotation(with("ConsequenceType", VariantAnnotation::getConsequenceTypes, + hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("UniprotVariantId", ProteinVariantAnnotation::getUniprotVariantId, is("VAR_031174"))))))); +// matchers.put("Q9BY64", hasAnnotation( +// with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( +// with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, +// with("UniprotAccession", ProteinVariantAnnotation::getUniprotAccession, +// is("Q9BY64"))))))); + matchers.put("ENSG00000170925", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( + with("GeneId", ConsequenceType::getGeneId, + is("ENSG00000170925")))))); + matchers.put("TEX13B", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( + with("GeneName", ConsequenceType::getGeneName, + is("TEX13B")))))); + matchers.put("COSV60260399", hasAnnotation(with("TraitAssociation", VariantAnnotation::getTraitAssociation, hasItem( + with("Cosmic", EvidenceEntry::getId, is("COSV60260399")))))); + matchers.put("ENST00000341832.11(ENSG00000248333):c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( + is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); + + for (Map.Entry> entry : matchers.entrySet()) { + testQuery(new VariantQuery().xref(entry.getKey()), new QueryOptions(), entry.getValue()); + VariantQueryResult result = testQuery(new VariantQuery().xref(entry.getKey()) + .study(studyMetadata.getName()) + .includeSampleId(true) + .includeSampleAll(), new QueryOptions(), entry.getValue()); + if (result.getNumResults() == 1) { + for (SampleEntry sample : result.first().getStudies().get(0).getSamples()) { + if (GenotypeClass.MAIN_ALT.test(sample.getData().get(0))) { + testQuery(new VariantQuery().xref(entry.getKey()) + .study(studyMetadata.getName()) + .includeSampleId(true) + .sample(sample.getSampleId()), + new QueryOptions(), entry.getValue()); + } + } + } else { + List samples = result.first().getStudies().get(0).getOrderedSamplesName(); + testQuery(new VariantQuery().xref(entry.getKey()) + .study(studyMetadata.getName()) + .includeSampleId(true) + .sample(samples), + new QueryOptions(), entry.getValue()); + } +// Variant v = result.first(); +// +// for (SampleEntry sample : v.getStudies().get(0).getSamples()) { +// if (GenotypeClass.MAIN_ALT.test(sample.getData().get(0))) { +// testQuery(new VariantQuery().xref(entry.getKey()) +// .study(studyMetadata.getName()) +// .includeSampleId(true) +// .sample(sample.getSampleId()), +// new QueryOptions(), entry.getValue()); +// } +// } + } + } + + public VariantQueryResult testQuery(Query query, QueryOptions options, Matcher matcher) throws StorageEngineException { + logger.info(""); + logger.info(""); + logger.info("####################################################"); + logger.info("########## Testing query " + query.toJson()); + logger.info("####################################################"); + Assert.assertTrue(dbQueryExecutor.canUseThisExecutor(query, options)); + + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); + VariantQueryResult expected = dbQueryExecutor.get(new Query(variantQuery.getQuery()), new QueryOptions(options)); + + VariantQueryResult unfilteredResult = null; + VariantQueryResult result = null; + if (matcher != null) { + Query emptyQuery = new Query(); + List fileNames = new LinkedList<>(); + List sampleNames = new LinkedList<>(); + List studyNames = new LinkedList<>(); + emptyQuery.put(VariantQueryParam.INCLUDE_FILE.key(), VariantQueryUtils.NONE); + emptyQuery.put(VariantQueryParam.INCLUDE_SAMPLE.key(), VariantQueryUtils.NONE); + emptyQuery.put(VariantQueryParam.INCLUDE_STUDY.key(), VariantQueryUtils.NONE); + emptyQuery.putIfNotNull(VariantQueryParam.INCLUDE_SAMPLE_ID.key(), query.get(VariantQueryParam.INCLUDE_SAMPLE_ID.key())); + emptyQuery.putIfNotNull(VariantQueryParam.INCLUDE_GENOTYPE.key(), query.get(VariantQueryParam.INCLUDE_GENOTYPE.key())); + emptyQuery.putIfNotNull(VariantQueryParam.INCLUDE_SAMPLE_DATA.key(), query.get(VariantQueryParam.INCLUDE_SAMPLE_DATA.key())); + for (VariantQueryProjection.StudyVariantQueryProjection study : variantQuery.getProjection().getStudies().values()) { + studyNames.add(study.getStudyMetadata().getName()); + for (Integer file : study.getFiles()) { + String fileName = metadataManager.getFileName(study.getStudyMetadata().getId(), file); + fileNames.add(fileName); + } + for (Integer sample : study.getSamples()) { + String sampleName = metadataManager.getSampleName(study.getStudyMetadata().getId(), sample); + sampleNames.add(sampleName); + } + } + if (!studyNames.isEmpty()) { + emptyQuery.put(VariantQueryParam.INCLUDE_STUDY.key(), studyNames); + } + if (!fileNames.isEmpty()) { + emptyQuery.put(VariantQueryParam.INCLUDE_FILE.key(), fileNames); + } + if (!sampleNames.isEmpty()) { + emptyQuery.put(VariantQueryParam.INCLUDE_SAMPLE.key(), sampleNames); + } + QueryOptions emptyOptions = new QueryOptions(); + emptyOptions.putIfNotEmpty(QueryOptions.INCLUDE, options.getString(QueryOptions.INCLUDE)); + emptyOptions.putIfNotEmpty(QueryOptions.EXCLUDE, options.getString(QueryOptions.EXCLUDE)); + unfilteredResult = dbQueryExecutor.get(emptyQuery, emptyOptions); + } + + for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { + if (variantQueryExecutor.canUseThisExecutor(query, options)) { + logger.info("##########################"); + logger.info("########## Testing " + variantQueryExecutor.getClass().getSimpleName() + " with query " + query.toJson()); + result = variantQueryExecutor.get(new Query(variantQuery.getQuery()), new QueryOptions(options)); + logger.info("########## Num results : " + result.getNumResults()); + logger.info("##########################"); + Assert.assertEquals(expected.getResults(), result.getResults()); + + assertThat(result, numResults(gt(0))); + + if (matcher != null) { + assertThat(result, everyResult(unfilteredResult, matcher)); + } + } + } + // Return any result. + return result; + } + +} diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/annotation/VariantAnnotationToPhoenixConverter.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/annotation/VariantAnnotationToPhoenixConverter.java index c9bb8646c04..d991c8a3c30 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/annotation/VariantAnnotationToPhoenixConverter.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/annotation/VariantAnnotationToPhoenixConverter.java @@ -16,7 +16,6 @@ package org.opencb.opencga.storage.hadoop.variant.converters.annotation; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes; @@ -24,6 +23,7 @@ import org.opencb.biodata.models.variant.avro.*; import org.opencb.biodata.tools.commons.Converter; import org.opencb.commons.utils.CompressionUtils; +import org.opencb.opencga.storage.core.variant.annotation.converters.VariantAnnotationModelUtils; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.PhoenixHelper; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; @@ -62,6 +62,7 @@ public class VariantAnnotationToPhoenixConverter extends AbstractPhoenixConverte } private int annotationId; + private VariantAnnotationModelUtils variantAnnotationModelUtils = new VariantAnnotationModelUtils(); @Deprecated public VariantAnnotationToPhoenixConverter(byte[] columnFamily) { @@ -114,10 +115,6 @@ public VariantAnnotationToPhoenixConverter(byte[] columnFamily, int annotationId // Set hpo = new HashSet<>(); Set drugs = new HashSet<>(); Set proteinKeywords = new HashSet<>(); - // Contains all the xrefs, and the id, the geneNames and transcripts - Set xrefs = new HashSet<>(); - - addNotNull(xrefs, variantAnnotation.getId()); List consequenceTypes = variantAnnotation.getConsequenceTypes() == null ? Collections.emptyList() @@ -125,7 +122,9 @@ public VariantAnnotationToPhoenixConverter(byte[] columnFamily, int annotationId for (ConsequenceType consequenceType : consequenceTypes) { addNotNull(genes, consequenceType.getGeneName()); addNotNull(genes, consequenceType.getGeneId()); + addNotNull(genes, consequenceType.getEnsemblGeneId()); addNotNull(transcripts, consequenceType.getTranscriptId()); + addNotNull(transcripts, consequenceType.getEnsemblTranscriptId()); addNotNull(biotype, consequenceType.getBiotype()); addAllNotNull(flags, consequenceType.getTranscriptFlags()); @@ -192,32 +191,14 @@ public VariantAnnotationToPhoenixConverter(byte[] columnFamily, int annotationId if (proteinVariantAnnotation.getKeywords() != null) { proteinKeywords.addAll(proteinVariantAnnotation.getKeywords()); } - addNotNull(xrefs, proteinVariantAnnotation.getUniprotName()); - addNotNull(xrefs, proteinVariantAnnotation.getUniprotAccession()); - addNotNull(xrefs, proteinVariantAnnotation.getUniprotVariantId()); } } - if (CollectionUtils.isNotEmpty(variantAnnotation.getTraitAssociation())) { - for (EvidenceEntry evidenceEntry : variantAnnotation.getTraitAssociation()) { - addNotNull(xrefs, evidenceEntry.getId()); - } - } - - xrefs.addAll(genes); - xrefs.addAll(transcripts); - if (variantAnnotation.getXrefs() != null) { - for (Xref xref : variantAnnotation.getXrefs()) { - addNotNull(xrefs, xref.getId()); - } - } if (variantAnnotation.getGeneTraitAssociation() != null) { for (GeneTraitAssociation geneTrait : variantAnnotation.getGeneTraitAssociation()) { addNotNull(geneTraitName, geneTrait.getName()); addNotNull(geneTraitId, geneTrait.getId()); - addNotNull(xrefs, geneTrait.getHpo()); - addNotNull(xrefs, geneTrait.getId()); } } @@ -235,6 +216,8 @@ public VariantAnnotationToPhoenixConverter(byte[] columnFamily, int annotationId geneSoFlag.remove(null); soFlag.remove(null); + Set xrefs = variantAnnotationModelUtils.extractXRefs(variantAnnotation); + map.put(CHROMOSOME, variantAnnotation.getChromosome()); map.put(POSITION, variantAnnotation.getStart()); map.put(REFERENCE, variantAnnotation.getReference()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java index 64cf8669153..2e1b74b9f88 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java @@ -131,7 +131,9 @@ protected Object getOrIterator(Query query, QueryOptions inputOptions, boolean i // Ensure results are sorted and it's not counting from variants dbAdaptor options.put(QueryOptions.SORT, true); options.put(QueryOptions.COUNT, false); - options.put(QueryOptions.LIMIT, tmpLimit); + if (limit > 0) { + options.put(QueryOptions.LIMIT, tmpLimit); + } MultiVariantDBIterator variantDBIterator = dbAdaptor.iterator( new org.opencb.opencga.storage.core.variant.adaptors.iterators.DelegatedVariantDBIterator(variants) { @@ -166,7 +168,7 @@ public void close() throws Exception { } // Ensure limit - if (result.getNumResults() > limit) { + if (limit > 0 && result.getNumResults() > limit) { result.setResults(result.getResults().subList(0, limit)); result.setNumResults(limit); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/query/executors/HadoopVariantQueryExecutorTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/query/executors/HadoopVariantQueryExecutorTest.java new file mode 100644 index 00000000000..7cc495bbe63 --- /dev/null +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/query/executors/HadoopVariantQueryExecutorTest.java @@ -0,0 +1,30 @@ +package org.opencb.opencga.storage.hadoop.variant.query.executors; + +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.experimental.categories.Category; +import org.junit.rules.ExternalResource; +import org.opencb.opencga.core.testclassification.duration.LongTests; +import org.opencb.opencga.storage.core.variant.query.executors.VariantQueryExecutorTest; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageTest; +import org.opencb.opencga.storage.hadoop.variant.VariantHbaseTestUtils; + +import static org.opencb.opencga.storage.hadoop.variant.VariantHbaseTestUtils.printVariants; + + +@Category(LongTests.class) +public class HadoopVariantQueryExecutorTest extends VariantQueryExecutorTest implements HadoopVariantStorageTest { + + @ClassRule + public static ExternalResource externalResource = new HadoopExternalResource(); + + @Override + @Before + public void setUp() throws Exception { + boolean firstRun = !super.fileIndexed; + super.setUp(); + if (firstRun) { + VariantHbaseTestUtils.printVariants(getVariantStorageEngine().getDBAdaptor(), newOutputUri()); + } + } +} From 9d315933453c6f9d392ab08b213da76d8c4fa4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 10 Apr 2024 16:26:44 +0100 Subject: [PATCH 255/354] storage: Identify ProteinFeatureID as an xref #TASK-5878 --- .../variant/adaptors/VariantQueryParam.java | 2 +- .../VariantAnnotationModelUtils.java | 8 --- .../variant/query/VariantQueryParser.java | 6 +- .../core/variant/query/VariantQueryUtils.java | 15 +++++ .../executors/VariantQueryExecutorTest.java | 60 ++++++++++++------- .../solr/VariantSolrExternalResource.java | 1 + 6 files changed, 62 insertions(+), 30 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java index f2d03ba6ddb..c10fd5def09 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java @@ -41,7 +41,7 @@ public final class VariantQueryParam implements QueryParam { private static final String ACCEPTS_AND_OR = "Accepts AND (" + AND + ") and OR (" + OR + ") operators."; public static final String ID_DESCR - = "List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T"; + = "List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T"; public static final VariantQueryParam ID = new VariantQueryParam("id", TEXT_ARRAY, ID_DESCR); public static final String REGION_DESCR diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java index cb317120362..c31b7137236 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java @@ -14,7 +14,6 @@ public class VariantAnnotationModelUtils { * Includes: * - annotation.id * - annotation.xrefs.id - * - annotation.cytoband.chromosome + cytoband.name * - annotation.hgvs * - annotation.consequenceTypes.geneName * - annotation.consequenceTypes.geneId @@ -50,13 +49,6 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } } - if (variantAnnotation.getCytoband() != null) { - for (Cytoband cytoband : variantAnnotation.getCytoband()) { - // TODO: Why do we need to add the chromosome name? - xrefs.add(cytoband.getChromosome() + cytoband.getName()); - } - } - if (variantAnnotation.getHgvs() != null) { xrefs.addAll(variantAnnotation.getHgvs()); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index 21c1124c88e..c28e76eab24 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -851,7 +851,11 @@ public static ParsedVariantQuery.VariantQueryXref parseXrefs(Query query) { if (variant != null) { xrefs.getVariants().add(variant); } else { - if (isVariantAccession(value) || isClinicalAccession(value) || isGeneAccession(value) || isHGVS(value)) { + if (isVariantAccession(value) + || isClinicalAccession(value) + || isGeneAccession(value) + || isHGVS(value) + || isProteinFeatureId(value)) { xrefs.getOtherXrefs().add(value); } else { genes.add(value); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index c11c3f64634..371b7b3239a 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -474,6 +474,9 @@ public static boolean isVariantAccession(String value) { */ public static boolean isHGVS(String value) { // Check regex ':[cnpg].' + // HGVC examples : + // - "1:g.65325832G>A" + // - "1:g.65325832_65325833insA" return value.contains(":c.") || value.contains(":n.") || value.contains(":p.") || value.contains(":g."); } @@ -505,6 +508,18 @@ public static boolean isGeneAccession(String value) { return isHpo(value) || value.startsWith("OMIM:") || value.startsWith("umls:"); } + /** + * Determines if the given value is a valid protein feature id. + *

+ * Protein feature id starts with 'PRO_', 'VAR_' or 'VSP_' + * + * @param value Value to check + * @return If is a known accession + */ + public static boolean isProteinFeatureId(String value) { + return value.startsWith("PRO_") | value.startsWith("VAR_") | value.startsWith("VSP_"); + } + /** * Determines if the given value is a HPO term or not. *

diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java index 9da19716cfd..b5fdde0fb85 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -1,10 +1,7 @@ package org.opencb.opencga.storage.core.variant.query.executors; import org.hamcrest.Matcher; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.*; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.VariantFileMetadata; import org.opencb.biodata.models.variant.avro.*; @@ -25,6 +22,7 @@ import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; +import org.opencb.opencga.storage.core.variant.solr.VariantSolrExternalResource; import org.opencb.opencga.storage.core.variant.stats.DefaultVariantStatisticsManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,11 +47,15 @@ public abstract class VariantQueryExecutorTest extends VariantStorageBaseTest { private DBAdaptorVariantQueryExecutor dbQueryExecutor; private List variantQueryExecutors; + @ClassRule + public static VariantSolrExternalResource solr = new VariantSolrExternalResource(); + @Before public void setUp() throws Exception { VariantDBAdaptor dbAdaptor = getVariantStorageEngine().getDBAdaptor(); VariantStorageMetadataManager metadataManager = dbAdaptor.getMetadataManager(); + solr.configure(variantStorageEngine); if (!fileIndexed) { studyMetadata = newStudyMetadata(); // variantSource = new VariantSource(smallInputUri.getPath(), "testAlias", "testStudy", "Study for testing purposes"); @@ -94,6 +96,9 @@ public void setUp() throws Exception { variantStorageEngine.calculateStats(studyMetadata.getName(), new ArrayList<>(cohorts.keySet()), options); + solr.configure(variantStorageEngine); + variantStorageEngine.secondaryIndex(); + Assert.assertTrue(variantStorageEngine.secondaryAnnotationIndexActiveAndAlive()); variantQueryExecutors = variantStorageEngine.getVariantQueryExecutors(); dbQueryExecutor = null; @@ -134,6 +139,21 @@ public void testXRefRs() throws StorageEngineException { with("Cosmic", EvidenceEntry::getId, is("COSV60260399")))))); matchers.put("ENST00000341832.11(ENSG00000248333):c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); + matchers.put("VSP_039324", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, + hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("Features", ProteinVariantAnnotation::getFeatures, + hasItem(with("id", ProteinFeature::getId, is("VSP_039324"))))))))); + matchers.put("VAR_081776", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, + hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("Features", ProteinVariantAnnotation::getFeatures, + hasItem(with("id", ProteinFeature::getId, is("VAR_081776"))))))))); + matchers.put("PRO_0000211180", hasAnnotation( + with("ConsequenceType", VariantAnnotation::getConsequenceTypes, + hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, + with("Features", ProteinVariantAnnotation::getFeatures, + hasItem(with("id", ProteinFeature::getId, is("PRO_0000211180"))))))))); for (Map.Entry> entry : matchers.entrySet()) { testQuery(new VariantQuery().xref(entry.getKey()), new QueryOptions(), entry.getValue()); @@ -159,17 +179,6 @@ public void testXRefRs() throws StorageEngineException { .sample(samples), new QueryOptions(), entry.getValue()); } -// Variant v = result.first(); -// -// for (SampleEntry sample : v.getStudies().get(0).getSamples()) { -// if (GenotypeClass.MAIN_ALT.test(sample.getData().get(0))) { -// testQuery(new VariantQuery().xref(entry.getKey()) -// .study(studyMetadata.getName()) -// .includeSampleId(true) -// .sample(sample.getSampleId()), -// new QueryOptions(), entry.getValue()); -// } -// } } } @@ -177,8 +186,15 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, logger.info(""); logger.info(""); logger.info("####################################################"); - logger.info("########## Testing query " + query.toJson()); + logger.info("########## TEST QUERY :" + query.toJson()); logger.info("####################################################"); + logger.info("## Allowed VariantQueryExecutors:"); + for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { + if (variantQueryExecutor.canUseThisExecutor(query, options)) { + logger.info("## - " + variantQueryExecutor.getClass().getSimpleName()); + } + } + logger.info("## Using DBAdaptorVariantQueryExecutor for expected results"); Assert.assertTrue(dbQueryExecutor.canUseThisExecutor(query, options)); ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); @@ -187,6 +203,7 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, VariantQueryResult unfilteredResult = null; VariantQueryResult result = null; if (matcher != null) { + logger.info("## Unfiltered query for comparison"); Query emptyQuery = new Query(); List fileNames = new LinkedList<>(); List sampleNames = new LinkedList<>(); @@ -225,11 +242,14 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { if (variantQueryExecutor.canUseThisExecutor(query, options)) { - logger.info("##########################"); - logger.info("########## Testing " + variantQueryExecutor.getClass().getSimpleName() + " with query " + query.toJson()); + logger.info(""); + logger.info("###################"); + logger.info("### Testing " + variantQueryExecutor.getClass().getSimpleName()); result = variantQueryExecutor.get(new Query(variantQuery.getQuery()), new QueryOptions(options)); - logger.info("########## Num results : " + result.getNumResults()); - logger.info("##########################"); + logger.info("### Num results : " + result.getNumResults()); + logger.info("###################"); + expected.getResults().sort(Comparator.comparing(Variant::toString)); + result.getResults().sort(Comparator.comparing(Variant::toString)); Assert.assertEquals(expected.getResults(), result.getResults()); assertThat(result, numResults(gt(0))); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java index 7ae1991221d..03548c65102 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java @@ -120,6 +120,7 @@ public VariantSearchManager configure(VariantStorageEngine variantStorageEngine) VariantSearchManager variantSearchManager = variantStorageEngine.getVariantSearchManager(); variantSearchManager.setSolrManager(new SolrManager(solrClient, "localhost", "core", variantStorageEngine.getConfiguration().getSearch().getTimeout())); + variantSearchManager.setSolrClient(solrClient); return variantSearchManager; } From 4caa913179fbe37d6b97a2bca6a618e60f0b1112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 12 Apr 2024 14:15:31 +0100 Subject: [PATCH 256/354] storage: Fix rs-id filtering in sample/data endpoint #TASK-5878 --- .../storage/core/utils/CellBaseUtils.java | 1 + .../core/variant/VariantStorageEngine.java | 32 +++++++++++++++++-- .../sample/VariantSampleDataManager.java | 12 +++---- .../variant/adaptors/VariantMatchers.java | 14 ++++++++ .../annotation/DummyTestAnnotator.java | 7 ++++ .../VariantAnnotationManagerTest.java | 5 +++ .../variant/HadoopVariantStorageEngine.java | 6 ++-- .../sample/HBaseVariantSampleDataManager.java | 20 +++--------- 8 files changed, 70 insertions(+), 27 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/utils/CellBaseUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/utils/CellBaseUtils.java index ed0848a0e0b..f8dfc2d1f9f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/utils/CellBaseUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/utils/CellBaseUtils.java @@ -343,6 +343,7 @@ public List getVariants(List variantsStr) { List variants = new ArrayList<>(variantsStr.size()); List> response = null; try { + // FIXME: This method should call genomic/variant/snp/search response = checkNulls(cellBaseClient.getVariantClient().get(variantsStr, new QueryOptions(QueryOptions.INCLUDE, VariantField.CHROMOSOME.fieldName() + "," diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index a3ab7e539b5..018d09292f1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -1192,8 +1192,36 @@ public VariantQueryResult getCompoundHeterozygous(String study, String return get(query, options); } - public DataResult getSampleData(String variant, String study, QueryOptions options) throws StorageEngineException { - return new VariantSampleDataManager(getDBAdaptor()).getSampleData(variant, study, options); + public DataResult getSampleData(String variantStr, String study, QueryOptions options) throws StorageEngineException { + final Variant variant = getVariant(variantStr); + return getVariantSampleDataManager().getSampleData(variant, study, options); + } + + public Variant getVariant(String variantStr) { + final Variant variant; + if (VariantQueryUtils.isVariantId(variantStr)) { + variant = new Variant(variantStr); + } else if (VariantQueryUtils.isVariantAccession(variantStr)) { + VariantQueryResult result = get(new Query(VariantQueryParam.ANNOT_XREF.key(), variantStr), + new QueryOptions(QueryOptions.INCLUDE, VariantField.ID).append(QueryOptions.LIMIT, 1).append(QueryOptions.COUNT, true)); + if (result.getNumMatches() > 1) { + throw new VariantQueryException("Not unique variant identifier '" + variantStr + "'." + + " Found " + result.getNumMatches() + " results"); + } else if (result.getNumResults() == 1) { + variant = result.first(); + } else { + throw VariantQueryException.variantNotFound(variantStr); + } + } else { + throw new VariantQueryException("Variant not valid. Variant = '" + variantStr + "'. Supported values:" + + " {chr}:{start}:{end}:{ref}:{alt}, rs{id}"); + } + variant.setId(variant.toString()); + return variant; + } + + protected VariantSampleDataManager getVariantSampleDataManager() throws StorageEngineException { + return new VariantSampleDataManager(getDBAdaptor()); } public VariantQueryResult get(Query query, QueryOptions options) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/sample/VariantSampleDataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/sample/VariantSampleDataManager.java index d0e09c582e5..b575d1f63e5 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/sample/VariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/sample/VariantSampleDataManager.java @@ -40,13 +40,13 @@ public VariantSampleDataManager(VariantDBAdaptor dbAdaptor) { } - public final DataResult getSampleData(String variant, String study, QueryOptions options) { + public final DataResult getSampleData(Variant variant, String study, QueryOptions options) { options = options == null ? new QueryOptions() : options; int sampleLimit = options.getInt(SAMPLE_BATCH_SIZE, SAMPLE_BATCH_SIZE_DEFAULT); return getSampleData(variant, study, options, sampleLimit); } - public final DataResult getSampleData(String variant, String study, QueryOptions options, int sampleLimit) { + public final DataResult getSampleData(Variant variant, String study, QueryOptions options, int sampleLimit) { options = options == null ? new QueryOptions() : options; @@ -77,7 +77,7 @@ public final DataResult getSampleData(String variant, String study, Que } protected DataResult getSampleData( - String variantStr, String study, QueryOptions options, List includeSamples, Set genotypes, + Variant variant, String study, QueryOptions options, List includeSamples, Set genotypes, int sampleLimit) { options = options == null ? new QueryOptions() : options; Set includeFields = VariantField.getIncludeFields(options); @@ -98,7 +98,7 @@ protected DataResult getSampleData( int queries = 0; while (true) { queries++; - Query query = new Query(VariantQueryParam.ID.key(), variantStr) + Query query = new Query(VariantQueryParam.ID.key(), variant.toString()) .append(VariantQueryParam.STUDY.key(), study) .append(VariantQueryParam.INCLUDE_GENOTYPE.key(), options.get(VariantQueryParam.INCLUDE_GENOTYPE.key())) .append(VariantQueryParam.INCLUDE_SAMPLE_DATA.key(), options.get(VariantQueryParam.INCLUDE_SAMPLE_DATA.key())) @@ -130,7 +130,7 @@ protected DataResult getSampleData( DataResult result = dbAdaptor.get(query, variantQueryOptions); if (result.getNumResults() == 0) { - throw VariantQueryException.variantNotFound(variantStr); + throw VariantQueryException.variantNotFound(variant.toString()); } dbTime += result.getTime(); Variant partialVariant = result.first(); @@ -199,7 +199,7 @@ protected DataResult getSampleData( } } - Variant variant = new Variant(variantStr); + variant = new Variant(variant.toString()); variant.setAnnotation(annotation); StudyEntry studyEntry = new StudyEntry(study); variant.addStudyEntry(studyEntry); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantMatchers.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantMatchers.java index 7f790ffe609..11c9a6f8927 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantMatchers.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantMatchers.java @@ -139,6 +139,20 @@ public static Matcher overlaps(Variant variant) { return overlaps(new Region(variant.getChromosome(), variant.getStart(), variant.getEnd()), true); } + public static Matcher samePosition(Variant variant) { + return new TypeSafeDiagnosingMatcher() { + @Override + protected boolean matchesSafely(Variant item, Description mismatchDescription) { + return variant.sameGenomicVariant(item); + } + + @Override + public void describeTo(Description description) { + description.appendText("has same genomic region " + variant); + } + }; + } + public static Matcher overlaps(Region region) { return overlaps(region, true); } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java index b36e8fa90ad..8491d03b41e 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/DummyTestAnnotator.java @@ -4,7 +4,9 @@ import org.opencb.biodata.models.variant.avro.AdditionalAttribute; import org.opencb.biodata.models.variant.avro.ConsequenceType; import org.opencb.biodata.models.variant.avro.VariantAnnotation; +import org.opencb.biodata.models.variant.avro.Xref; import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.utils.CryptoUtils; import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; import org.opencb.opencga.storage.core.variant.annotation.annotators.VariantAnnotator; @@ -29,6 +31,10 @@ public DummyTestAnnotator(StorageConfiguration configuration, ProjectMetadata pr fail = options.getBoolean(FAIL, false); } + static String getRs(Variant variant) { + return "rs" + variant.toString().hashCode(); + } + @Override public List annotate(List variants) throws VariantAnnotatorException { if (fail) { @@ -48,6 +54,7 @@ public List annotate(List variants) throws VariantAn ct.setExonOverlap(Collections.emptyList()); ct.setTranscriptFlags(Collections.emptyList()); a.setConsequenceTypes(Collections.singletonList(ct)); + a.setXrefs(Collections.singletonList(new Xref(getRs(v), "dbSNP"))); a.setAdditionalAttributes( Collections.singletonMap(GROUP_NAME.key(), new AdditionalAttribute(Collections.singletonMap(VARIANT_ID.key(), v.toString())))); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/VariantAnnotationManagerTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/VariantAnnotationManagerTest.java index dc2721882fa..00544a3d715 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/VariantAnnotationManagerTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/VariantAnnotationManagerTest.java @@ -4,6 +4,7 @@ import org.apache.commons.lang.StringUtils; import org.junit.Assume; import org.junit.Test; +import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantAnnotation; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; @@ -262,6 +263,10 @@ public void testQueries(VariantStorageEngine variantStorageEngine) throws Storag assertThat(annotation.getConsequenceTypes(), VariantMatchers.isEmpty()); } + for (Variant variant : variantStorageEngine) { + Variant thisVariant = variantStorageEngine.getVariant(DummyTestAnnotator.getRs(variant)); + assertThat(thisVariant, VariantMatchers.samePosition(variant)); + } // Get annotations from a deleted snapshot thrown.expectMessage("Variant Annotation snapshot \"v1\" not found!"); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java index 917b679cf1c..2f0f6143b6b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java @@ -26,7 +26,6 @@ import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.util.StopWatch; -import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantType; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; @@ -55,6 +54,7 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; +import org.opencb.opencga.storage.core.variant.adaptors.sample.VariantSampleDataManager; import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotationManager; import org.opencb.opencga.storage.core.variant.annotation.annotators.VariantAnnotator; import org.opencb.opencga.storage.core.variant.io.VariantExporter; @@ -1164,8 +1164,8 @@ public VariantStorageMetadataManager getMetadataManager() throws StorageEngineEx } @Override - public DataResult getSampleData(String variant, String study, QueryOptions options) throws StorageEngineException { - return new HBaseVariantSampleDataManager(getDBAdaptor(), getCellBaseUtils()).getSampleData(variant, study, options); + protected VariantSampleDataManager getVariantSampleDataManager() throws StorageEngineException { + return new HBaseVariantSampleDataManager(getDBAdaptor()); } @Override diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index 588833cfb6e..a96c57e9a45 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -15,7 +15,6 @@ import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; -import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; @@ -26,8 +25,8 @@ import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.PhoenixHelper; -import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory; +import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; import org.opencb.opencga.storage.hadoop.variant.converters.HBaseVariantConverterConfiguration; import org.opencb.opencga.storage.hadoop.variant.converters.VariantRow; import org.opencb.opencga.storage.hadoop.variant.converters.annotation.HBaseToVariantAnnotationConverter; @@ -45,31 +44,20 @@ public class HBaseVariantSampleDataManager extends VariantSampleDataManager { private final VariantHadoopDBAdaptor dbAdaptor; private final VariantStorageMetadataManager metadataManager; - private final CellBaseUtils cellBaseUtils; - - public HBaseVariantSampleDataManager(VariantHadoopDBAdaptor dbAdaptor, CellBaseUtils cellBaseUtils) { + public HBaseVariantSampleDataManager(VariantHadoopDBAdaptor dbAdaptor) { super(dbAdaptor); this.dbAdaptor = dbAdaptor; metadataManager = dbAdaptor.getMetadataManager(); - this.cellBaseUtils = cellBaseUtils; } @Override - protected DataResult getSampleData(String variantStr, String study, QueryOptions options, + protected DataResult getSampleData(Variant variant, String study, QueryOptions options, List includeSamples, Set genotypes, int sampleLimit) { StopWatch stopWatch = StopWatch.createStarted(); Set includeFields = VariantField.getIncludeFields(options); - final Variant variant; - if (VariantQueryUtils.isVariantId(variantStr)) { - variant = new Variant(variantStr); - } else { - variant = cellBaseUtils.getVariant(variantStr); - } - variant.setId(variant.toString()); - int studyId = metadataManager.getStudyId(study); boolean includeNoneSamples = VariantQueryUtils.isNoneOrEmpty(includeSamples); @@ -172,7 +160,7 @@ protected DataResult getSampleData(String variantStr, String study, Que Result result = table.get(get); if (result == null || result.isEmpty()) { - throw VariantQueryException.variantNotFound(variantStr); + throw VariantQueryException.variantNotFound(variant.toString()); } // Walk row VariantRow.walker(result) From 86f68e660014cda5f0c324462a0dfd37c3bd0040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 12 Apr 2024 15:05:42 +0100 Subject: [PATCH 257/354] storage: Fix VariantQueryParam type. #TASK-5878 --- .../storage/core/variant/adaptors/VariantQueryParam.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java index c10fd5def09..c801f4448ff 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryParam.java @@ -121,7 +121,7 @@ public final class VariantQueryParam implements QueryParam { public static final String INCLUDE_SAMPLE_ID_DESCR = "Include sampleId on each result"; - public static final VariantQueryParam INCLUDE_SAMPLE_ID = new VariantQueryParam("includeSampleId", TEXT_ARRAY, INCLUDE_SAMPLE_ID_DESCR); + public static final VariantQueryParam INCLUDE_SAMPLE_ID = new VariantQueryParam("includeSampleId", BOOLEAN, INCLUDE_SAMPLE_ID_DESCR); public static final String SAMPLE_METADATA_DESCR = "Return the samples metadata group by study. Sample names will appear in the same order as their corresponding genotypes."; From 8a9dcc51bf652d135687c986bbf99c4c394a573d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 16 Apr 2024 14:37:55 +0100 Subject: [PATCH 258/354] storage: Require ParsedVariantQuery for creating VariantQueryResults. #TASK-5876 --- .../ClinicalInterpretationManager.java | 2 +- .../ExomiserInterpretationAnalysis.java | 2 +- ...TieringInterpretationAnalysisExecutor.java | 2 +- .../ZettaInterpretationAnalysisExecutor.java | 3 +- .../manager/VariantStorageManager.java | 16 +-- ...ationalSignatureLocalAnalysisExecutor.java | 2 +- .../app/cli/main/io/VcfOutputWriter.java | 2 +- .../core/variant/VariantStorageEngine.java | 28 ++-- .../variant/adaptors/VariantDBAdaptor.java | 36 ++--- .../core/variant/adaptors/VariantQuery.java | 4 + .../iterators/LimitVariantDBIterator.java | 18 ++- .../adaptors/iterators/VariantDBIterator.java | 33 +++-- .../variant/query/ParsedVariantQuery.java | 126 +++++++++++++++++- .../variant/query/VariantQueryParser.java | 24 +++- .../variant/query}/VariantQueryResult.java | 110 ++++++++++----- .../core/variant/query/VariantQueryUtils.java | 38 +----- ...AbstractTwoPhasedVariantQueryExecutor.java | 2 +- .../BreakendVariantQueryExecutor.java | 83 +++++------- ...hromDensityVariantAggregationExecutor.java | 4 +- .../CompoundHeterozygousQueryExecutor.java | 49 ++++--- .../DBAdaptorVariantQueryExecutor.java | 15 +-- .../executors/NoOpVariantQueryExecutor.java | 9 +- .../executors/VariantAggregationExecutor.java | 2 +- .../query/executors/VariantQueryExecutor.java | 33 ++--- .../query/filters/VariantFilterBuilder.java | 81 +++++------ .../projection/VariantQueryProjection.java | 14 ++ .../VariantQueryProjectionParser.java | 12 +- ...amplesSearchIndexVariantQueryExecutor.java | 23 +--- ...SearchIndexVariantAggregationExecutor.java | 2 +- .../SearchIndexVariantQueryExecutor.java | 40 +++--- .../search/solr/VariantSearchManager.java | 18 +-- .../variant/VariantStorageEngineBNDTest.java | 30 +++-- .../VariantStorageSearchIntersectTest.java | 10 +- ...ultiFileSpecificSamplesCollectionTest.java | 11 +- .../VariantDBAdaptorMultiFileTest.java | 2 +- .../adaptors/VariantDBAdaptorTest.java | 12 +- .../VariantQueryUsingSearchIndexTest.java | 2 +- .../variant/dummy/DummyVariantDBAdaptor.java | 13 +- .../variant/query/VariantQueryParserTest.java | 17 ++- .../search/SearchIndexSamplesTest.java | 3 +- .../search/VariantSearchIndexTest.java | 2 +- .../variant/search/VariantSearchTest.java | 10 +- .../variant/HadoopVariantQueryParser.java | 36 +++++ .../variant/HadoopVariantStorageEngine.java | 67 +++++----- ...seColumnIntersectVariantQueryExecutor.java | 16 +-- .../adaptors/VariantHadoopDBAdaptor.java | 38 +++--- .../phoenix/VariantSqlQueryParser.java | 3 +- ...ndexCompoundHeterozygousQueryExecutor.java | 2 +- ...ampleIndexMendelianErrorQueryExecutor.java | 5 +- .../SampleIndexOnlyVariantQueryExecutor.java | 38 ++---- ...SampleIndexVariantAggregationExecutor.java | 4 +- .../SampleIndexVariantQueryExecutor.java | 38 +++--- .../variant/index/query/SampleIndexQuery.java | 11 +- .../index/query/SingleSampleIndexQuery.java | 3 +- .../index/sample/SampleIndexQueryParser.java | 2 +- .../variant/io/VariantExporterDriver.java | 3 +- .../variant/mr/VariantMapReduceUtil.java | 6 +- .../HadoopVariantStorageEngineSVTest.java | 3 +- .../HadoopVariantDBAdaptorMultiFileTest.java | 3 +- .../HadoopVariantDBAdaptorNativeTest.java | 2 +- .../hadoop/variant/gaps/FillGapsTest.java | 2 +- .../variant/index/family/FamilyIndexTest.java | 2 +- .../sample/SampleIndexDBAdaptorTest.java | 2 +- .../SampleIndexDuplicatedVariantsTest.java | 8 +- .../sample/SampleIndexEntryFilterTest.java | 2 +- .../sample/SampleIndexQueryParserTest.java | 4 +- .../variant/index/sample/SampleIndexTest.java | 32 ++--- .../server/rest/VariantRestWebService.java | 2 +- 68 files changed, 717 insertions(+), 562 deletions(-) rename {opencga-core/src/main/java/org/opencb/opencga/core/response => opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query}/VariantQueryResult.java (61%) create mode 100644 opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java index 3ca18fe0eb9..f240d877fc5 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationManager.java @@ -61,7 +61,7 @@ import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.user.User; import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StorageEngineFactory; import org.opencb.opencga.storage.core.clinical.ClinicalVariantEngine; import org.opencb.opencga.storage.core.clinical.ClinicalVariantException; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java index 39fa4fd581c..fc82cdc73fd 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/exomiser/ExomiserInterpretationAnalysis.java @@ -44,7 +44,7 @@ import org.opencb.opencga.core.models.common.Enums; import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.tools.annotations.Tool; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/tiering/CancerTieringInterpretationAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/tiering/CancerTieringInterpretationAnalysisExecutor.java index ce89757143a..ea8dc7c3c89 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/tiering/CancerTieringInterpretationAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/tiering/CancerTieringInterpretationAnalysisExecutor.java @@ -41,7 +41,7 @@ import org.opencb.opencga.core.models.individual.Individual; import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.tools.OpenCgaToolExecutor; import org.opencb.opencga.core.tools.annotations.ToolExecutor; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/zetta/ZettaInterpretationAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/zetta/ZettaInterpretationAnalysisExecutor.java index c45f0b484a9..cbf7e8211d2 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/zetta/ZettaInterpretationAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/clinical/zetta/ZettaInterpretationAnalysisExecutor.java @@ -28,7 +28,7 @@ import org.opencb.opencga.analysis.clinical.ClinicalUtils; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.core.exceptions.ToolException; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.tools.OpenCgaToolExecutor; import org.opencb.opencga.core.tools.annotations.ToolExecutor; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; @@ -40,7 +40,6 @@ import java.util.Map; import static org.opencb.opencga.analysis.clinical.InterpretationAnalysis.PRIMARY_FINDINGS_FILENAME; -import static org.opencb.opencga.analysis.clinical.InterpretationAnalysis.SECONDARY_FINDINGS_FILENAME; import static org.opencb.opencga.analysis.variant.manager.VariantCatalogQueryUtils.FAMILY_SEGREGATION; @ToolExecutor(id = "opencga-local", diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java index bf0db6f34eb..344160872bf 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/VariantStorageManager.java @@ -70,7 +70,7 @@ import org.opencb.opencga.core.models.study.StudyPermissions; import org.opencb.opencga.core.models.variant.VariantPruneParams; import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.tools.ToolParams; import org.opencb.opencga.storage.core.StorageEngineFactory; import org.opencb.opencga.storage.core.StoragePipelineResult; @@ -630,6 +630,7 @@ public VariantQueryResult get(Query inputQuery, QueryOptions queryOptio @SuppressWarnings("unchecked") public VariantQueryResult get(Query query, QueryOptions queryOptions, String token, Class clazz) throws CatalogException, IOException, StorageEngineException { + VariantQueryResult result = get(query, queryOptions, token); List variants; if (clazz == Variant.class) { @@ -643,16 +644,7 @@ public VariantQueryResult get(Query query, QueryOptions queryOptions, Str } else { throw new IllegalArgumentException("Unknown variant format " + clazz); } - return new VariantQueryResult<>( - result.getTime(), - result.getNumResults(), - result.getNumMatches(), - result.getEvents(), - variants, - result.getSamples(), - result.getSource(), - result.getApproximateCount(), - result.getApproximateCountSamplingSize(), null); + return new VariantQueryResult<>(result, variants); } @@ -883,7 +875,7 @@ public DataResult getSampleData(String variant, String study, QueryOpti VariantQueryResult result = new VariantQueryResult<>( ((int) stopWatch.getTime(TimeUnit.MILLISECONDS)), - 1, 1, new ArrayList<>(), Collections.singletonList(variantResult), null, null) + 1, 1, new ArrayList<>(), Collections.singletonList(variantResult), engine.getStorageEngineId()) .setNumSamples(sampleEntries.size()); if (exactNumSamples) { result.setApproximateCount(false); diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java index 042784b844a..5be8325e066 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/mutationalSignature/MutationalSignatureLocalAnalysisExecutor.java @@ -43,7 +43,7 @@ import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.variant.MutationalSignatureAnalysisParams; import org.opencb.opencga.core.response.OpenCGAResult; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.tools.annotations.ToolExecutor; import org.opencb.opencga.core.tools.variant.MutationalSignatureAnalysisExecutor; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/io/VcfOutputWriter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/io/VcfOutputWriter.java index 6093c975a32..0c398dd2ef6 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/io/VcfOutputWriter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/io/VcfOutputWriter.java @@ -9,7 +9,7 @@ import org.opencb.biodata.models.variant.metadata.VariantStudyMetadata; import org.opencb.biodata.models.variant.protobuf.VariantProto; import org.opencb.opencga.core.response.RestResponse; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.io.VcfDataWriter; import java.io.PrintStream; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index a3ab7e539b5..c518313d773 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -31,7 +31,7 @@ import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.core.models.operations.variant.VariantAggregateFamilyParams; import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StorageEngine; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; @@ -1205,8 +1205,8 @@ public VariantQueryResult get(Query query, QueryOptions options) { } addDefaultLimit(options, getOptions()); addDefaultSampleLimit(query, getOptions()); - query = preProcessQuery(query, options); - return getVariantQueryExecutor(query, options).get(query, options); + ParsedVariantQuery variantQuery = parseQuery(query, options); + return getVariantQueryExecutor(variantQuery).get(variantQuery); } @Override @@ -1223,8 +1223,8 @@ public MultiVariantDBIterator iterator(Iterator variants, Query query, QueryO public VariantDBIterator iterator(Query query, QueryOptions options) { query = VariantQueryUtils.copy(query); options = VariantQueryUtils.copy(options); - query = preProcessQuery(query, options); - return getVariantQueryExecutor(query, options).iterator(query, options); + ParsedVariantQuery variantQuery = parseQuery(query, options); + return getVariantQueryExecutor(variantQuery).iterator(variantQuery); } public final List getVariantQueryExecutors() throws StorageEngineException { @@ -1246,7 +1246,7 @@ protected List initVariantQueryExecutors() throws StorageE executors.add(new CompoundHeterozygousQueryExecutor( getMetadataManager(), getStorageEngineId(), getOptions(), this)); executors.add(new BreakendVariantQueryExecutor( - getMetadataManager(), getStorageEngineId(), getOptions(), new DBAdaptorVariantQueryExecutor( + getStorageEngineId(), getOptions(), new DBAdaptorVariantQueryExecutor( getDBAdaptor(), getStorageEngineId(), getOptions()), getDBAdaptor())); executors.add(new SamplesSearchIndexVariantQueryExecutor( getDBAdaptor(), getVariantSearchManager(), getStorageEngineId(), dbName, configuration, getOptions())); @@ -1265,12 +1265,22 @@ protected List initVariantQueryExecutors() throws StorageE * @return VariantQueryExecutor to use */ public VariantQueryExecutor getVariantQueryExecutor(Query query, QueryOptions options) { + return getVariantQueryExecutor(parseQuery(query, options)); + } + + /** + * Determine which {@link VariantQueryExecutor} should be used to execute the given query. + * + * @param variantQuery Parsed variant query + * @return VariantQueryExecutor to use + */ + public VariantQueryExecutor getVariantQueryExecutor(ParsedVariantQuery variantQuery) { try { for (VariantQueryExecutor executor : getVariantQueryExecutors()) { - if (executor.canUseThisExecutor(query, options)) { + if (executor.canUseThisExecutor(variantQuery.getQuery(), variantQuery.getInputOptions())) { logger.info("Using VariantQueryExecutor : " + executor.getClass().getName()); - logger.info(" Query : " + VariantQueryUtils.printQuery(query)); - logger.info(" Options : " + options.toJson()); + logger.info(" Query : " + VariantQueryUtils.printQuery(variantQuery.getInputQuery())); + logger.info(" Options : " + variantQuery.getInputOptions().toJson()); return executor; } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptor.java index c2ee42c9b00..e54efca912a 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptor.java @@ -23,12 +23,12 @@ import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; import org.opencb.opencga.storage.core.variant.stats.VariantStatsWrapper; @@ -37,8 +37,6 @@ import java.util.List; import java.util.Map; -import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.addSamplesMetadataIfRequested; - /** * @author Ignacio Medina * @author Jacobo Coll @@ -46,21 +44,6 @@ */ public interface VariantDBAdaptor extends VariantIterable, AutoCloseable { - /** - * This method inserts Variants into the given Study. If the Study already exists then it just adds the new Sample - * genotypes, also new variants are inserted. If it is a new Study then Sample genotypes are added to the new Study. - * - * @param variants List of variants in OpenCB data model to be inserted - * @param studyName Name or alias of the study - * @param options Query modifiers, accepted values are: include, exclude, limit, skip, sort and count - * @return A DataResult with the number of inserted variants - */ - @Deprecated - default DataResult insert(List variants, String studyName, QueryOptions options) { - throw new UnsupportedOperationException(); - } - - /** /** * Fetch all variants resulting of executing the query in the database. Returned fields are taken from * the 'include' and 'exclude' fields at options. @@ -71,26 +54,29 @@ default DataResult insert(List variants, String studyName, QueryOptions * @return A DataResult with the result of the query */ default VariantQueryResult get(Iterator variants, Query query, QueryOptions options) { - DataResult queryResult = iterator(variants, query, options).toDataResult(); - return addSamplesMetadataIfRequested(queryResult, query, options, getMetadataManager()); + ParsedVariantQuery variantQuery = new VariantQueryParser(null, getMetadataManager()).parseQuery(query, options, true); + try (VariantDBIterator iterator = iterator(variants, query, options)) { + return iterator.toDataResult(variantQuery); + } catch (Exception e) { + throw VariantQueryException.internalException(e); + } } @Deprecated default VariantDBIterator iterator(Query query, QueryOptions options) { - return iterator(new VariantQueryParser(null, getMetadataManager()).parseQuery(query, options, true), options); + return iterator(new VariantQueryParser(null, getMetadataManager()).parseQuery(query, options, true)); } - VariantDBIterator iterator(ParsedVariantQuery query, QueryOptions options); + VariantDBIterator iterator(ParsedVariantQuery query); /** * Fetch all variants resulting of executing the query in the database. Returned fields are taken from * the 'include' and 'exclude' fields at options. * * @param query Query to be executed in the database to filter variants - * @param options Query modifiers, accepted values are: include, exclude, limit, skip, sort and count * @return A DataResult with the result of the query */ - VariantQueryResult get(ParsedVariantQuery query, QueryOptions options); + VariantQueryResult get(ParsedVariantQuery query); /** * Fetch all variants resulting of executing the query in the database. Returned fields are taken from @@ -102,7 +88,7 @@ default VariantDBIterator iterator(Query query, QueryOptions options) { */ @Deprecated default VariantQueryResult get(Query query, QueryOptions options) { - return get(new VariantQueryParser(null, getMetadataManager()).parseQuery(query, options, true), options); + return get(new VariantQueryParser(null, getMetadataManager()).parseQuery(query, options, true)); } /** diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java index 65c2bda05e6..59f439897a5 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java @@ -50,6 +50,10 @@ public VariantQuery region(String value) { put(VariantQueryParam.REGION.key(), value); return this; } + public VariantQuery region(String... value) { + put(VariantQueryParam.REGION.key(), Arrays.asList(value)); + return this; + } public VariantQuery region(Region... value) { put(VariantQueryParam.REGION.key(), Arrays.asList(value)); return this; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/LimitVariantDBIterator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/LimitVariantDBIterator.java index 3f69fe91924..07ece2a578d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/LimitVariantDBIterator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/LimitVariantDBIterator.java @@ -1,16 +1,32 @@ package org.opencb.opencga.storage.core.variant.adaptors.iterators; +import org.opencb.biodata.models.variant.Variant; + +import java.util.NoSuchElementException; + public class LimitVariantDBIterator extends DelegatedVariantDBIterator { private final int limit; + private int count; LimitVariantDBIterator(VariantDBIterator delegated, int limit) { super(delegated); this.limit = limit; + this.count = 0; } @Override public boolean hasNext() { - return getCount() < limit && super.hasNext(); + return count < limit && super.hasNext(); + } + + @Override + public Variant next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } else { + ++this.count; + return super.next(); + } } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/VariantDBIterator.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/VariantDBIterator.java index eae841fc766..f070c4c7bb1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/VariantDBIterator.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/iterators/VariantDBIterator.java @@ -16,14 +16,14 @@ package org.opencb.opencga.storage.core.variant.adaptors.iterators; -import com.google.common.collect.Iterators; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantAvro; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.utils.iterators.CloseableIterator; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -131,21 +131,34 @@ public final void forEachRemaining(Consumer action) { } } - public final DataResult toDataResult() { + + // TODO: The VariantDBIterator should be able to return the samples in the result + // This class should contain a ParsedVariantQuery +// public final VariantQueryResult toVariantQueryResult() { +// } + + public final VariantQueryResult toDataResult(ParsedVariantQuery variantQuery) { List result = new ArrayList<>(); this.forEachRemaining(result::add); int numResults = result.size(); int numTotalResults = -1; // Unknown numTotalResults - return new DataResult<>((int) getTimeFetching(TimeUnit.MILLISECONDS), Collections.emptyList(), numResults, result, numTotalResults); + DataResult dataResult = new DataResult<>((int) + getTimeFetching(TimeUnit.MILLISECONDS), + Collections.emptyList(), + numResults, + result, + numTotalResults); + return new VariantQueryResult<>(dataResult, variantQuery); } - public final VariantQueryResult toDataResult(Map> samples) { - return new VariantQueryResult<>(toDataResult(), samples); + public final List toList() { + List result = new ArrayList<>(); + this.forEachRemaining(result::add); + return result; } - protected interface TimeFunction { R call() throws E; } @@ -192,7 +205,11 @@ public VariantDBIterator filter(Predicate filter) { } public VariantDBIterator localSkip(int skip) { - Iterators.advance(this, skip); + int i = 0; + while (i < skip && hasNext()) { + next(); + i++; + } return this; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java index 9c89ffb5b61..586985a8d45 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java @@ -1,17 +1,20 @@ package org.opencb.opencga.storage.core.variant.query; +import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyResourceMetadata; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import java.util.*; import java.util.stream.Collectors; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.*; import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.ID_INTERSECT; public class ParsedVariantQuery { @@ -24,7 +27,15 @@ public class ParsedVariantQuery { private VariantQueryProjection projection; private final VariantStudyQuery studyQuery; -// private VariantAnnotationQuery annotationQuery; + private Integer limit; + private int skip; + private boolean count; + private int approximateCountSamplingSize; + private List geneRegions; + private List regions; + private List> clinicalCombination; + private List clinicalCombinationList; + // private VariantAnnotationQuery annotationQuery; public ParsedVariantQuery() { @@ -46,8 +57,16 @@ public ParsedVariantQuery(ParsedVariantQuery other) { this.inputOptions = new QueryOptions(other.inputOptions); this.query = new Query(other.query); this.projection = other.projection; - this.studyQuery = other.studyQuery; + this.studyQuery = new VariantStudyQuery(other.getStudyQuery()); this.optimized = other.optimized; + this.limit = other.limit; + this.skip = other.skip; + this.count = other.count; + this.approximateCountSamplingSize = other.approximateCountSamplingSize; + this.geneRegions = new ArrayList<>(other.geneRegions); + this.regions = new ArrayList<>(other.regions); + this.clinicalCombination = new ArrayList<>(other.clinicalCombination); + this.clinicalCombinationList = new ArrayList<>(other.clinicalCombinationList); } public Query getInputQuery() { @@ -107,6 +126,24 @@ public VariantQueryXref getXrefs() { return VariantQueryParser.parseXrefs(query); } + public List getRegions() { + return regions; + } + + public ParsedVariantQuery setRegions(List regions) { + this.regions = regions; + return this; + } + + public List getGeneRegions() { + return geneRegions; + } + + public ParsedVariantQuery setGeneRegions(List geneRegions) { + this.geneRegions = geneRegions; + return this; + } + public List getConsequenceTypes() { return VariantQueryUtils.parseConsequenceTypes(query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key())); } @@ -119,6 +156,76 @@ public List getTranscriptFlags() { return query.getAsStringList(VariantQueryParam.ANNOT_TRANSCRIPT_FLAG.key()); } + public Integer getLimit() { + return limit; + } + + public int getLimitOr(int defaultValue) { + return limit == null ? defaultValue : limit; + } + + public ParsedVariantQuery setLimit(Integer limit) { + this.limit = limit; + return this; + } + + public int getSkip() { + return skip; + } + + public ParsedVariantQuery setSkip(int skip) { + this.skip = skip; + return this; + } + + public boolean getCount() { + return count; + } + + public ParsedVariantQuery setCount(boolean count) { + this.count = count; + return this; + } + + public int getApproximateCountSamplingSize() { + return approximateCountSamplingSize; + } + + public ParsedVariantQuery setApproximateCountSamplingSize(int approximateCountSamplingSize) { + this.approximateCountSamplingSize = approximateCountSamplingSize; + return this; + } + + public ParsedQuery> getPopulationFrequencyAlt() { + return VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_ALTERNATE_FREQUENCY); + } + + public ParsedQuery> getPopulationFrequencyRef() { + return VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_REFERENCE_FREQUENCY); + } + + public ParsedQuery> getPopulationFrequencyMaf() { + return VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_MINOR_ALLELE_FREQUENCY); + } + + public List> getClinicalCombinations() { + return clinicalCombination; + } + + public ParsedVariantQuery setClinicalCombination(List> clinicalCombination) { + this.clinicalCombination = clinicalCombination; + return this; + } + + public List getClinicalCombinationsList() { + return clinicalCombinationList; + } + + public ParsedVariantQuery setClinicalCombinationList(List clinicalCombinationList) { + this.clinicalCombinationList = clinicalCombinationList; + return this; + } + public static class VariantStudyQuery { private ParsedQuery studies; private ParsedQuery>> genotypes; @@ -131,6 +238,13 @@ public static class VariantStudyQuery { public VariantStudyQuery() { } + public VariantStudyQuery(VariantStudyQuery studyQuery) { + this.studies = studyQuery.studies; + this.genotypes = studyQuery.genotypes; + this.sampleDataQuery = studyQuery.sampleDataQuery; + this.defaultStudy = studyQuery.defaultStudy; + } + public ParsedQuery getStudies() { return studies; } @@ -140,6 +254,14 @@ public VariantStudyQuery setStudies(ParsedQuery studies) { return this; } + public String getStudyOrFail() { + if (studies == null || studies.size() != 1) { + throw new VariantQueryException("Require exactly one study"); + } else { + return studies.get(0); + } + } + public ParsedQuery>> getGenotypes() { return genotypes; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index 1564ad0fabf..aa07aaf3687 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -19,6 +19,7 @@ import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.metadata.models.VariantScoreMetadata; import org.opencb.opencga.storage.core.utils.CellBaseUtils; +import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; @@ -157,6 +158,13 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean } ParsedVariantQuery variantQuery = new ParsedVariantQuery(new Query(query), new QueryOptions(options)); + int limit = options.getInt(QueryOptions.LIMIT, -1); + variantQuery.setLimit(limit == -1 ? null : limit); + variantQuery.setSkip(options.getInt(QueryOptions.SKIP, 0)); + variantQuery.setCount(options.getBoolean(QueryOptions.COUNT, false)); + variantQuery.setApproximateCountSamplingSize(options.getInt( + VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), + VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.defaultValue())); if (!skipPreProcess) { query = preProcessQuery(query, options); @@ -164,6 +172,13 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean variantQuery.setQuery(query); variantQuery.setProjection(projectionParser.parseVariantQueryProjection(query, options)); + List geneRegions = Region.parseRegions(query.getString(ANNOT_GENE_REGIONS.key())); + variantQuery.setGeneRegions(geneRegions == null ? Collections.emptyList() : geneRegions); + List regions = Region.parseRegions(query.getString(REGION.key()), true); + variantQuery.setRegions(regions == null ? Collections.emptyList() : regions); + variantQuery.setClinicalCombination(VariantQueryParser.parseClinicalCombination(query, false)); + variantQuery.setClinicalCombinationList(VariantQueryParser.parseClinicalCombinationsList(query, false)); + ParsedVariantQuery.VariantStudyQuery studyQuery = variantQuery.getStudyQuery(); StudyMetadata defaultStudy = getDefaultStudy(query); @@ -685,13 +700,8 @@ protected void preProcessStudyParams(Query query, QueryOptions options) { } } if (!isValidParam(query, INCLUDE_SAMPLE) || selectVariantElements.getSamplePagination()) { - List includeSample = selectVariantElements.getSamples() - .entrySet() - .stream() - .flatMap(e -> e.getValue() - .stream() - .map(s -> metadataManager.getSampleName(e.getKey(), s))) - .collect(Collectors.toList()); + List includeSample = selectVariantElements.getSampleNames().values() + .stream().flatMap(Collection::stream).collect(Collectors.toList()); if (includeSample.isEmpty()) { query.put(INCLUDE_SAMPLE.key(), NONE); } else { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/response/VariantQueryResult.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java similarity index 61% rename from opencga-core/src/main/java/org/opencb/opencga/core/response/VariantQueryResult.java rename to opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java index c955b3ca379..79645987303 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/response/VariantQueryResult.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java @@ -14,16 +14,21 @@ * limitations under the License. */ -package org.opencb.opencga.core.response; +package org.opencb.opencga.storage.core.variant.query; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.opencga.core.response.OpenCGAResult; +import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; +import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; import java.util.List; import java.util.Map; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.SAMPLE_METADATA; + /** * Created on 07/02/17. * @@ -45,25 +50,19 @@ public class VariantQueryResult extends OpenCGAResult { private static final String APPROXIMATE_COUNT = "approximateCount"; private static final String APPROXIMATE_COUNT_SAMPLING_SIZE = "approximateCountSamplingSize"; - public VariantQueryResult() { - } - - public VariantQueryResult(long time, int numResults, long numMatches, List events, List result) { - this(time, numResults, numMatches, events, result, null, null, null, null, null); + protected VariantQueryResult() { } - public VariantQueryResult(long time, int numResults, long numMatches, List events, List result, - Map> samples, String source) { - this(time, numResults, numMatches, events, result, samples, source, null, null, null); + public VariantQueryResult(long time, int numResults, long numMatches, List events, List result, String source, + ParsedVariantQuery variantQuery) { + this(time, numResults, numMatches, events, result, source, null, null, null, variantQuery); } public VariantQueryResult(long time, int numResults, long numMatches, List events, List result, - Map> samples, String source, Boolean approximateCount, - Integer approximateCountSamplingSize, Integer numTotalSamples) { + String source, Boolean approximateCount, Integer approximateCountSamplingSize, Integer numTotalSamples, + ParsedVariantQuery variantQuery) { super((int) time, events, numResults, result, numMatches); - if (samples != null) { - setSamples(samples); - } + if (source != null) { setSource(source); } @@ -73,15 +72,15 @@ public VariantQueryResult(long time, int numResults, long numMatches, List) this, variantQuery); + } } - public VariantQueryResult(DataResult dataResult) { + private VariantQueryResult(DataResult dataResult, List results) { super(dataResult.getTime(), dataResult.getEvents(), dataResult.getNumMatches(), @@ -90,26 +89,65 @@ public VariantQueryResult(DataResult dataResult) { dataResult.getNumDeleted(), dataResult.getNumErrors(), dataResult.getAttributes()); - setResults(dataResult.getResults()); - setNumResults(dataResult.getNumResults()); + setResults(results); + setNumResults(results.size()); } - public VariantQueryResult(DataResult queryResult, Map> samples) { - this(queryResult, samples, null); + public VariantQueryResult(DataResult dataResult, ParsedVariantQuery variantQuery) { + this(dataResult, dataResult.getResults()); + if (variantQuery != null) { + addSamplesMetadataIfRequested((VariantQueryResult) this, variantQuery); + } } - public VariantQueryResult(DataResult dataResult, Map> samples, String source) { - this(dataResult); - setSamples(samples); - if (getNumMatches() >= 0) { - setApproximateCount(false); - } - if (samples != null) { - this.setNumSamples(samples.values().stream().mapToInt(List::size).sum()); - this.setNumTotalSamples(getNumSamples()); - } - if (source != null) { - this.setSource(source); + public VariantQueryResult(VariantQueryResult dataResult, List results) { + this((DataResult) dataResult, results); + } + + public VariantQueryResult(DataResult dataResult, String source, ParsedVariantQuery variantQuery) { + this(dataResult, variantQuery); + setSource(source); + } + + /* + * @deprecated Missing ParsedVariantQuery. + * Use {@link #VariantQueryResult(long, int, long, List, List, String, Boolean, Integer, Integer, ParsedVariantQuery)} + */ + @Deprecated + public VariantQueryResult(long time, int numResults, long numMatches, List events, List result, String source) { + this(time, numResults, numMatches, events, result, source, null, null, null, (ParsedVariantQuery) null); + } + + /* + * @deprecated Missing ParsedVariantQuery. + * Use {@link #VariantQueryResult(DataResult, ParsedVariantQuery)} + */ + @Deprecated + public VariantQueryResult(DataResult dataResult) { + this(dataResult, (ParsedVariantQuery) null); + } + + private static VariantQueryResult addSamplesMetadataIfRequested(VariantQueryResult result, ParsedVariantQuery query) { + VariantQueryProjection projection = query.getProjection(); + + int numTotalSamples = projection.getNumTotalSamples(); + int numSamples = projection.getNumSamples(); + if (query.getInputQuery().getBoolean(SAMPLE_METADATA.key(), false)) { + Map> samplesMetadata = query.getProjection().getSampleNames(); + if (numTotalSamples < 0 && numSamples < 0) { + numTotalSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); + VariantQueryProjectionParser.skipAndLimitSamples(query.getQuery(), samplesMetadata); + numSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); + } + return result.setNumSamples(numSamples) + .setNumTotalSamples(numTotalSamples) + .setSamples(samplesMetadata); + } else { + if (numTotalSamples >= 0 && numSamples >= 0) { + return result.setNumSamples(numSamples) + .setNumTotalSamples(numTotalSamples); + } + return result; } } @@ -173,7 +211,9 @@ public VariantQueryResult setApproximateCount(Boolean approximateCount) { } public Integer getApproximateCountSamplingSize() { - return getAttributes().containsKey(APPROXIMATE_COUNT_SAMPLING_SIZE) ? getAttributes().getInt(APPROXIMATE_COUNT_SAMPLING_SIZE) : null; + return getAttributes().containsKey(APPROXIMATE_COUNT_SAMPLING_SIZE) + ? getAttributes().getInt(APPROXIMATE_COUNT_SAMPLING_SIZE) + : null; } public VariantQueryResult setApproximateCountSamplingSize(Integer approximateCountSamplingSize) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index 114379c77a9..b4e2e7819d3 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -28,12 +28,13 @@ import org.opencb.biodata.models.variant.VariantBuilder; import org.opencb.biodata.models.variant.annotation.ConsequenceTypeMappings; import org.opencb.biodata.models.variant.avro.*; -import org.opencb.commons.datastore.core.*; +import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.datastore.core.Query; +import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.commons.datastore.core.QueryParam; import org.opencb.commons.utils.ListUtils; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.models.variant.VariantAnnotationConstants; -import org.opencb.opencga.core.response.VariantQueryResult; -import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; @@ -583,37 +584,6 @@ public static boolean isOutputMultiStudy(Query query, QueryOptions options, Coll } } - public static VariantQueryResult addSamplesMetadataIfRequested(DataResult result, Query query, QueryOptions options, - VariantStorageMetadataManager variantStorageMetadataManager) { - return addSamplesMetadataIfRequested(new VariantQueryResult<>(result, null), query, options, variantStorageMetadataManager); - } - - public static VariantQueryResult addSamplesMetadataIfRequested(VariantQueryResult result, Query query, QueryOptions options, - VariantStorageMetadataManager variantStorageMetadataManager) { - if (query.getBoolean(SAMPLE_METADATA.key(), false)) { - int numTotalSamples = query.getInt(NUM_TOTAL_SAMPLES.key(), -1); - int numSamples = query.getInt(NUM_SAMPLES.key(), -1); - Map> samplesMetadata = VariantQueryProjectionParser - .getIncludeSampleNames(query, options, variantStorageMetadataManager); - if (numTotalSamples < 0 && numSamples < 0) { - numTotalSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); - VariantQueryProjectionParser.skipAndLimitSamples(query, samplesMetadata); - numSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); - } - return result.setNumSamples(numSamples) - .setNumTotalSamples(numTotalSamples) - .setSamples(samplesMetadata); - } else { - int numTotalSamples = query.getInt(NUM_TOTAL_SAMPLES.key(), -1); - int numSamples = query.getInt(NUM_SAMPLES.key(), -1); - if (numTotalSamples >= 0 && numSamples >= 0) { - return result.setNumSamples(numSamples) - .setNumTotalSamples(numTotalSamples); - } - return result; - } - } - /** * Gets a list of elements sample data keys to return. * diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java index a49fe60c3e4..4a815959a84 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/AbstractTwoPhasedVariantQueryExecutor.java @@ -7,7 +7,7 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.common.TimeUtils; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIteratorWithCounts; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java index 0e8c9ead98c..6eb237ea4b3 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java @@ -1,6 +1,5 @@ package org.opencb.opencga.storage.core.variant.query.executors; -import com.google.common.collect.Iterators; import org.apache.commons.lang3.StringUtils; import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.StudyEntry; @@ -13,14 +12,13 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.datastore.core.QueryParam; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; -import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; -import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.filters.VariantFilterBuilder; @@ -33,12 +31,12 @@ public class BreakendVariantQueryExecutor extends VariantQueryExecutor { private final VariantDBAdaptor variantDBAdaptor; private final VariantFilterBuilder filterBuilder; - public BreakendVariantQueryExecutor(VariantStorageMetadataManager metadataManager, String storageEngineId, ObjectMap options, + public BreakendVariantQueryExecutor(String storageEngineId, ObjectMap options, VariantQueryExecutor delegatedQueryExecutor, VariantDBAdaptor variantDBAdaptor) { - super(metadataManager, storageEngineId, options); + super(variantDBAdaptor.getMetadataManager(), storageEngineId, options); this.delegatedQueryExecutor = delegatedQueryExecutor; this.variantDBAdaptor = variantDBAdaptor; - filterBuilder = new VariantFilterBuilder(metadataManager); + filterBuilder = new VariantFilterBuilder(); } @Override @@ -48,35 +46,39 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) throws Stor } @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean getIterator) throws StorageEngineException { - int limit = options.getInt(QueryOptions.LIMIT); - int skip = options.getInt(QueryOptions.SKIP); - boolean count = options.getBoolean(QueryOptions.COUNT); - int approximateCountSamplingSize = options.getInt( - VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), - VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.defaultValue()); - Query baseQuery = baseQuery(query); - Predicate variantLocalFilter = filterBuilder.buildFilter(query, options); - + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean getIterator) throws StorageEngineException { + int limit = variantQuery.getLimitOr(-1); + int skip = variantQuery.getSkip(); + boolean count = variantQuery.getCount() && !getIterator; + int approximateCountSamplingSize = variantQuery.getApproximateCountSamplingSize(); + Query baseQuery = baseQuery(variantQuery.getQuery()); + Predicate variantLocalFilter = filterBuilder.buildFilter(variantQuery); + + // Copy to avoid modifications to input query + ParsedVariantQuery delegatedVariantQuery = new ParsedVariantQuery(variantQuery); + QueryOptions options = new QueryOptions(variantQuery.getInputOptions()); + options.remove(QueryOptions.SKIP); + delegatedVariantQuery.setSkip(0); + if (limit >= 0) { + int tmpLimit = skip + limit * 4; + if (count && tmpLimit < approximateCountSamplingSize) { + tmpLimit = approximateCountSamplingSize; + } + options.put(QueryOptions.LIMIT, tmpLimit); + delegatedVariantQuery.setLimit(tmpLimit); + } + delegatedVariantQuery.setInputOptions(options); if (getIterator) { - VariantDBIterator iterator = delegatedQueryExecutor.iterator(query, options); + VariantDBIterator iterator = delegatedQueryExecutor.iterator(delegatedVariantQuery); iterator = iterator.mapBuffered(l -> getBreakendPairs(0, baseQuery, variantLocalFilter, l), 100); iterator = iterator.localLimitSkip(limit, skip); return iterator; } else { - // Copy to avoid modifications to input options - options = new QueryOptions(options); - options.remove(QueryOptions.SKIP); - int tmpLimit = skip + limit * 2; - if (count && tmpLimit < approximateCountSamplingSize) { - tmpLimit = approximateCountSamplingSize; - } - options.put(QueryOptions.LIMIT, tmpLimit); - VariantQueryResult queryResult = delegatedQueryExecutor.get(query, options); + VariantQueryResult queryResult = delegatedQueryExecutor.get(delegatedVariantQuery); List results = queryResult.getResults(); results = getBreakendPairs(0, baseQuery, variantLocalFilter, results); - if (queryResult.getNumMatches() < tmpLimit) { + if (queryResult.getNumMatches() < delegatedVariantQuery.getLimitOr(-1)) { // Exact count!! queryResult.setApproximateCount(false); queryResult.setNumMatches(results.size()); @@ -100,24 +102,6 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean getIte } } - - protected VariantDBIterator iterator(Query query, QueryOptions options, int batchSize) throws StorageEngineException { - - int limit = options.getInt(QueryOptions.LIMIT); - int skip = options.getInt(QueryOptions.SKIP); - Query baseQuery = baseQuery(query); - Predicate variantLocalFilter = filterBuilder.buildFilter(query, options); - - VariantDBIterator iterator = delegatedQueryExecutor.iterator(query, options); - iterator = iterator.mapBuffered(l -> getBreakendPairs(0, baseQuery, variantLocalFilter, l), batchSize); - Iterators.advance(iterator, skip); - iterator = iterator.localSkip(skip); - if (limit > 0) { - iterator = iterator.localLimit(limit); - } - return iterator; - } - private Query baseQuery(Query query) { return subQuery(query, VariantQueryParam.STUDY, @@ -143,7 +127,6 @@ private List getBreakendPairs(int samplePosition, Query baseQuery, Pred } // Copy query to avoid propagating modifications baseQuery = new Query(baseQuery); -// System.out.println("variants = " + variants); List regions = new ArrayList<>(variants.size()); for (Variant variant : variants) { BreakendMate mate = variant.getSv().getBreakend().getMate(); @@ -190,7 +173,7 @@ private List getBreakendPairs(int samplePosition, Query baseQuery, Pred return variantPairs; } - private void addPair(Predicate filter, List variantPairs, Variant variant, Variant mateVariant) { + private boolean addPair(Predicate filter, List variantPairs, Variant variant, Variant mateVariant) { // Check for duplicated pairs if (VariantDBIterator.VARIANT_COMPARATOR.compare(variant, mateVariant) > 0) { // The mate variant is "before" the main variant @@ -200,10 +183,14 @@ private void addPair(Predicate filter, List variantPairs, Vari // But first the "mate" to respect order variantPairs.add(mateVariant); variantPairs.add(variant); + return true; + } else { + return false; } } else { variantPairs.add(variant); variantPairs.add(mateVariant); + return true; } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/ChromDensityVariantAggregationExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/ChromDensityVariantAggregationExecutor.java index b7a03ceac34..9606a74a85d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/ChromDensityVariantAggregationExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/ChromDensityVariantAggregationExecutor.java @@ -8,7 +8,7 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.datastore.solr.FacetQueryParser; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantIterable; @@ -144,7 +144,7 @@ protected VariantQueryResult aggregation(Query query, QueryOptions o regionBuckets.size(), regionBuckets); return new VariantQueryResult<>((int) stopWatch.getTime(TimeUnit.MILLISECONDS), 1, numMatches, Collections.emptyList(), - Collections.singletonList(field), null, null); + Collections.singletonList(field), null); } private VariantQueryException invalidNestedField(String nestedFieldName) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java index db0815b5135..c6f4b87a5f0 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java @@ -3,21 +3,24 @@ import com.google.common.collect.Iterators; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.tools.pedigree.ModeOfInheritance; -import org.opencb.opencga.core.models.variant.VariantAnnotationConstants; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.core.models.variant.VariantAnnotationConstants; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; import org.opencb.opencga.storage.core.metadata.models.Trio; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; -import org.opencb.opencga.storage.core.variant.adaptors.*; +import org.opencb.opencga.storage.core.variant.adaptors.VariantField; +import org.opencb.opencga.storage.core.variant.adaptors.VariantIterable; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.UnionMultiVariantKeyIterator; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIteratorWithCounts; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,15 +69,11 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) throws Stor } @Override - public DataResult count(Query query) { - throw new UnsupportedOperationException(); - } - - @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) { - Trio trio = getCompHetTrio(query); - return getOrIterator(query.getString(VariantQueryParam.STUDY.key()), trio.getChild(), trio.getFather(), trio.getMother(), - query, options, iterator); + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { + Trio trio = getCompHetTrio(variantQuery.getQuery()); + String study = variantQuery.getStudyQuery().getStudyOrFail(); + return getOrIterator(study, trio.getChild(), trio.getFather(), trio.getMother(), + variantQuery, iterator); } @Override @@ -84,25 +83,25 @@ protected long primaryCount(Query query, QueryOptions options) { .append(QueryOptions.INCLUDE, VariantField.ID.fieldName()))); } - public VariantQueryResult get(String study, String proband, String father, String mother, Query query, QueryOptions options) { - return (VariantQueryResult) getOrIterator(study, proband, father, mother, query, options, false); + public VariantQueryResult get(String study, String proband, String father, String mother, ParsedVariantQuery variantQuery) { + return (VariantQueryResult) getOrIterator(study, proband, father, mother, variantQuery, false); } - public VariantDBIterator iterator(String study, String proband, String father, String mother, Query query, QueryOptions options) { - return (VariantDBIterator) getOrIterator(study, proband, father, mother, query, options, true); + public VariantDBIterator iterator(String study, String proband, String father, String mother, ParsedVariantQuery variantQuery) { + return (VariantDBIterator) getOrIterator(study, proband, father, mother, variantQuery, true); } - private Object getOrIterator(String study, String proband, String father, String mother, Query query, QueryOptions inputOptions, + private Object getOrIterator(String study, String proband, String father, String mother, ParsedVariantQuery variantQuery, boolean iterator) { // Prepare query and options - int skip = getSkip(inputOptions); - int limit = inputOptions.containsKey(QueryOptions.LIMIT) ? getLimit(inputOptions) : (Integer.MAX_VALUE - skip); - int samplingSize = getSamplingSize(inputOptions, DEFAULT_SAMPLING_SIZE, iterator); - QueryOptions options = buildQueryOptions(inputOptions); + int skip = variantQuery.getSkip(); + int limit = variantQuery.getLimit() != null ? variantQuery.getLimit() : (Integer.MAX_VALUE - skip); + int samplingSize = getSamplingSize(variantQuery.getInputOptions(), DEFAULT_SAMPLING_SIZE, iterator); + QueryOptions options = buildQueryOptions(variantQuery.getInputOptions()); // Always sort results for compound heterozygous options.put(QueryOptions.SORT, true); - query = new Query(query); + Query query = new Query(variantQuery.getQuery()); List includeSample = getAndCheckIncludeSample(query, proband, father, mother); Set biotypes; @@ -158,12 +157,12 @@ private Object getOrIterator(String study, String proband, String father, String return VariantDBIterator.wrapper(variantIterator); } else { VariantQueryResult result = VariantDBIterator.wrapper(variantIterator) - .toDataResult(Collections.singletonMap(study, includeSample)); + .toDataResult(variantQuery); if ((limit + skip) < samplingSize && compoundHeterozygous.size() < samplingSize) { result.setApproximateCount(false); result.setNumMatches(compoundHeterozygous.size()); } else { - setNumTotalResults(unfilteredIterator, result, query, inputOptions, + setNumTotalResults(unfilteredIterator, result, query, variantQuery.getInputOptions(), unfilteredIterator.getCount(), compoundHeterozygous.size()); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java index 08705ccf69e..474cbc3fa9f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java @@ -2,7 +2,9 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.*; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.exceptions.StorageEngineException; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; @@ -37,11 +39,11 @@ public DBAdaptorVariantQueryExecutor(VariantDBAdaptor dbAdaptor, String storageE } @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) throws StorageEngineException { if (iterator) { - return dbAdaptor.iterator(query, options); + return dbAdaptor.iterator(variantQuery); } else { - VariantQueryResult result = dbAdaptor.get(query, options); + VariantQueryResult result = dbAdaptor.get(variantQuery); if (result.getSource() == null || result.getSource().isEmpty()) { result.setSource(storageEngineId); } @@ -49,11 +51,6 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean iterat } } - @Override - public DataResult count(Query query) { - return dbAdaptor.count(query); - } - @Override public boolean canUseThisExecutor(Query query, QueryOptions options) { for (QueryParam unsupportedParam : UNSUPPORTED_PARAMS) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java index 57b1e64ae58..e286b4a07ce 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java @@ -1,10 +1,8 @@ package org.opencb.opencga.storage.core.variant.query.executors; -import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; @@ -126,14 +124,11 @@ private boolean checkStatsFilter(Query query, String sample, VariantQueryParam p } @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) throws StorageEngineException { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) throws StorageEngineException { if (iterator) { return VariantDBIterator.emptyIterator(); } else { - VariantQueryResult result = new VariantQueryResult<>(0, 0, 0, Collections.emptyList(), Collections.emptyList()); - result.setSource(NO_OP); - VariantQueryUtils.addSamplesMetadataIfRequested(result, query, options, metadataManager); - return result; + return new VariantQueryResult<>(0, 0, 0, Collections.emptyList(), Collections.emptyList(), NO_OP, variantQuery); } } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantAggregationExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantAggregationExecutor.java index a2c7f67d54e..8479dd683f7 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantAggregationExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantAggregationExecutor.java @@ -4,7 +4,7 @@ import org.opencb.commons.datastore.core.FacetField; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java index 8e445cc30e2..26d53e89e5c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java @@ -1,18 +1,15 @@ package org.opencb.opencga.storage.core.variant.query.executors; import org.opencb.biodata.models.variant.Variant; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; -import org.opencb.opencga.storage.core.variant.adaptors.VariantIterable; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; - -import java.util.Collections; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.QUERY_DEFAULT_TIMEOUT; import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.QUERY_MAX_TIMEOUT; @@ -22,7 +19,7 @@ * * @author Jacobo Coll <jacobo167@gmail.com> */ -public abstract class VariantQueryExecutor implements VariantIterable { +public abstract class VariantQueryExecutor { protected final VariantStorageMetadataManager metadataManager; protected final String storageEngineId; @@ -34,19 +31,17 @@ public VariantQueryExecutor(VariantStorageMetadataManager metadataManager, Strin this.options = options; } - public final VariantQueryResult get(Query query, QueryOptions options) { + public final VariantQueryResult get(ParsedVariantQuery query) { try { - return (VariantQueryResult) getOrIterator(query, options, false); + return (VariantQueryResult) getOrIterator(query, false); } catch (StorageEngineException e) { throw VariantQueryException.internalException(e); } } - @Override - public final VariantDBIterator iterator(Query query, QueryOptions options) { + public final VariantDBIterator iterator(ParsedVariantQuery variantQuery) { try { -// query = parser.preProcessQuery(query, options); - return (VariantDBIterator) getOrIterator(query, options, true); + return (VariantDBIterator) getOrIterator(variantQuery, true); } catch (StorageEngineException e) { throw VariantQueryException.internalException(e); } @@ -77,19 +72,7 @@ public static void setDefaultTimeout(QueryOptions queryOptions, ObjectMap config */ public abstract boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException; - @Deprecated - public DataResult count(Query query) { - VariantQueryResult result = get(query, new QueryOptions(QueryOptions.COUNT, true).append(QueryOptions.LIMIT, 0)); - return new DataResult<>( - result.getTime(), - result.getEvents(), - 1, - Collections.singletonList(result.getNumMatches()), - result.getNumMatches(), - result.getAttributes()); - } - - protected abstract Object getOrIterator(Query query, QueryOptions options, boolean iterator) throws StorageEngineException; + protected abstract Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) throws StorageEngineException; protected VariantStorageMetadataManager getMetadataManager() { return metadataManager; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/filters/VariantFilterBuilder.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/filters/VariantFilterBuilder.java index f8705d26eef..1f505864fd1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/filters/VariantFilterBuilder.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/filters/VariantFilterBuilder.java @@ -5,32 +5,26 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.ConsequenceType; import org.opencb.biodata.models.variant.avro.SequenceOntologyTerm; -import org.opencb.commons.datastore.core.Query; -import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; -import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; -import org.opencb.opencga.storage.core.variant.query.*; +import org.opencb.opencga.storage.core.variant.query.KeyOpValue; +import org.opencb.opencga.storage.core.variant.query.ParsedQuery; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; -import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.*; - public class VariantFilterBuilder { - private final VariantStorageMetadataManager metadataManager; - - public VariantFilterBuilder(VariantStorageMetadataManager metadataManager) { - this.metadataManager = metadataManager; + public VariantFilterBuilder() { } - public Predicate buildFilter(Query query, QueryOptions queryOptions) { + public Predicate buildFilter(ParsedVariantQuery variantQuery) { List> filters = new LinkedList<>(); - addRegionFilters(query, filters); - addAnnotationFilters(query, filters); + addRegionFilters(variantQuery, filters); + addAnnotationFilters(variantQuery, filters); if (filters.isEmpty()) { return v -> true; @@ -39,18 +33,18 @@ public Predicate buildFilter(Query query, QueryOptions queryOptions) { } } - private void addRegionFilters(Query query, List> filters) { + private void addRegionFilters(ParsedVariantQuery variantQuery, List> filters) { List> regionFilters = new LinkedList<>(); - if (VariantQueryUtils.isValidParam(query, VariantQueryParam.REGION)) { - List regions = Region.parseRegions(query.getString(REGION.key()), true); + List regions = variantQuery.getRegions(); + if (!regions.isEmpty()) { regions = VariantQueryUtils.mergeRegions(regions); for (Region region : regions) { regionFilters.add(variant -> region.contains(variant.getChromosome(), variant.getStart())); } } - ParsedVariantQuery.VariantQueryXref variantQueryXref = VariantQueryParser.parseXrefs(query); - Predicate geneFilter = getGeneFilter(query, variantQueryXref.getGenes()); + ParsedVariantQuery.VariantQueryXref variantQueryXref = variantQuery.getXrefs(); + Predicate geneFilter = getGeneFilter(variantQuery, variantQueryXref.getGenes()); if (!variantQueryXref.getIds().isEmpty()) { Set ids = new HashSet<>(variantQueryXref.getIds()); regionFilters.add(variant -> ids.contains(variant.getAnnotation().getId())); @@ -65,15 +59,14 @@ private void addRegionFilters(Query query, List> filters) { if (!regionFilters.isEmpty()) { Set bts; - if (VariantQueryUtils.isValidParam(query, VariantQueryParam.ANNOT_BIOTYPE)) { - bts = new HashSet<>(query.getAsStringList(VariantQueryParam.ANNOT_BIOTYPE.key())); + if (!variantQuery.getBiotypes().isEmpty()) { + bts = new HashSet<>(variantQuery.getBiotypes()); } else { bts = null; } Set cts; - if (VariantQueryUtils.isValidParam(query, VariantQueryParam.ANNOT_CONSEQUENCE_TYPE)) { - cts = new HashSet<>(VariantQueryUtils - .parseConsequenceTypes(query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key()))); + if (!variantQuery.getConsequenceTypes().isEmpty()) { + cts = new HashSet<>(variantQuery.getConsequenceTypes()); } else { cts = null; } @@ -99,12 +92,12 @@ private void addRegionFilters(Query query, List> filters) { } } - private Predicate getGeneFilter(Query query, List genes) { + private Predicate getGeneFilter(ParsedVariantQuery variantQuery, List genes) { if (genes.isEmpty()) { return null; } - List geneRegions = Region.parseRegions(query.getString(VariantQueryUtils.ANNOT_GENE_REGIONS.key())); + List geneRegions = variantQuery.getGeneRegions(); Predicate geneRegionFilter; if (CollectionUtils.isEmpty(geneRegions)) { geneRegionFilter = null; @@ -115,15 +108,14 @@ private Predicate getGeneFilter(Query query, List genes) { Predicate geneFilter; Set bts; - if (VariantQueryUtils.isValidParam(query, VariantQueryParam.ANNOT_BIOTYPE)) { - bts = new HashSet<>(query.getAsStringList(VariantQueryParam.ANNOT_BIOTYPE.key())); + if (!variantQuery.getBiotypes().isEmpty()) { + bts = new HashSet<>(variantQuery.getBiotypes()); } else { bts = null; } Set cts; - if (VariantQueryUtils.isValidParam(query, VariantQueryParam.ANNOT_CONSEQUENCE_TYPE)) { - cts = new HashSet<>(VariantQueryUtils - .parseConsequenceTypes(query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key()))); + if (!variantQuery.getConsequenceTypes().isEmpty()) { + cts = new HashSet<>(variantQuery.getConsequenceTypes()); } else { cts = null; } @@ -151,31 +143,30 @@ private Predicate getGeneFilter(Query query, List genes) { } } - private void addAnnotationFilters(Query query, List> filters) { -// ParsedVariantQuery.VariantQueryXref variantQueryXref = VariantQueryParser.parseXrefs(query); - addClinicalFilters(query, filters); + private void addAnnotationFilters(ParsedVariantQuery variantQuery, List> filters) { +// ParsedVariantQuery.VariantQueryXref variantQueryXref = variantQuery.getXrefs(); + addClinicalFilters(variantQuery, filters); - if (VariantQueryUtils.isValidParam(query, ANNOT_POPULATION_ALTERNATE_FREQUENCY)) { - ParsedQuery> freqQuery - = VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_ALTERNATE_FREQUENCY); + ParsedQuery> freqQuery = variantQuery.getPopulationFrequencyAlt(); + if (!freqQuery.isEmpty()) { List freqFilters = freqQuery.mapValues(popFreq -> { String[] split = popFreq.getKey().split(VariantQueryUtils.STUDY_POP_FREQ_SEPARATOR); return new PopulationFrequencyVariantFilter.AltFreqFilter(split[0], split[1], popFreq.getOp(), popFreq.getValue()); }); filters.add(new PopulationFrequencyVariantFilter(freqQuery.getOperation(), freqFilters)); } - if (VariantQueryUtils.isValidParam(query, ANNOT_POPULATION_REFERENCE_FREQUENCY)) { - ParsedQuery> freqQuery - = VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_REFERENCE_FREQUENCY); + + freqQuery = variantQuery.getPopulationFrequencyRef(); + if (!freqQuery.isEmpty()) { List freqFilters = freqQuery.mapValues(popFreq -> { String[] split = popFreq.getKey().split(VariantQueryUtils.STUDY_POP_FREQ_SEPARATOR); return new PopulationFrequencyVariantFilter.RefFreqFilter(split[0], split[1], popFreq.getOp(), popFreq.getValue()); }); filters.add(new PopulationFrequencyVariantFilter(freqQuery.getOperation(), freqFilters)); } - if (VariantQueryUtils.isValidParam(query, ANNOT_POPULATION_MINOR_ALLELE_FREQUENCY)) { - ParsedQuery> freqQuery - = VariantQueryParser.parseFreqFilter(query, ANNOT_POPULATION_MINOR_ALLELE_FREQUENCY); + + freqQuery = variantQuery.getPopulationFrequencyMaf(); + if (!freqQuery.isEmpty()) { List freqFilters = freqQuery.mapValues(popFreq -> { String[] split = popFreq.getKey().split(VariantQueryUtils.STUDY_POP_FREQ_SEPARATOR); return new PopulationFrequencyVariantFilter.MafFreqFilter(split[0], split[1], popFreq.getOp(), popFreq.getValue()); @@ -185,8 +176,8 @@ private void addAnnotationFilters(Query query, List> filters) } - private void addClinicalFilters(Query query, List> filters) { - List> clinicalCombinations = VariantQueryParser.parseClinicalCombination(query) + private void addClinicalFilters(ParsedVariantQuery variantQuery, List> filters) { + List> clinicalCombinations = variantQuery.getClinicalCombinations() .stream().map(HashSet::new).collect(Collectors.toList()); if (clinicalCombinations.isEmpty()) { return; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java index 717967cc038..16b974ee57e 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java @@ -77,6 +77,10 @@ public Map> getSamples() { return studies.values().stream().collect(Collectors.toMap(s -> s.studyMetadata.getId(), s -> s.samples)); } + public Map> getSampleNames() { + return studies.values().stream().collect(Collectors.toMap(s -> s.studyMetadata.getName(), s -> s.sampleNames)); + } + @Deprecated public Map> getFiles() { return studies.values().stream().collect(Collectors.toMap(s -> s.studyMetadata.getId(), s -> s.files)); @@ -85,6 +89,7 @@ public Map> getFiles() { public static class StudyVariantQueryProjection { private StudyMetadata studyMetadata; private List samples = Collections.emptyList(); + private List sampleNames = Collections.emptyList(); private Map> multiFileSampleFiles = Collections.emptyMap(); private Set multiFileSamples = Collections.emptySet(); private List files = Collections.emptyList(); @@ -129,6 +134,15 @@ public StudyVariantQueryProjection setSamples(List samples) { return this; } + public List getSampleNames() { + return sampleNames; + } + + public StudyVariantQueryProjection setSampleNames(List sampleNames) { + this.sampleNames = sampleNames; + return this; + } + public Map> getMultiFileSampleFiles() { return multiFileSampleFiles; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 0860aa87a4d..4ec7f2ec158 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -69,7 +69,13 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti Map> sampleIdsMap = getIncludeSampleIds(query, options, includeStudies, metadataManager); for (VariantQueryProjection.StudyVariantQueryProjection study : studies.values()) { - study.setSamples(sampleIdsMap.get(study.getId())); + List sampleIds = sampleIdsMap.get(study.getId()); + study.setSamples(sampleIds); + List sampleNames = new ArrayList<>(sampleIds.size()); + for (Integer sampleId : sampleIds) { + sampleNames.add(metadataManager.getSampleName(study.getId(), sampleId)); + } + study.setSampleNames(sampleNames); } int numTotalSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); skipAndLimitSamples(query, sampleIdsMap); @@ -478,6 +484,10 @@ public static boolean isIncludeSamplesDefined(Query query, Set fie return getIncludeSamplePartialStatus(query, fields) != null || getIncludeFilePartialStatus(query, fields) != null; } + /* + * @deprecated use VariantQueryProjection.getSampleNames() + */ + @Deprecated public static Map> getIncludeSampleNames(Query query, QueryOptions options, VariantStorageMetadataManager metadataManager) { if (VariantField.getIncludeFields(options).contains(VariantField.STUDIES)) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java index dc278d1e3db..200b2eb463d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java @@ -1,7 +1,5 @@ package org.opencb.opencga.storage.core.variant.search; -import org.apache.commons.lang3.time.StopWatch; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; @@ -10,11 +8,10 @@ import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; import java.io.IOException; -import java.util.Collections; -import java.util.concurrent.TimeUnit; import static org.opencb.opencga.storage.core.variant.search.VariantSearchUtils.inferSpecificSearchIndexSamplesCollection; @@ -37,19 +34,9 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) throws Stor } @Override - public DataResult count(Query query) { - try { - StopWatch watch = StopWatch.createStarted(); - long count = searchManager.count(dbName, query); - int time = (int) watch.getTime(TimeUnit.MILLISECONDS); - return new DataResult<>(time, Collections.emptyList(), 1, Collections.singletonList(count), 1); - } catch (IOException | VariantSearchException e) { - throw new VariantQueryException("Error querying Solr", e); - } - } - - @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) throws StorageEngineException { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) throws StorageEngineException { + Query query = variantQuery.getQuery(); + QueryOptions options = variantQuery.getInputOptions(); String specificSearchIndexSamples = inferSpecificSearchIndexSamplesCollection(query, options, getMetadataManager(), dbName); if (specificSearchIndexSamples == null) { @@ -59,7 +46,7 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean iterat if (iterator) { return searchManager.iterator(specificSearchIndexSamples, query, options); } else { - return searchManager.query(specificSearchIndexSamples, query, options); + return searchManager.query(specificSearchIndexSamples, variantQuery); } } catch (IOException | VariantSearchException e) { throw VariantQueryException.internalException(e); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantAggregationExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantAggregationExecutor.java index cd466046999..eba762ab0af 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantAggregationExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantAggregationExecutor.java @@ -4,7 +4,7 @@ import org.opencb.commons.datastore.core.FacetField; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.executors.VariantAggregationExecutor; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; import org.slf4j.Logger; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java index 137c48cd163..12c86cc4e2b 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java @@ -8,7 +8,6 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.config.storage.StorageConfiguration; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; @@ -16,6 +15,8 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.search.solr.SolrNativeIterator; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; @@ -80,29 +81,16 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) throws Stor } @Override - public DataResult count(Query query) { - try { - StopWatch watch = StopWatch.createStarted(); - long count = searchManager.count(dbName, query); - int time = (int) watch.getTime(TimeUnit.MILLISECONDS); - return new DataResult<>(time, Collections.emptyList(), 1, Collections.singletonList(count), 1); - } catch (IOException | VariantSearchException e) { - throw new VariantQueryException("Error querying Solr", e); - } - } - - @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) { - if (options == null) { - options = QueryOptions.empty(); - } + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { + Query query = variantQuery.getQuery(); + QueryOptions options = variantQuery.getInputOptions(); if (doQuerySearchManager(query, options)) { try { if (iterator) { return searchManager.iterator(dbName, query, options); } else { - return searchManager.query(dbName, query, options); + return searchManager.query(dbName, variantQuery); } } catch (IOException | VariantSearchException e) { throw new VariantQueryException("Error querying Solr", e); @@ -134,7 +122,7 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean iterat approxCount = false; } else if (options.getBoolean(APPROXIMATE_COUNT.key()) || options.getBoolean(QueryOptions.COUNT)) { options.put(QueryOptions.COUNT, false); - VariantQueryResult result = approximateCount(query, options); + VariantQueryResult result = approximateCount(variantQuery); numTotalResults = result.first(); approxCount = result.getApproximateCount(); approxCountSamplingSize = result.getApproximateCountSamplingSize(); @@ -176,7 +164,9 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean iterat } } - public VariantQueryResult approximateCount(Query query, QueryOptions options) { + public VariantQueryResult approximateCount(ParsedVariantQuery variantQuery) { + Query query = variantQuery.getQuery(); + QueryOptions options = variantQuery.getInputOptions(); long count; boolean approxCount = true; int sampling = 0; @@ -193,7 +183,7 @@ public VariantQueryResult approximateCount(Query query, QueryOptions optio Query searchEngineQuery = getSearchEngineQuery(query); Query engineQuery = getEngineQuery(query, options, getMetadataManager()); - VariantQueryResult nativeResult = searchManager + DataResult nativeResult = searchManager .nativeQuery(dbName, searchEngineQuery, queryOptions); List variantIds = nativeResult.getResults().stream().map(VariantSearchModel::getId).collect(Collectors.toList()); // Adjust numSamples if the results from SearchManager is smaller than numSamples @@ -202,7 +192,7 @@ public VariantQueryResult approximateCount(Query query, QueryOptions optio approxCount = false; sampling = variantIds.size(); } - long numSearchResults = nativeResult.getNumTotalResults(); + long numSearchResults = nativeResult.getNumMatches(); long numResults; if (variantIds.isEmpty()) { @@ -223,8 +213,8 @@ public VariantQueryResult approximateCount(Query query, QueryOptions optio throw new VariantQueryException("Error querying Solr", e); } int time = (int) watch.getTime(TimeUnit.MILLISECONDS); - return new VariantQueryResult<>(time, 1, 1, Collections.emptyList(), Collections.singletonList(count), null, - SEARCH_ENGINE_ID + '+' + getStorageEngineId(), approxCount, approxCount ? sampling : null, null); + return new VariantQueryResult<>(time, 1, 1, Collections.emptyList(), Collections.singletonList(count), + SEARCH_ENGINE_ID + '+' + getStorageEngineId(), approxCount, approxCount ? sampling : null, null, variantQuery); } /** @@ -308,7 +298,7 @@ protected Iterator variantIdIteratorFromSearch(Query query, int limit, i try { // Do not iterate for small queries if (limit < 10000) { - VariantQueryResult nativeResult = searchManager.nativeQuery(dbName, query, queryOptions); + DataResult nativeResult = searchManager.nativeQuery(dbName, query, queryOptions); if (numTotalResults != null) { numTotalResults.set(nativeResult.getNumMatches()); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java index 74ee51bbe3a..374f5f9ffd6 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java @@ -42,7 +42,8 @@ import org.opencb.commons.utils.ListUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.storage.StorageConfiguration; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.utils.CellBaseUtils; @@ -278,25 +279,24 @@ public int delete(String collection, VariantDBIterator variantDBIterator, Progre * according a given query. * * @param collection Collection name - * @param query Query - * @param queryOptions Query options + * @param variantQuery Parsed variant query * @return List of Variant objects * @throws VariantSearchException VariantSearchException * @throws IOException IOException */ - public VariantQueryResult query(String collection, Query query, QueryOptions queryOptions) + public VariantQueryResult query(String collection, ParsedVariantQuery variantQuery) throws VariantSearchException, IOException { - SolrQuery solrQuery = solrQueryParser.parse(query, queryOptions); + SolrQuery solrQuery = solrQueryParser.parse(variantQuery.getQuery(), variantQuery.getInputOptions()); SolrCollection solrCollection = solrManager.getCollection(collection); DataResult queryResult; try { queryResult = solrCollection.query(solrQuery, VariantSearchModel.class, - new VariantSearchToVariantConverter(VariantField.getIncludeFields(queryOptions))); + new VariantSearchToVariantConverter(VariantField.getIncludeFields(variantQuery.getInputOptions()))); } catch (SolrServerException e) { throw new VariantSearchException("Error executing variant query", e); } - return new VariantQueryResult<>(queryResult, null, SEARCH_ENGINE_ID); + return new VariantQueryResult<>(queryResult, SEARCH_ENGINE_ID, variantQuery); } /** @@ -310,7 +310,7 @@ public VariantQueryResult query(String collection, Query query, QueryOp * @throws VariantSearchException VariantSearchException * @throws IOException IOException */ - public VariantQueryResult nativeQuery(String collection, Query query, QueryOptions queryOptions) + public DataResult nativeQuery(String collection, Query query, QueryOptions queryOptions) throws VariantSearchException, IOException { SolrQuery solrQuery = solrQueryParser.parse(query, queryOptions); SolrCollection solrCollection = solrManager.getCollection(collection); @@ -321,7 +321,7 @@ public VariantQueryResult nativeQuery(String collection, Que throw new VariantSearchException("Error executing variant query (nativeQuery)", e); } - return new VariantQueryResult<>(queryResult, null, SEARCH_ENGINE_ID); + return queryResult; } /** diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java index 598e1fae586..08dabda7562 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.core.variant; import org.hamcrest.CoreMatchers; +import org.hamcrest.MatcherAssert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -17,6 +18,7 @@ import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.io.VariantWriterFactory; @@ -75,13 +77,13 @@ public void checkAllAnnotated() throws Exception { @Test public void getPairs() throws Exception { - getPairs(new Query()); - getPairs(new Query(VariantQueryParam.REGION.key(), "2")); - getPairs(new Query(VariantQueryParam.REGION.key(), "17")); - getPairs(new Query(VariantQueryParam.REGION.key(), "2,13,5")); - getPairs(new Query(VariantQueryParam.REGION.key(), "2").append(VariantQueryParam.GENE.key(), "VPS53")); - getPairs(new Query(VariantQueryParam.GENE.key(), "VPS53")); - getPairs(new Query(VariantQueryParam.GENE.key(), "BRCA2")); + getPairs(new VariantQuery()); + getPairs(new VariantQuery().region("2")); + getPairs(new VariantQuery().region("17")); + getPairs(new VariantQuery().region("2", "13", "5")); + getPairs(new VariantQuery().region("2").gene("LINC00423")); + getPairs(new VariantQuery().gene("LINC00423")); + getPairs(new VariantQuery().gene("ENSG00000263015")); } public void getPairs(Query inputQuery) throws Exception { @@ -115,8 +117,8 @@ public void getPairs(Query inputQuery) throws Exception { } assertNull(prevMateid); assertNull(prevId); - assertThat(duplicatedVariants, CoreMatchers.not(CoreMatchers.hasItem(CoreMatchers.anything()))); - + MatcherAssert.assertThat(duplicatedVariants, CoreMatchers.not(CoreMatchers.hasItem(CoreMatchers.anything()))); + assertNotEquals(0, variants.size()); // Check pagination testPagination(variantsList, query, 1); testPagination(variantsList, query, 2); @@ -130,17 +132,19 @@ private void testPagination(List variantsList, Query query, int batchSiz List actualVariantsGet = new ArrayList<>(variantsList.size()); List actualVariantsIterator = new ArrayList<>(variantsList.size()); for (int i = 0; i < variantsList.size(); i += batchSize) { + System.out.println(" --- limit = " + batchSize + " skip = " + i); QueryOptions options = new QueryOptions(QueryOptions.LIMIT, batchSize) .append(QueryOptions.SKIP, i); - List results = variantStorageEngine.get(query, options).getResults(); - System.out.println("get = " + options.toJson() + " -> " + results.size() + " " + results); + List results; + results = variantStorageEngine.get(query, options).getResults(); + System.out.println("get = " + options.toJson() + " -> " + results.size() + " result " + results.stream().map(Variant::toString).collect(Collectors.joining("\", \"", "[ \"", "\" ]"))); results.stream().map(Variant::toString).forEach(actualVariantsGet::add); assertTrue(results.size() <= batchSize); results = new ArrayList<>(batchSize); variantStorageEngine.iterator(query, options).forEachRemaining(results::add); - System.out.println("it = " + options.toJson() + " -> " + results.size() + " " + results); - results.stream().map(Variant::toString).forEach(actualVariantsGet::add); + System.out.println("it = " + options.toJson() + " -> " + results.size() + " result " + results.stream().map(Variant::toString).collect(Collectors.joining("\", \"", "[ \"", "\" ]"))); + results.stream().map(Variant::toString).forEach(actualVariantsIterator::add); assertTrue(results.size() <= batchSize); } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java index 37c1c02b60d..3827a56da35 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java @@ -32,7 +32,7 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.api.ParamConstants; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -293,7 +293,7 @@ public void testCount() throws Exception { .append(ANNOT_CONSERVATION.key(), "gerp>0.1"); long realCount = dbAdaptor.count(query).first(); VariantQueryResult result = variantQueryExecutor - .get(query, new QueryOptions(COUNT, true).append(LIMIT, 0)); + .get(variantStorageEngine.parseQuery(query, new QueryOptions(COUNT, true).append(LIMIT, 0))); assertEquals(0, result.getResults().size()); assertEquals(realCount, result.getNumMatches()); } @@ -304,7 +304,7 @@ public void testApproxCount() throws Exception { .append(ANNOT_CONSERVATION.key(), "gerp>0.1"); long realCount = dbAdaptor.count(query).first(); VariantQueryResult result = variantQueryExecutor - .approximateCount(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), realCount * 0.1)); + .approximateCount(variantStorageEngine.getVariantQueryParser().parseQuery(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), realCount * 0.1))); long approxCount = result.first(); System.out.println("approxCount = " + approxCount); System.out.println("realCount = " + realCount); @@ -319,7 +319,7 @@ public void testExactApproxCount() throws Exception { .append(ANNOT_CONSERVATION.key(), "gerp>0.1"); long realCount = dbAdaptor.count(query).first(); VariantQueryResult result = variantQueryExecutor - .approximateCount(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), allVariants.getNumResults())); + .approximateCount(variantStorageEngine.getVariantQueryParser().parseQuery(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), allVariants.getNumResults()))); long approxCount = result.first(); System.out.println("approxCount = " + approxCount); System.out.println("realCount = " + realCount); @@ -333,7 +333,7 @@ public void testExactApproxCountToSearch() throws Exception { Query query = new Query(ANNOT_CONSERVATION.key(), "gerp>0.1"); long realCount = dbAdaptor.count(query).first(); VariantQueryResult result = variantQueryExecutor - .approximateCount(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), allVariants.getNumResults())); + .approximateCount(variantStorageEngine.getVariantQueryParser().parseQuery(query, new QueryOptions(VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), allVariants.getNumResults()))); long approxCount = result.first(); System.out.println("approxCount = " + approxCount); System.out.println("realCount = " + realCount); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileSpecificSamplesCollectionTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileSpecificSamplesCollectionTest.java index 4c267a35d15..58cc058dc4b 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileSpecificSamplesCollectionTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileSpecificSamplesCollectionTest.java @@ -5,7 +5,8 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -55,19 +56,19 @@ protected void load() throws Exception { protected VariantQueryResult query(Query query, QueryOptions options) { try { - query = variantStorageEngine.preProcessQuery(query, options); + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); VariantStorageMetadataManager scm = dbAdaptor.getMetadataManager(); - String collection = VariantSearchUtils.inferSpecificSearchIndexSamplesCollection(query, options, scm, DB_NAME); + String collection = VariantSearchUtils.inferSpecificSearchIndexSamplesCollection(variantQuery.getQuery(), options, scm, DB_NAME); // Do not execute this test if the query is not covered by the specific search index collection - Assume.assumeThat(query.toJson(), collection, CoreMatchers.notNullValue()); + Assume.assumeThat(variantQuery.getQuery().toJson(), collection, CoreMatchers.notNullValue()); if (options.getInt(QueryOptions.LIMIT, 0) <= 0) { options = new QueryOptions(options); options.put(QueryOptions.LIMIT, 100000); } - return variantStorageEngine.getVariantSearchManager().query(collection, query, options); + return variantStorageEngine.getVariantSearchManager().query(collection, variantQuery); } catch (StorageEngineException | VariantSearchException | IOException e) { e.printStackTrace(); Assert.fail(e.getMessage()); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java index 9a95ed053e5..f52790a19c1 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java @@ -10,7 +10,7 @@ import org.opencb.biodata.models.variant.avro.SampleEntry; import org.opencb.biodata.models.variant.stats.VariantStats; import org.opencb.commons.datastore.core.*; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.FileMetadata; diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java index 1f305574a64..269e2642dc5 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorTest.java @@ -30,14 +30,11 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.VariantFileMetadata; import org.opencb.biodata.models.variant.avro.*; -import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.models.variant.stats.VariantStats; -import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -47,6 +44,8 @@ import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.annotation.annotators.CellBaseRestVariantAnnotator; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.executors.NoOpVariantQueryExecutor; import org.opencb.opencga.storage.core.variant.query.filters.VariantFilterBuilder; @@ -268,8 +267,8 @@ public void multiIterator() throws Exception { VariantDBIterator iterator = dbAdaptor.iterator(variantsToQuery.iterator(), new Query(), new QueryOptions()); - DataResult queryResult = iterator.toDataResult(); - assertEquals(variantsToQuery.size(), queryResult.getResults().size()); + List variants = iterator.toList(); + assertEquals(variantsToQuery.size(), variants.size()); } @Test @@ -2420,7 +2419,8 @@ private void testQuery(Query query, QueryOptions options) { } private Matcher withFilter(Query query) { - return VariantMatchers.withFilter(new VariantFilterBuilder(metadataManager).buildFilter(query, null), query.toJson()); + ParsedVariantQuery parsedVariantQuery = variantStorageEngine.parseQuery(query, new QueryOptions()); + return VariantMatchers.withFilter(new VariantFilterBuilder().buildFilter(parsedVariantQuery), query.toJson()); } /* @Test diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java index 395e41d2675..6194d25c6d8 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java @@ -6,7 +6,7 @@ import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyVariantDBAdaptor.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyVariantDBAdaptor.java index 71fa34998de..b77ea4e08bc 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyVariantDBAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyVariantDBAdaptor.java @@ -28,7 +28,7 @@ import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; @@ -72,13 +72,13 @@ public DummyVariantDBAdaptor(String dbName) { } @Override - public VariantQueryResult get(ParsedVariantQuery query, QueryOptions options) { + public VariantQueryResult get(ParsedVariantQuery query) { List variants = new ArrayList<>(); - iterator(query, options).forEachRemaining(variants::add); + iterator(query).forEachRemaining(variants::add); - return new VariantQueryResult<>(0, variants.size(), variants.size(), Collections.emptyList(), variants, null, - DummyVariantStorageEngine.STORAGE_ENGINE_ID); + return new VariantQueryResult<>(0, variants.size(), variants.size(), Collections.emptyList(), variants, + DummyVariantStorageEngine.STORAGE_ENGINE_ID, query); } @Override @@ -102,7 +102,8 @@ public DataResult distinct(Query query, String field) { } @Override - public VariantDBIterator iterator(ParsedVariantQuery variantQuery, QueryOptions options) { + public VariantDBIterator iterator(ParsedVariantQuery variantQuery) { + QueryOptions options = variantQuery.getInputOptions(); logger.info("Query " + variantQuery.getQuery().toJson()); logger.info("QueryOptions " + options.toJson()); logger.info("dbName " + dbName); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParserTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParserTest.java index 8fae5f12310..2611cfc337a 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParserTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParserTest.java @@ -101,10 +101,17 @@ public static Set set(T... ts) { @Test public void testParseClinicalCombinations() { - assertEquals(Arrays.asList("cosmic"), VariantQueryParser.parseClinicalCombinationsList(new Query(ANNOT_CLINICAL.key(), "cosmic"))); - assertEquals(Arrays.asList("clinvar", "cosmic"), VariantQueryParser.parseClinicalCombinationsList(new Query(ANNOT_CLINICAL.key(), "clinvar,cosmic"))); - assertEquals(Arrays.asList("cosmic_pathogenic"), VariantQueryParser.parseClinicalCombinationsList(new Query(ANNOT_CLINICAL.key(), "cosmic").append(ANNOT_CLINICAL_SIGNIFICANCE.key(), "pathogenic"))); - assertEquals(Arrays.asList("cosmic_confirmed"), VariantQueryParser.parseClinicalCombinationsList(new Query(ANNOT_CLINICAL.key(), "cosmic").append(ANNOT_CLINICAL_CONFIRMED_STATUS.key(), true))); - assertEquals(Arrays.asList("clinvar_pathogenic_confirmed", "clinvar_likely_pathogenic_confirmed", "cosmic_pathogenic_confirmed", "cosmic_likely_pathogenic_confirmed"), VariantQueryParser.parseClinicalCombinationsList(new Query(ANNOT_CLINICAL.key(), "clinvar,cosmic").append(ANNOT_CLINICAL_SIGNIFICANCE.key(), "pathogenic,likely_pathogenic").append(ANNOT_CLINICAL_CONFIRMED_STATUS.key(), true))); + assertEquals(Arrays.asList("cosmic"), variantQueryParser.parseQuery( + new Query(ANNOT_CLINICAL.key(), "cosmic"), new QueryOptions()).getClinicalCombinationsList()); + assertEquals(Arrays.asList("clinvar", "cosmic"), variantQueryParser.parseQuery( + new Query(ANNOT_CLINICAL.key(), "clinvar,cosmic"), new QueryOptions()).getClinicalCombinationsList()); + assertEquals(Arrays.asList("cosmic_pathogenic"), variantQueryParser.parseQuery( + new Query(ANNOT_CLINICAL.key(), "cosmic").append(ANNOT_CLINICAL_SIGNIFICANCE.key(), "pathogenic"), new QueryOptions()).getClinicalCombinationsList()); + assertEquals(Arrays.asList("cosmic_confirmed"), variantQueryParser.parseQuery( + new Query(ANNOT_CLINICAL.key(), "cosmic").append(ANNOT_CLINICAL_CONFIRMED_STATUS.key(), true), new QueryOptions()).getClinicalCombinationsList()); + assertEquals(Arrays.asList("clinvar_pathogenic_confirmed", "clinvar_likely_pathogenic_confirmed", "cosmic_pathogenic_confirmed", "cosmic_likely_pathogenic_confirmed"), variantQueryParser.parseQuery(new Query() + .append(ANNOT_CLINICAL.key(), "clinvar,cosmic") + .append(ANNOT_CLINICAL_SIGNIFICANCE.key(), "pathogenic,likely_pathogenic") + .append(ANNOT_CLINICAL_CONFIRMED_STATUS.key(), true), new QueryOptions()).getClinicalCombinationsList()); } } \ No newline at end of file diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/SearchIndexSamplesTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/SearchIndexSamplesTest.java index bd25023f6dc..12cb35f8714 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/SearchIndexSamplesTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/SearchIndexSamplesTest.java @@ -229,7 +229,8 @@ protected void checkLoadedData(String collection, List samples) Query query = new Query(SAMPLE.key(), samples); int expectedCount = variantStorageEngine.getDBAdaptor().count(query).first().intValue(); - assertEquals(expectedCount, variantSearchManager.query(collection, new Query(), new QueryOptions()).getNumTotalResults()); + assertEquals(expectedCount, variantSearchManager.query(collection, variantStorageEngine.parseQuery(new Query(), new QueryOptions())) + .getNumTotalResults()); SolrVariantDBIterator solrIterator = variantSearchManager.iterator(collection, new Query(), new QueryOptions(QueryOptions.SORT, true)); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchIndexTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchIndexTest.java index b83d1a9338e..4d5d8da6716 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchIndexTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchIndexTest.java @@ -215,7 +215,7 @@ public void checkVariantSearchIndex(VariantDBAdaptor dbAdaptor) throws IOExcepti TreeSet variantsFromSearch = new TreeSet<>(Comparator.comparing(Variant::toString)); TreeSet variantsFromDB = new TreeSet<>(Comparator.comparing(Variant::toString)); - variantsFromSearch.addAll(variantStorageEngine.getVariantSearchManager().query(DB_NAME, query, queryOptions).getResults()); + variantsFromSearch.addAll(variantStorageEngine.getVariantSearchManager().query(DB_NAME, variantStorageEngine.parseQuery(query, queryOptions)).getResults()); variantsFromDB.addAll(dbAdaptor.get(query, queryOptions).getResults()); assertEquals(variantsFromDB.size(), variantsFromSearch.size()); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java index a8fe6d9790a..56588d25863 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java @@ -21,7 +21,7 @@ import org.opencb.commons.datastore.solr.FacetQueryParser; import org.opencb.commons.utils.ListUtils; import org.opencb.opencga.core.common.JacksonUtils; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; @@ -67,8 +67,8 @@ public void testTranscriptInfo() throws Exception { variantSearchManager.insert(collection, annotatedVariants); - VariantQueryResult results = variantSearchManager.query(collection, new Query(), - new QueryOptions(QueryOptions.LIMIT, limit)); + VariantQueryResult results = variantSearchManager.query(collection, variantStorageEngine.parseQuery(new Query(), + new QueryOptions(QueryOptions.LIMIT, limit))); for (int i = 0; i < limit; i++) { Variant expectedVariant = annotatedVariants.get(i); @@ -213,8 +213,8 @@ public void testSpecialCharacter() throws Exception { query.put(VariantQueryParam.FILE.key(), fileId); query.put(VariantQueryParam.FILTER.key(), "PASS"); query.put(VariantQueryParam.ANNOT_CLINICAL_SIGNIFICANCE.key(), "benign"); - VariantQueryResult results = variantSearchManager.query(collection, query, - new QueryOptions(QueryOptions.LIMIT, limit)); + VariantQueryResult results = variantSearchManager.query(collection, variantStorageEngine.parseQuery(query, + new QueryOptions(QueryOptions.LIMIT, limit))); if (results.getResults().size() > 0) { System.out.println(results.getResults().get(0).toJson()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java new file mode 100644 index 00000000000..45682df31f4 --- /dev/null +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java @@ -0,0 +1,36 @@ +package org.opencb.opencga.storage.hadoop.variant; + +import org.opencb.commons.datastore.core.Query; +import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; +import org.opencb.opencga.storage.core.utils.CellBaseUtils; +import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; + +import java.util.List; + +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.STUDY; +import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.*; + +public class HadoopVariantQueryParser extends VariantQueryParser { + public HadoopVariantQueryParser(CellBaseUtils cellBaseUtils, VariantStorageMetadataManager metadataManager) { + super(cellBaseUtils, metadataManager); + } + + @Override + public Query preProcessQuery(Query originalQuery, QueryOptions options) { + Query query = super.preProcessQuery(originalQuery, options); + List studyNames = metadataManager.getStudyNames(); + + if (isValidParam(query, STUDY) && studyNames.size() == 1) { + String study = query.getString(STUDY.key()); + if (!isNegated(study)) { + // Check that study exists + metadataManager.getStudyId(study); + query.remove(STUDY.key()); + } + } + + convertGenesToRegionsQuery(query, cellBaseUtils); + return query; + } +} diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java index 917b679cf1c..8052ac5622c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java @@ -47,7 +47,6 @@ import org.opencb.opencga.storage.core.metadata.VariantMetadataFactory; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.*; -import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.VariantStoragePipeline; @@ -59,6 +58,7 @@ import org.opencb.opencga.storage.core.variant.annotation.annotators.VariantAnnotator; import org.opencb.opencga.storage.core.variant.io.VariantExporter; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; import org.opencb.opencga.storage.core.variant.query.executors.*; import org.opencb.opencga.storage.core.variant.score.VariantScoreFormatDescriptor; import org.opencb.opencga.storage.core.variant.search.SamplesSearchIndexVariantQueryExecutor; @@ -115,8 +115,6 @@ import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.*; import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.REGION; -import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.STUDY; -import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.*; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.*; import static org.opencb.opencga.storage.hadoop.variant.gaps.FillGapsDriver.*; @@ -1041,36 +1039,41 @@ public ParsedVariantQuery parseQuery(Query originalQuery, QueryOptions options) } @Override - public Query preProcessQuery(Query originalQuery, QueryOptions options) { - Query query = super.preProcessQuery(originalQuery, options); - - VariantStorageMetadataManager metadataManager; - CellBaseUtils cellBaseUtils; - try { - metadataManager = getMetadataManager(); - cellBaseUtils = getCellBaseUtils(); - } catch (StorageEngineException e) { - throw VariantQueryException.internalException(e); - } - List studyNames = metadataManager.getStudyNames(); - - if (isValidParam(query, STUDY) && studyNames.size() == 1) { - String study = query.getString(STUDY.key()); - if (!isNegated(study)) { - try { - // Check that study exists - getMetadataManager().getStudyId(study); - } catch (StorageEngineException e) { - throw VariantQueryException.internalException(e); - } - query.remove(STUDY.key()); - } - } - - convertGenesToRegionsQuery(query, cellBaseUtils); - return query; + protected VariantQueryParser getVariantQueryParser() throws StorageEngineException { + return new HadoopVariantQueryParser(getCellBaseUtils(), getMetadataManager()); } +// @Override +// public Query preProcessQuery(Query originalQuery, QueryOptions options) { +// Query query = super.preProcessQuery(originalQuery, options); +// +// VariantStorageMetadataManager metadataManager; +// CellBaseUtils cellBaseUtils; +// try { +// metadataManager = getMetadataManager(); +// cellBaseUtils = getCellBaseUtils(); +// } catch (StorageEngineException e) { +// throw VariantQueryException.internalException(e); +// } +// List studyNames = metadataManager.getStudyNames(); +// +// if (isValidParam(query, STUDY) && studyNames.size() == 1) { +// String study = query.getString(STUDY.key()); +// if (!isNegated(study)) { +// try { +// // Check that study exists +// getMetadataManager().getStudyId(study); +// } catch (StorageEngineException e) { +// throw VariantQueryException.internalException(e); +// } +// query.remove(STUDY.key()); +// } +// } +// +// convertGenesToRegionsQuery(query, cellBaseUtils); +// return query; +// } + @Override protected List initVariantAggregationExecutors() { List executors = new ArrayList<>(3); @@ -1177,7 +1180,7 @@ protected List initVariantQueryExecutors() throws StorageE executors.add(new SampleIndexCompoundHeterozygousQueryExecutor( getMetadataManager(), getStorageEngineId(), getOptions(), this, getSampleIndexDBAdaptor(), getDBAdaptor())); executors.add(new BreakendVariantQueryExecutor( - getMetadataManager(), getStorageEngineId(), getOptions(), new SampleIndexVariantQueryExecutor( + getStorageEngineId(), getOptions(), new SampleIndexVariantQueryExecutor( getDBAdaptor(), getSampleIndexDBAdaptor(), getStorageEngineId(), getOptions()), getDBAdaptor())); executors.add(new SamplesSearchIndexVariantQueryExecutor( getDBAdaptor(), getVariantSearchManager(), getStorageEngineId(), dbName, getConfiguration(), getOptions())); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java index 40d45a70bee..c672e94fb58 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java @@ -2,14 +2,14 @@ import com.google.common.collect.Iterators; import org.opencb.biodata.models.variant.Variant; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; import org.opencb.opencga.storage.core.variant.query.ParsedQuery; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.executors.VariantQueryExecutor; import org.slf4j.Logger; @@ -76,23 +76,19 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) { return false; } - @Override - public DataResult count(Query query) { - throw new UnsupportedOperationException("Count not implemented in " + getClass()); - } - /** * Intersect result of column hbase scan and full phoenix query. * Use {@link org.opencb.opencga.storage.core.variant.adaptors.iterators.MultiVariantDBIterator}. * - * @param query Query - * @param options Options + * @param variantQuery Parsed query * @param iterator Shall the resulting object be an iterator instead of a DataResult * @return DataResult or Iterator with the variants that matches the query */ @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator) { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { logger.info("HBase column intersect"); + Query query = variantQuery.getQuery(); + QueryOptions options = variantQuery.getInputOptions(); // Build the query with only one query filter -> Single HBase column filter // diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java index 3d6fe440da1..38b4d9c1718 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java @@ -33,7 +33,6 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.*; import org.opencb.opencga.core.config.storage.StorageConfiguration; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; @@ -45,6 +44,7 @@ import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotationManager; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; @@ -52,6 +52,7 @@ import org.opencb.opencga.storage.hadoop.auth.HBaseCredentials; import org.opencb.opencga.storage.hadoop.utils.HBaseManager; import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine; import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions; import org.opencb.opencga.storage.hadoop.variant.adaptors.iterators.VariantHBaseResultSetIterator; @@ -221,33 +222,29 @@ public void close() throws IOException { } @Override - public VariantQueryResult get(ParsedVariantQuery query, QueryOptions options) { + public VariantQueryResult get(ParsedVariantQuery query) { List variants = new LinkedList<>(); - VariantDBIterator iterator = iterator(query, options); + VariantDBIterator iterator = iterator(query); + QueryOptions options = new QueryOptions(query.getInputOptions()); iterator.forEachRemaining(variants::add); long numTotalResults; - if (options == null) { - numTotalResults = variants.size(); - } else { - if (options.getInt(QueryOptions.LIMIT, -1) >= 0) { - if (options.getBoolean(QueryOptions.COUNT, false)) { - numTotalResults = count(query).first(); - } else { - numTotalResults = -1; - } + if (options.getInt(QueryOptions.LIMIT, -1) >= 0) { + if (options.getBoolean(QueryOptions.COUNT, false)) { + numTotalResults = count(query).first(); } else { - // There are no limit. Do not count. - numTotalResults = variants.size(); + numTotalResults = -1; } + } else { + // There are no limit. Do not count. + numTotalResults = variants.size(); } - VariantQueryResult result = new VariantQueryResult<>(iterator.getTime(TimeUnit.MILLISECONDS), variants.size(), - numTotalResults, null, variants, null, HadoopVariantStorageEngine.STORAGE_ENGINE_ID) + return new VariantQueryResult<>(iterator.getTime(TimeUnit.MILLISECONDS), variants.size(), + numTotalResults, null, variants, HadoopVariantStorageEngine.STORAGE_ENGINE_ID, query) .setFetchTime(iterator.getTimeFetching(TimeUnit.MILLISECONDS)) .setConvertTime(iterator.getTimeConverting(TimeUnit.MILLISECONDS)); - return addSamplesMetadataIfRequested(result, query.getQuery(), options, getMetadataManager()); } @Override @@ -334,7 +331,8 @@ public DataResult distinct(Query query, String field) { } @Override - public VariantDBIterator iterator(ParsedVariantQuery variantQuery, QueryOptions options) { + public VariantDBIterator iterator(ParsedVariantQuery variantQuery) { + QueryOptions options = variantQuery.getInputOptions(); if (options == null) { options = new QueryOptions(); } else { @@ -385,7 +383,7 @@ public VariantDBIterator iterator(ParsedVariantQuery variantQuery, QueryOptions private VariantHBaseResultSetIterator phoenixIterator(ParsedVariantQuery variantQuery, QueryOptions options, HBaseVariantConverterConfiguration converterConfiguration) { VariantStorageMetadataManager metadataManager = getMetadataManager(); - new VariantQueryParser(null, metadataManager).optimize(variantQuery); + new HadoopVariantQueryParser(null, metadataManager).optimize(variantQuery); logger.debug("Table name = " + variantTable); logger.info("Query : " + VariantQueryUtils.printQuery(variantQuery.getQuery())); @@ -679,7 +677,7 @@ private class VariantQueryIteratorCustomSplit extends MultiVariantDBIterator.Var VariantQueryIteratorCustomSplit(Iterator variants, Query query, int batchSize, QueryOptions options) { super(variants, query, batchSize); - parser = new VariantQueryParser(null, getMetadataManager()); + parser = new HadoopVariantQueryParser(null, getMetadataManager()); variantQuery = parser.parseQuery(query, options); cts = sizeOrOne(variantQuery.getConsequenceTypes()); bts = sizeOrOne(variantQuery.getBiotypes()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java index bb9737144d2..2d5c66b6dd9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java @@ -44,6 +44,7 @@ import org.opencb.opencga.storage.core.variant.query.*; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.converters.HBaseToVariantConverter; import org.opencb.opencga.storage.hadoop.variant.converters.annotation.VariantAnnotationToPhoenixConverter; import org.opencb.opencga.storage.hadoop.variant.converters.study.HBaseToStudyEntryConverter; @@ -116,7 +117,7 @@ public VariantSqlQueryParser(String variantTable, @Deprecated public String parse(Query query, QueryOptions options) { - VariantQueryParser parser = new VariantQueryParser(null, metadataManager); + VariantQueryParser parser = new HadoopVariantQueryParser(null, metadataManager); ParsedVariantQuery variantQuery = parser.parseQuery(query, options, true); return parse(variantQuery, options); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexCompoundHeterozygousQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexCompoundHeterozygousQueryExecutor.java index cb2019c2f6d..c7599e7e288 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexCompoundHeterozygousQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexCompoundHeterozygousQueryExecutor.java @@ -5,7 +5,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.Trio; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java index 68eed2db889..4dd50c9eacf 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java @@ -15,6 +15,7 @@ import org.opencb.opencga.storage.core.metadata.models.Trio; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; import org.opencb.opencga.storage.hadoop.variant.index.query.SampleIndexQuery; @@ -43,7 +44,7 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) { } @Override - protected Object getOrIterator(Query query, QueryOptions options, boolean iterator, SampleIndexQuery sampleIndexQuery) { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator, SampleIndexQuery sampleIndexQuery) { List trios = new ArrayList<>(sampleIndexQuery.getMendelianErrorSet().size()); int studyId = metadataManager.getStudyId(sampleIndexQuery.getStudy()); @@ -65,7 +66,7 @@ protected Object getOrIterator(Query query, QueryOptions options, boolean iterat trios.add(new Trio(null, father, mother, sampleMetadata.getName())); } - Object object = super.getOrIterator(query, options, iterator, sampleIndexQuery); + Object object = super.getOrIterator(variantQuery, iterator, sampleIndexQuery); if (iterator) { VariantDBIterator variantIterator = (VariantDBIterator) object; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java index 510085420dd..371d57ac4da 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java @@ -9,7 +9,6 @@ import org.opencb.biodata.models.variant.avro.FileEntry; import org.opencb.biodata.models.variant.avro.SampleEntry; import org.opencb.biodata.tools.commons.Converter; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; @@ -17,7 +16,6 @@ import org.opencb.opencga.core.common.BatchUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.config.storage.IndexFieldConfiguration; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.io.bit.BitBuffer; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; @@ -26,7 +24,7 @@ import org.opencb.opencga.storage.core.variant.adaptors.*; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; -import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.executors.VariantQueryExecutor; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; @@ -50,7 +48,6 @@ import java.util.stream.Collectors; import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.NONE; -import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.addSamplesMetadataIfRequested; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.SAMPLE_INDEX_QUERY_SAMPLE_INDEX_ONLY_PD_BATCH; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.SAMPLE_INDEX_QUERY_SAMPLE_INDEX_ONLY_PD_BUFFER; import static org.opencb.opencga.storage.hadoop.variant.index.SampleIndexVariantQueryExecutor.SAMPLE_INDEX_TABLE_SOURCE; @@ -64,7 +61,6 @@ public class SampleIndexOnlyVariantQueryExecutor extends VariantQueryExecutor { private final SampleIndexDBAdaptor sampleIndexDBAdaptor; private final VariantHadoopDBAdaptor dbAdaptor; - private final VariantQueryParser variantQueryParser; private final VariantQueryProjectionParser variantQueryProjectionParser; private static Logger logger = LoggerFactory.getLogger(SampleIndexOnlyVariantQueryExecutor.class); @@ -82,7 +78,6 @@ public SampleIndexOnlyVariantQueryExecutor(VariantHadoopDBAdaptor dbAdaptor, Sam super(dbAdaptor.getMetadataManager(), storageEngineId, options); this.sampleIndexDBAdaptor = sampleIndexDBAdaptor; this.dbAdaptor = dbAdaptor; - variantQueryParser = new VariantQueryParser(null, getMetadataManager()); variantQueryProjectionParser = new VariantQueryProjectionParser(getMetadataManager()); partialDataBufferSize = options.getInt(SAMPLE_INDEX_QUERY_SAMPLE_INDEX_ONLY_PD_BUFFER.key(), SAMPLE_INDEX_QUERY_SAMPLE_INDEX_ONLY_PD_BUFFER.defaultValue()); @@ -101,26 +96,16 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) { return false; } - @Override - public DataResult count(Query query) { - StopWatch stopWatch = StopWatch.createStarted(); - SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); - long count = sampleIndexDBAdaptor.count(sampleIndexQuery); - return new DataResult<>(((int) stopWatch.getTime(TimeUnit.MILLISECONDS)), Collections.emptyList(), 1, - Collections.singletonList(count), count); - } - /** * Fetch results exclusively from SampleSecondaryIndex. * - * @param inputQuery Query - * @param options Options + * @param variantQuery Query * @param iterator Shall the resulting object be an iterator instead of a DataResult * @return DataResult or Iterator with the variants that matches the query */ @Override - protected Object getOrIterator(Query inputQuery, QueryOptions options, boolean iterator) { - Query query = new Query(inputQuery); + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { + Query query = new Query(variantQuery.getQuery()); query.put(SampleIndexQueryParser.INCLUDE_PARENTS_COLUMN, true); SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); @@ -128,7 +113,7 @@ protected Object getOrIterator(Query inputQuery, QueryOptions options, boolean i boolean count; Future asyncCountFuture; - if (shouldGetCount(options, iterator)) { + if (shouldGetCount(variantQuery.getInputOptions(), iterator)) { count = true; asyncCountFuture = THREAD_POOL.submit(() -> { StopWatch stopWatch = StopWatch.createStarted(); @@ -141,13 +126,12 @@ protected Object getOrIterator(Query inputQuery, QueryOptions options, boolean i asyncCountFuture = null; } - VariantDBIterator variantIterator = getVariantDBIterator(sampleIndexQuery, inputQuery, options); + VariantDBIterator variantIterator = getVariantDBIterator(sampleIndexQuery, variantQuery); if (iterator) { return variantIterator; } else { - VariantQueryResult result = - addSamplesMetadataIfRequested(variantIterator.toDataResult(), inputQuery, options, getMetadataManager()); + VariantQueryResult result = variantIterator.toDataResult(variantQuery); if (count) { result.setApproximateCount(false); try { @@ -161,8 +145,8 @@ protected Object getOrIterator(Query inputQuery, QueryOptions options, boolean i } } - private VariantDBIterator getVariantDBIterator(SampleIndexQuery sampleIndexQuery, Query inputQuery, QueryOptions options) { - ParsedVariantQuery parsedQuery = variantQueryParser.parseQuery(inputQuery, options, true); + private VariantDBIterator getVariantDBIterator(SampleIndexQuery sampleIndexQuery, ParsedVariantQuery parsedQuery) { + QueryOptions options = parsedQuery.getInputOptions(); VariantDBIterator variantIterator; if (parsedQuery.getProjection().getStudyIds().isEmpty()) { logger.info("Using sample index iterator Iterator"); @@ -174,9 +158,9 @@ private VariantDBIterator getVariantDBIterator(SampleIndexQuery sampleIndexQuery try { rawIterator = sampleIndexDBAdaptor.rawIterator(sampleIndexQuery, options); } catch (IOException e) { - throw VariantQueryException.internalException(e).setQuery(inputQuery); + throw VariantQueryException.internalException(e).setQuery(parsedQuery.getInputQuery()); } - boolean includeAll = inputQuery.getBoolean("includeAllFromSampleIndex", false); + boolean includeAll = parsedQuery.getInputQuery().getBoolean("includeAllFromSampleIndex", false); SampleVariantIndexEntryToVariantConverter converter = new SampleVariantIndexEntryToVariantConverter( parsedQuery, sampleIndexQuery, dbAdaptor.getMetadataManager(), includeAll); variantIterator = VariantDBIterator.wrapper(Iterators.transform(rawIterator, converter::convert)); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantAggregationExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantAggregationExecutor.java index c27c2294e79..1bf855183b7 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantAggregationExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantAggregationExecutor.java @@ -9,7 +9,7 @@ import org.opencb.commons.datastore.core.FacetField; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.io.bit.BitBuffer; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.utils.iterators.CloseableIterator; @@ -144,7 +144,7 @@ protected VariantQueryResult aggregation(Query query, QueryOptions o } return new VariantQueryResult<>((int) stopWatch.getTime(TimeUnit.MILLISECONDS), 1, numMatches, Collections.emptyList(), - fields, null, SampleIndexVariantQueryExecutor.SAMPLE_INDEX_TABLE_SOURCE); + fields, SampleIndexVariantQueryExecutor.SAMPLE_INDEX_TABLE_SOURCE); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java index 64cf8669153..06a27a4156d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java @@ -3,17 +3,17 @@ import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.apache.commons.lang3.time.StopWatch; import org.opencb.biodata.models.variant.Variant; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.common.TimeUtils; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.MultiVariantDBIterator; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIteratorWithCounts; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.executors.AbstractTwoPhasedVariantQueryExecutor; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; @@ -31,7 +31,6 @@ import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.ID; import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.REGION; -import static org.opencb.opencga.storage.core.variant.query.VariantQueryUtils.addSamplesMetadataIfRequested; /** * Created on 01/04/19. @@ -66,11 +65,6 @@ public boolean canUseThisExecutor(Query query, QueryOptions options) { return false; } - @Override - public DataResult count(Query query) { - throw new UnsupportedOperationException("Count not implemented in " + getClass()); - } - @Override protected long primaryCount(Query query, QueryOptions options) { SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); @@ -81,24 +75,25 @@ protected long primaryCount(Query query, QueryOptions options) { * Intersect result of SampleIndexTable and full phoenix query. * Use {@link org.opencb.opencga.storage.core.variant.adaptors.iterators.MultiVariantDBIterator}. * - * @param inputQuery Query - * @param options Options + * @param variantQuery Parsed query * @param iterator Shall the resulting object be an iterator instead of a DataResult * @return DataResult or Iterator with the variants that matches the query */ @Override - protected Object getOrIterator(Query inputQuery, QueryOptions options, boolean iterator) { - Query query = new Query(inputQuery); + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { + Query query = new Query(variantQuery.getQuery()); SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); - return getOrIterator(query, options, iterator, sampleIndexQuery); + return getOrIterator(variantQuery, iterator, sampleIndexQuery); } - protected Object getOrIterator(Query query, QueryOptions inputOptions, boolean iterator, SampleIndexQuery sampleIndexQuery) { + protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator, SampleIndexQuery sampleIndexQuery) { logger.info("HBase SampleIndex intersect"); + QueryOptions inputOptions = variantQuery.getInputOptions(); + Query uncoveredQuery = new Query(sampleIndexQuery.getUncoveredQuery()); Future asyncCountFuture; boolean asyncCount; - if (shouldGetApproximateCount(inputOptions, iterator) && queryFiltersCovered(query)) { + if (shouldGetApproximateCount(inputOptions, iterator) && queryFiltersCovered(uncoveredQuery)) { asyncCount = true; asyncCountFuture = THREAD_POOL.submit(() -> { StopWatch stopWatch = StopWatch.createStarted(); @@ -120,10 +115,10 @@ protected Object getOrIterator(Query query, QueryOptions inputOptions, boolean i int batchSize = inputOptions.getInt("multiIteratorBatchSize", 200); if (iterator) { // SampleIndex iterator will be closed when closing the variants iterator - return dbAdaptor.iterator(variants, query, inputOptions, batchSize); + return dbAdaptor.iterator(variants, uncoveredQuery, inputOptions, batchSize); } else { - int skip = getSkip(inputOptions); - int limit = getLimit(inputOptions); + int skip = variantQuery.getSkip(); + int limit = variantQuery.getLimitOr(-1); int samplingSize = asyncCount ? 0 : getSamplingSize(inputOptions, DEFAULT_SAMPLING_SIZE, iterator); int tmpLimit = Math.max(limit, samplingSize); @@ -139,9 +134,8 @@ protected Object getOrIterator(Query query, QueryOptions inputOptions, boolean i public void close() throws Exception { // Do not close this iterator! We'll need to keep iterating to get the approximate count } - }, query, options, batchSize); - VariantQueryResult result = - addSamplesMetadataIfRequested(variantDBIterator.toDataResult(), query, options, getMetadataManager()); + }, uncoveredQuery, options, batchSize); + VariantQueryResult result = variantDBIterator.toDataResult(variantQuery); if (result.getNumResults() < tmpLimit) { // Not an approximate count! @@ -162,7 +156,7 @@ public void close() throws Exception { inputOptions.get(QueryOptions.COUNT)); numTotalResultsOptions.put(VariantStorageOptions.APPROXIMATE_COUNT.key(), inputOptions.get(VariantStorageOptions.APPROXIMATE_COUNT.key())); - setNumTotalResults(variantDBIterator, variants, result, sampleIndexQuery, query, numTotalResultsOptions); + setNumTotalResults(variantDBIterator, variants, result, sampleIndexQuery, uncoveredQuery, numTotalResultsOptions); } // Ensure limit diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SampleIndexQuery.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SampleIndexQuery.java index 664ace07747..4a4803ff6a4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SampleIndexQuery.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SampleIndexQuery.java @@ -4,6 +4,7 @@ import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantType; +import org.opencb.commons.datastore.core.Query; import org.opencb.opencga.storage.core.variant.query.Values; import org.opencb.opencga.storage.hadoop.variant.index.family.GenotypeCodec; import org.opencb.opencga.storage.hadoop.variant.index.sample.SampleIndexSchema; @@ -49,6 +50,8 @@ public class SampleIndexQuery { private final Set mendelianErrorSet; private final MendelianErrorType mendelianErrorType; private final boolean includeParentColumns; + + private final Query uncoveredQuery; private final QueryOperation queryOperation; public enum MendelianErrorType { @@ -73,6 +76,7 @@ public SampleIndexQuery(Collection locusQueries, SampleIndexQuery qu this.mendelianErrorSet = query.mendelianErrorSet; this.mendelianErrorType = query.mendelianErrorType; this.includeParentColumns = query.includeParentColumns; + this.uncoveredQuery = query.uncoveredQuery; this.queryOperation = query.queryOperation; } @@ -83,7 +87,7 @@ public SampleIndexQuery(SampleIndexSchema schema, Collection locusQu Map> fileFilterMap, SampleAnnotationIndexQuery annotationIndexQuery, Set mendelianErrorSet, MendelianErrorType mendelianErrorType, boolean includeParentColumns, - QueryOperation queryOperation) { + QueryOperation queryOperation, Query uncoveredQuery) { this.schema = schema; this.locusQueries = locusQueries; this.extendedFilteringRegion = extendedFilteringRegion; @@ -100,6 +104,7 @@ public SampleIndexQuery(SampleIndexSchema schema, Collection locusQu this.mendelianErrorType = mendelianErrorType; this.includeParentColumns = includeParentColumns; this.queryOperation = queryOperation; + this.uncoveredQuery = uncoveredQuery; } public SampleIndexSchema getSchema() { @@ -227,6 +232,10 @@ public boolean isIncludeParentColumns() { return includeParentColumns; } + public Query getUncoveredQuery() { + return uncoveredQuery; + } + public QueryOperation getQueryOperation() { return queryOperation; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SingleSampleIndexQuery.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SingleSampleIndexQuery.java index 35a9e67e718..51f44824872 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SingleSampleIndexQuery.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/query/SingleSampleIndexQuery.java @@ -36,7 +36,8 @@ protected SingleSampleIndexQuery(SampleIndexQuery query, String sample, List findParents(Set childrenSet, Map> parentsMap) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/io/VariantExporterDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/io/VariantExporterDriver.java index 196ab0e1689..aa342c10a92 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/io/VariantExporterDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/io/VariantExporterDriver.java @@ -33,6 +33,7 @@ import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.AbstractVariantsTableDriver; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHBaseQueryParser; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantSqlQueryParser; import org.opencb.opencga.storage.hadoop.variant.index.sample.SampleIndexDBAdaptor; @@ -188,7 +189,7 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws VariantMapReduceUtil.setNoneReduce(job); } - VariantQueryParser variantQueryParser = new VariantQueryParser(null, getMetadataManager()); + VariantQueryParser variantQueryParser = new HadoopVariantQueryParser(null, getMetadataManager()); ParsedVariantQuery variantQuery = variantQueryParser.parseQuery(query, options); Query query = variantQuery.getQuery(); if (VariantHBaseQueryParser.isSupportedQuery(query)) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/VariantMapReduceUtil.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/VariantMapReduceUtil.java index 623deec75da..367196742db 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/VariantMapReduceUtil.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/VariantMapReduceUtil.java @@ -29,11 +29,11 @@ import org.opencb.opencga.core.config.storage.SampleIndexConfiguration; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; -import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.hadoop.utils.AbstractHBaseDriver; import org.opencb.opencga.storage.hadoop.variant.AbstractVariantsTableDriver; import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHBaseQueryParser; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; @@ -153,7 +153,7 @@ public static void initTableMapperJobFromPhoenix(Job job, String variantTable, S public static void initVariantMapperJob(Job job, Class mapperClass, String variantTable, VariantStorageMetadataManager metadataManager, Query query, QueryOptions queryOptions, boolean skipSampleIndex) throws IOException { - query = new VariantQueryParser(null, metadataManager).preProcessQuery(query, queryOptions); + query = new HadoopVariantQueryParser(null, metadataManager).preProcessQuery(query, queryOptions); setQuery(job, query); setQueryOptions(job, queryOptions); @@ -266,7 +266,7 @@ public static void initVariantRowMapperJob(Job job, Class mapperClass, String variantTable, VariantStorageMetadataManager metadataManager, Query query, QueryOptions queryOptions, boolean skipSampleIndex) throws IOException { - query = new VariantQueryParser(null, metadataManager).preProcessQuery(query, queryOptions); + query = new HadoopVariantQueryParser(null, metadataManager).preProcessQuery(query, queryOptions); setQuery(job, query); setQueryOptions(job, queryOptions); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java index b1bd9d84879..09bbce14acd 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java @@ -7,8 +7,7 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.api.ParamConstants; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.variant.VariantStorageEngineSVTest; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorMultiFileTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorMultiFileTest.java index be47dd08890..bebcb5ce4da 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorMultiFileTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorMultiFileTest.java @@ -10,8 +10,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.api.ParamConstants; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorNativeTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorNativeTest.java index 7d6b6f19ba5..e03253739d3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorNativeTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HadoopVariantDBAdaptorNativeTest.java @@ -9,7 +9,7 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java index 3ae2a36bfbc..a2e6699180d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java @@ -18,7 +18,7 @@ import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.models.operations.variant.VariantAggregateFamilyParams; import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexTest.java index ccafd14be63..f67d5734d7c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexTest.java @@ -16,7 +16,7 @@ import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.models.operations.variant.VariantAggregateFamilyParams; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.storage.core.metadata.models.Trio; import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDBAdaptorTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDBAdaptorTest.java index 03e8b3cd4fb..a46a3a5c99b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDBAdaptorTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDBAdaptorTest.java @@ -45,7 +45,7 @@ public void testSampleIdFF() throws Exception { SampleIndexQuery query = new SampleIndexQuery(SampleIndexSchema.defaultSampleIndexSchema(), Collections.emptyList(), 0, null, "ST", Collections.singletonMap(sampleName, Collections.singletonList("0/1")), Collections.emptySet(), null, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap(), new SampleAnnotationIndexQuery(SampleIndexSchema.defaultSampleIndexSchema()), - Collections.emptySet(), null, false, VariantQueryUtils.QueryOperation.AND); + Collections.emptySet(), null, false, VariantQueryUtils.QueryOperation.AND, null); new SampleIndexDBAdaptor(new HBaseManager(new Configuration()), null, metadataManager).parse(query.forSample(sampleName), null); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDuplicatedVariantsTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDuplicatedVariantsTest.java index 6a9c35eb0da..be83e365bed 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDuplicatedVariantsTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDuplicatedVariantsTest.java @@ -63,7 +63,7 @@ public void test2FilesSampleIndex() throws Exception { SampleIndexOnlyVariantQueryExecutor queryExecutor = new SampleIndexOnlyVariantQueryExecutor(dbAdaptor, sampleIndexDBAdaptor, "", new ObjectMap()); List expectedVariants = new ArrayList<>(); - queryExecutor.iterator(new VariantQuery().sample("s1"), new QueryOptions()).forEachRemaining(expectedVariants::add); + queryExecutor.iterator(variantStorageEngine.parseQuery(new VariantQuery().sample("s1"), new QueryOptions())).forEachRemaining(expectedVariants::add); int studyId = engine.getMetadataManager().getStudyId(STUDY_NAME); String actualSampleIndexTableName = sampleIndexDBAdaptor.getSampleIndexTableNameLatest(studyId); @@ -81,7 +81,7 @@ public void test2FilesSampleIndex() throws Exception { VariantHbaseTestUtils.printVariants(dbAdaptor, newOutputUri()); List actualVariants = new ArrayList<>(); - queryExecutor.iterator(new VariantQuery().sample("s1"), new QueryOptions()).forEachRemaining(actualVariants::add); + queryExecutor.iterator(variantStorageEngine.parseQuery(new VariantQuery().sample("s1"), new QueryOptions())).forEachRemaining(actualVariants::add); Assert.assertEquals(expectedVariants, actualVariants); @@ -105,7 +105,7 @@ public void test3FilesSampleIndex() throws Exception { SampleIndexOnlyVariantQueryExecutor queryExecutor = new SampleIndexOnlyVariantQueryExecutor(dbAdaptor, sampleIndexDBAdaptor, "", new ObjectMap()); List expectedVariants = new ArrayList<>(); - queryExecutor.iterator(new VariantQuery().sample("s1"), new QueryOptions()).forEachRemaining(expectedVariants::add); + queryExecutor.iterator(variantStorageEngine.parseQuery(new VariantQuery().sample("s1"), new QueryOptions())).forEachRemaining(expectedVariants::add); int studyId = engine.getMetadataManager().getStudyId(STUDY_NAME); String actualSampleIndexTableName = sampleIndexDBAdaptor.getSampleIndexTableNameLatest(studyId); @@ -123,7 +123,7 @@ public void test3FilesSampleIndex() throws Exception { VariantHbaseTestUtils.printVariants(dbAdaptor, newOutputUri()); List actualVariants = new ArrayList<>(); - queryExecutor.iterator(new VariantQuery().sample("s1"), new QueryOptions()).forEachRemaining(actualVariants::add); + queryExecutor.iterator(variantStorageEngine.parseQuery(new VariantQuery().sample("s1"), new QueryOptions())).forEachRemaining(actualVariants::add); Assert.assertEquals(expectedVariants, actualVariants); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexEntryFilterTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexEntryFilterTest.java index f4989f9ff79..76cc13feeb9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexEntryFilterTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexEntryFilterTest.java @@ -279,7 +279,7 @@ private SingleSampleIndexQuery getSingleSampleIndexQuery(SampleAnnotationIndexQu private SingleSampleIndexQuery getSingleSampleIndexQuery(SampleAnnotationIndexQuery annotationIndexQuery, Map> fileFilterMap) { return new SampleIndexQuery( - schema, Collections.emptyList(), 0, null, "study", Collections.singletonMap("S1", Arrays.asList("0/1", "1/1")), Collections.emptySet(), null, Collections.emptyMap(), Collections.emptyMap(), fileFilterMap, annotationIndexQuery, Collections.emptySet(), null, false, VariantQueryUtils.QueryOperation.AND) + schema, Collections.emptyList(), 0, null, "study", Collections.singletonMap("S1", Arrays.asList("0/1", "1/1")), Collections.emptySet(), null, Collections.emptyMap(), Collections.emptyMap(), fileFilterMap, annotationIndexQuery, Collections.emptySet(), null, false, VariantQueryUtils.QueryOperation.AND, null) .forSample("S1"); } } \ No newline at end of file diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java index 0eafe0ca875..7ae4e36f3ec 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java @@ -26,8 +26,8 @@ import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.dummy.DummyVariantStorageMetadataDBAdaptorFactory; import org.opencb.opencga.storage.core.variant.query.Values; -import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; +import org.opencb.opencga.storage.hadoop.variant.HadoopVariantQueryParser; import org.opencb.opencga.storage.hadoop.variant.index.annotation.AnnotationIndexConverter; import org.opencb.opencga.storage.hadoop.variant.index.core.IndexField; import org.opencb.opencga.storage.hadoop.variant.index.core.RangeIndexField; @@ -127,7 +127,7 @@ public void setUp() throws Exception { } private SampleIndexQuery parse(final Query query) { - Query newQuery = new VariantQueryParser(null, mm).preProcessQuery(query, new QueryOptions()); + Query newQuery = new HadoopVariantQueryParser(null, mm).preProcessQuery(query, new QueryOptions()); query.clear(); query.putAll(newQuery); return sampleIndexQueryParser.parse(query); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java index 922c2648f4d..1ee4944733e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java @@ -26,7 +26,7 @@ import org.opencb.opencga.core.config.storage.IndexFieldConfiguration; import org.opencb.opencga.core.config.storage.SampleIndexConfiguration; import org.opencb.opencga.core.models.variant.VariantAnnotationConstants; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; @@ -463,26 +463,26 @@ public void testLocusQueryOverlap() throws Exception { VariantQuery query = new VariantQuery().study(STUDY_NAME_5).sample("NA19600"); // System.out.println("query = " + query.toJson()); List variants = sampleIndexDBAdaptor.iterator(new Query(query), new QueryOptions()) - .toDataResult().getResults(); + .toList(); assertEquals(2, variants.size()); query.region("1:2000200-5500000"); // System.out.println("query = " + query.toJson()); variants = sampleIndexDBAdaptor.iterator(new Query(query), new QueryOptions()) - .toDataResult().getResults(); + .toList(); assertEquals(2, variants.size()); query.region("1:200-2500000"); // System.out.println("query = " + query.toJson()); variants = sampleIndexDBAdaptor.iterator(new Query(query), new QueryOptions()) - .toDataResult().getResults(); + .toList(); assertEquals(1, variants.size()); assertEquals("1:1000001-4000000:-:", variants.get(0).toString()); query.region("1:2000200-2500000"); // System.out.println("query = " + query.toJson()); variants = sampleIndexDBAdaptor.iterator(new Query(query), new QueryOptions()) - .toDataResult().getResults(); + .toList(); assertEquals(1, variants.size()); assertEquals("1:1000001-4000000:-:", variants.get(0).toString()); } @@ -668,10 +668,10 @@ public SampleIndexQuery testQueryIndex(Query testQuery, Query query, boolean sam SampleIndexQuery indexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(sampleIndexVariantQuery); // int onlyIndex = (int) ((HadoopVariantStorageEngine) variantStorageEngine).getSampleIndexDBAdaptor() // .count(indexQuery, "NA19600"); - DataResult result = ((HadoopVariantStorageEngine) variantStorageEngine).getSampleIndexDBAdaptor() - .iterator(indexQuery).toDataResult(); + List result = ((HadoopVariantStorageEngine) variantStorageEngine).getSampleIndexDBAdaptor() + .iterator(indexQuery).toList(); // System.out.println("result.getResults() = " + result.getResults()); - List onlyIndex = result.getResults().stream().map(Variant::toString).sorted().collect(toList()); + List onlyIndex = result.stream().map(Variant::toString).sorted().collect(toList()); // Query SampleIndex+DBAdaptor System.out.println("#Query SampleIndex+DBAdaptor"); @@ -815,7 +815,7 @@ public void testCount() throws StorageEngineException { System.out.println("Count = " + actualCount); stopWatch = StopWatch.createStarted(); - long actualCountIterator = sampleIndexDBAdaptor.iterator(sampleIndexDBAdaptor.parseSampleIndexQuery(new Query(query))).toDataResult().getNumResults(); + long actualCountIterator = sampleIndexDBAdaptor.iterator(sampleIndexDBAdaptor.parseSampleIndexQuery(new Query(query))).toList().size(); System.out.println("---"); System.out.println("Count indexTable iterator " + stopWatch.getTime(TimeUnit.MILLISECONDS) / 1000.0); System.out.println("Count = " + actualCountIterator); @@ -1179,24 +1179,24 @@ private void testSampleIndexOnlyVariantQueryExecutor(VariantQuery query, QueryOp private void testSampleIndexOnlyVariantQueryExecutor(VariantQuery query, QueryOptions options, Class expected, Function mapper) { - VariantQueryExecutor variantQueryExecutor = variantStorageEngine.getVariantQueryExecutor( - query, - options); + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); + + VariantQueryExecutor variantQueryExecutor = variantStorageEngine.getVariantQueryExecutor(variantQuery); assertEquals(expected, variantQueryExecutor.getClass()); - ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); List expectedVariants = new ArrayList<>(1000); - dbAdaptor.iterator(variantQuery, new QueryOptions(options)) + dbAdaptor.iterator(variantQuery) .forEachRemaining(expectedVariants::add); List actualVariants = new ArrayList<>(1000); - variantQueryExecutor.iterator(variantQuery.getQuery(), options) + variantQueryExecutor.iterator(variantStorageEngine.parseQuery(variantQuery.getQuery(), options)) .forEachRemaining(actualVariants::add); - VariantQueryResult result = variantQueryExecutor.get(variantQuery.getQuery(), new QueryOptions(options) + ParsedVariantQuery limitedQuery = variantStorageEngine.parseQuery(variantQuery.getQuery(), new QueryOptions(options) .append(QueryOptions.LIMIT, 10) .append(QueryOptions.COUNT, true)); + VariantQueryResult result = variantQueryExecutor.get(limitedQuery); assertEquals(10, result.getNumResults()); assertEquals(10, result.getResults().size()); long count = result.getNumMatches(); diff --git a/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/VariantRestWebService.java b/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/VariantRestWebService.java index 00832a76dd9..c6292d4f2f1 100644 --- a/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/VariantRestWebService.java +++ b/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/VariantRestWebService.java @@ -20,7 +20,7 @@ import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StorageEngineFactory; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; From 2721cba65bea90ec8b34713c61ec963e94aae87b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 16 Apr 2024 15:31:40 +0100 Subject: [PATCH 259/354] storage: Add an event when returning invalid/outdated stats #TASK-5876 --- .../variant/query/ParsedVariantQuery.java | 12 ++++++ .../variant/query/VariantQueryResult.java | 31 ++++++++++----- .../projection/VariantQueryProjection.java | 11 ++++++ .../VariantQueryProjectionParser.java | 8 +++- .../stats/VariantStatisticsManagerTest.java | 39 ++++++++++++++++++- 5 files changed, 90 insertions(+), 11 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java index 586985a8d45..432ec90fb12 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java @@ -2,6 +2,7 @@ import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.Variant; +import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; @@ -24,6 +25,8 @@ public class ParsedVariantQuery { private Query query; private boolean optimized = false; + private List events = new ArrayList<>(); + private VariantQueryProjection projection; private final VariantStudyQuery studyQuery; @@ -96,6 +99,15 @@ public ParsedVariantQuery setOptimized(boolean optimized) { return this; } + public List getEvents() { + return events; + } + + public ParsedVariantQuery setEvents(List events) { + this.events = events; + return this; + } + public VariantQueryProjection getProjection() { return projection; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java index 79645987303..b1e6b13e8c5 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java @@ -24,6 +24,7 @@ import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ public VariantQueryResult(long time, int numResults, long numMatches, List) this, variantQuery); + addSamplesMetadataIfRequested(variantQuery); } } @@ -96,7 +97,7 @@ private VariantQueryResult(DataResult dataResult, List results) { public VariantQueryResult(DataResult dataResult, ParsedVariantQuery variantQuery) { this(dataResult, dataResult.getResults()); if (variantQuery != null) { - addSamplesMetadataIfRequested((VariantQueryResult) this, variantQuery); + addSamplesMetadataIfRequested(variantQuery); } } @@ -127,9 +128,22 @@ public VariantQueryResult(DataResult dataResult) { this(dataResult, (ParsedVariantQuery) null); } - private static VariantQueryResult addSamplesMetadataIfRequested(VariantQueryResult result, ParsedVariantQuery query) { + private void addSamplesMetadataIfRequested(ParsedVariantQuery query) { VariantQueryProjection projection = query.getProjection(); + if (!query.getEvents().isEmpty()) { + if (getEvents() == null) { + setEvents(new ArrayList<>()); + } + getEvents().addAll(query.getEvents()); + } + if (!projection.getEvents().isEmpty()) { + if (getEvents() == null) { + setEvents(new ArrayList<>()); + } + getEvents().addAll(projection.getEvents()); + } + int numTotalSamples = projection.getNumTotalSamples(); int numSamples = projection.getNumSamples(); if (query.getInputQuery().getBoolean(SAMPLE_METADATA.key(), false)) { @@ -139,15 +153,14 @@ private static VariantQueryResult addSamplesMetadataIfRequested(VariantQu VariantQueryProjectionParser.skipAndLimitSamples(query.getQuery(), samplesMetadata); numSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); } - return result.setNumSamples(numSamples) - .setNumTotalSamples(numTotalSamples) - .setSamples(samplesMetadata); + setNumSamples(numSamples); + setNumTotalSamples(numTotalSamples); + setSamples(samplesMetadata); } else { if (numTotalSamples >= 0 && numSamples >= 0) { - return result.setNumSamples(numSamples) - .setNumTotalSamples(numTotalSamples); + setNumSamples(numSamples); + setNumTotalSamples(numTotalSamples); } - return result; } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java index 16b974ee57e..a31d810fffc 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjection.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.core.variant.query.projection; import com.google.common.collect.Iterables; +import org.opencb.commons.datastore.core.Event; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; @@ -21,6 +22,7 @@ public final class VariantQueryProjection { private final int numSamples; private final int numTotalSamples; + private List events = new ArrayList<>(); public VariantQueryProjection(StudyMetadata studyMetadata, List samples, List files) { this.fields = VariantField.getIncludeFields(null); @@ -86,6 +88,15 @@ public Map> getFiles() { return studies.values().stream().collect(Collectors.toMap(s -> s.studyMetadata.getId(), s -> s.files)); } + public List getEvents() { + return events; + } + + public VariantQueryProjection setEvents(List events) { + this.events = events; + return this; + } + public static class StudyVariantQueryProjection { private StudyMetadata studyMetadata; private List samples = Collections.emptyList(); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 4ec7f2ec158..9c237a9493d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.core.variant.query.projection; import org.apache.commons.collections4.CollectionUtils; +import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -53,6 +54,7 @@ public static VariantQueryProjection parseVariantQueryFields( public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOptions options) { Set includeFields = VariantField.getIncludeFields(options); + List events = new ArrayList<>(); List includeStudies = getIncludeStudies(query, options, metadataManager, includeFields); Map studies = new HashMap<>(includeStudies.size()); @@ -133,12 +135,16 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti List cohorts = new LinkedList<>(); for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { cohorts.add(cohort.getId()); + if (cohort.isInvalid()) { + events.add(new Event(Event.Type.WARNING, "Cohort '" + cohort.getName() + "' has outdated variant stats")); + } } study.setCohorts(cohorts); } } - return new VariantQueryProjection(includeFields, studies, numTotalSamples != numSamples, numSamples, numTotalSamples); + return new VariantQueryProjection(includeFields, studies, numTotalSamples != numSamples, numSamples, numTotalSamples) + .setEvents(events); } public static void skipAndLimitSamples(Query query, Map> sampleIds) { diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java index 5fb147d6d9e..f9b0faa97f8 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java @@ -27,8 +27,8 @@ import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.biodata.tools.variant.stats.VariantStatsCalculator; import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; @@ -39,6 +39,7 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import java.io.IOException; import java.net.URI; @@ -112,6 +113,42 @@ public void calculateStatsMultiCohortsTest() throws Exception { checkCohorts(dbAdaptor, studyMetadata); } + @Test + public void queryInvalidStats() throws Exception { + //Calculate stats for 2 cohorts at one time + checkCohorts(dbAdaptor, studyMetadata); + + QueryOptions options = new QueryOptions(); + options.put(VariantStorageOptions.LOAD_BATCH_SIZE.key(), 100); + Iterator iterator = metadataManager.sampleMetadataIterator(studyMetadata.getId()); + + /** Create cohorts **/ + HashSet cohort1 = new HashSet<>(); + cohort1.add(iterator.next().getName()); + cohort1.add(iterator.next().getName()); + + HashSet cohort2 = new HashSet<>(); + cohort2.add(iterator.next().getName()); + cohort2.add(iterator.next().getName()); + + Map> cohorts = new HashMap<>(); + cohorts.put("cohort1", cohort1); + cohorts.put("cohort2", cohort2); + + //Calculate stats + stats(options, studyMetadata.getName(), cohorts, outputUri.resolve("cohort1.cohort2.stats")); + + checkCohorts(dbAdaptor, studyMetadata); + + List cohort1Samples = metadataManager.getCohortMetadata(studyMetadata.getId(), "cohort1").getSamples(); + CohortMetadata cohort = metadataManager.addSamplesToCohort(studyMetadata.getId(), "cohort2", cohort1Samples); + assertTrue(cohort.isInvalid()); + + VariantQueryResult result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(1, result.getEvents().size()); + assertEquals("Cohort 'cohort2' has outdated variant stats", result.getEvents().get(0).getMessage()); + } + @Test public void calculateStatsSeparatedCohortsTest() throws Exception { //Calculate stats for 2 cohorts separately From 789c35ff12b26137460df0ee6445be256bd0142f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 17 Apr 2024 10:58:31 +0100 Subject: [PATCH 260/354] storage: Fix sampleSkip and sampleLimit. #TASK-5876 --- .../core/variant/adaptors/VariantQuery.java | 20 ++++--- .../variant/query/ParsedVariantQuery.java | 13 +++-- .../variant/query/VariantQueryParser.java | 56 +++++++++++-------- .../variant/query/VariantQueryResult.java | 36 ++++-------- .../VariantQueryProjectionParser.java | 9 +-- .../VariantDBAdaptorMultiFileTest.java | 10 ++-- .../variant/adaptors/VariantQueryTest.java | 6 ++ .../variant/HadoopVariantQueryParser.java | 5 +- .../variant/HadoopVariantStorageEngine.java | 5 +- .../adaptors/VariantHadoopDBAdaptor.java | 6 ++ 10 files changed, 88 insertions(+), 78 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java index 59f439897a5..9885536e2b3 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQuery.java @@ -216,20 +216,24 @@ public boolean includeGenotype() { return getBoolean(VariantQueryParam.INCLUDE_GENOTYPE.key()); } - public VariantQuery sampleLimit(String value) { + public VariantQuery sampleLimit(int value) { put(VariantQueryParam.SAMPLE_LIMIT.key(), value); return this; } - public String sampleLimit() { - return getString(VariantQueryParam.SAMPLE_LIMIT.key()); + public int sampleLimit() { + return getInt(VariantQueryParam.SAMPLE_LIMIT.key()); } public VariantQuery sampleSkip(String value) { put(VariantQueryParam.SAMPLE_SKIP.key(), value); return this; } - public String sampleSkip() { - return getString(VariantQueryParam.SAMPLE_SKIP.key()); + public VariantQuery sampleSkip(int value) { + put(VariantQueryParam.SAMPLE_SKIP.key(), value); + return this; + } + public int sampleSkip() { + return getInt(VariantQueryParam.SAMPLE_SKIP.key()); } public VariantQuery file(String value) { @@ -627,12 +631,12 @@ public VariantQuery release(String value) { put(VariantQueryParam.RELEASE.key(), value); return this; } - public VariantQuery release(int value) { + public VariantQuery release(Integer value) { put(VariantQueryParam.RELEASE.key(), value); return this; } - public String release() { - return getString(VariantQueryParam.RELEASE.key()); + public Integer release() { + return getInt(VariantQueryParam.RELEASE.key()); } @Override diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java index 432ec90fb12..93e63e074d7 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java @@ -8,6 +8,7 @@ import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyResourceMetadata; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; @@ -22,7 +23,7 @@ public class ParsedVariantQuery { private Query inputQuery; private QueryOptions inputOptions; - private Query query; + private VariantQuery query; private boolean optimized = false; private List events = new ArrayList<>(); @@ -44,21 +45,21 @@ public class ParsedVariantQuery { public ParsedVariantQuery() { this.inputQuery = new Query(); this.inputOptions = new QueryOptions(); - this.query = new Query(); + this.query = new VariantQuery(); studyQuery = new VariantStudyQuery(); } public ParsedVariantQuery(Query inputQuery, QueryOptions inputOptions) { this.inputQuery = inputQuery; this.inputOptions = inputOptions; - this.query = inputQuery; + this.query = new VariantQuery(inputQuery); studyQuery = new VariantStudyQuery(); } public ParsedVariantQuery(ParsedVariantQuery other) { this.inputQuery = new Query(other.inputQuery); this.inputOptions = new QueryOptions(other.inputOptions); - this.query = new Query(other.query); + this.query = new VariantQuery(other.query); this.projection = other.projection; this.studyQuery = new VariantStudyQuery(other.getStudyQuery()); this.optimized = other.optimized; @@ -81,11 +82,11 @@ public ParsedVariantQuery setInputQuery(Query inputQuery) { return this; } - public Query getQuery() { + public VariantQuery getQuery() { return query; } - public ParsedVariantQuery setQuery(Query query) { + public ParsedVariantQuery setQuery(VariantQuery query) { this.query = query; return this; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index aa07aaf3687..ec8b67faaa4 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -21,6 +21,7 @@ import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; @@ -149,15 +150,15 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options) { return parseQuery(query, options, false); } - public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean skipPreProcess) { - if (query == null) { - query = new Query(); + public ParsedVariantQuery parseQuery(Query inputQuery, QueryOptions options, boolean skipPreProcess) { + if (inputQuery == null) { + inputQuery = new Query(); } if (options == null) { options = new QueryOptions(); } - ParsedVariantQuery variantQuery = new ParsedVariantQuery(new Query(query), new QueryOptions(options)); + ParsedVariantQuery variantQuery = new ParsedVariantQuery(new Query(inputQuery), new QueryOptions(options)); int limit = options.getInt(QueryOptions.LIMIT, -1); variantQuery.setLimit(limit == -1 ? null : limit); variantQuery.setSkip(options.getInt(QueryOptions.SKIP, 0)); @@ -166,15 +167,19 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.defaultValue())); + variantQuery.setProjection(projectionParser.parseVariantQueryProjection(inputQuery, options)); + + VariantQuery query; if (!skipPreProcess) { - query = preProcessQuery(query, options); + query = new VariantQuery(preProcessQuery(inputQuery, options, variantQuery.getProjection())); + } else { + query = new VariantQuery(inputQuery); } variantQuery.setQuery(query); - variantQuery.setProjection(projectionParser.parseVariantQueryProjection(query, options)); List geneRegions = Region.parseRegions(query.getString(ANNOT_GENE_REGIONS.key())); variantQuery.setGeneRegions(geneRegions == null ? Collections.emptyList() : geneRegions); - List regions = Region.parseRegions(query.getString(REGION.key()), true); + List regions = Region.parseRegions(query.region(), true); variantQuery.setRegions(regions == null ? Collections.emptyList() : regions); variantQuery.setClinicalCombination(VariantQueryParser.parseClinicalCombination(query, false)); variantQuery.setClinicalCombinationList(VariantQueryParser.parseClinicalCombinationsList(query, false)); @@ -188,7 +193,7 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean } if (isValidParam(query, GENOTYPE)) { HashMap> map = new HashMap<>(); - QueryOperation op = VariantQueryUtils.parseGenotypeFilter(query.getString(GENOTYPE.key()), map); + QueryOperation op = VariantQueryUtils.parseGenotypeFilter(query.genotype(), map); if (defaultStudy == null) { List studyNames = metadataManager.getStudyNames(); @@ -224,13 +229,17 @@ public ParsedVariantQuery parseQuery(Query query, QueryOptions options, boolean return variantQuery; } - public Query preProcessQuery(Query originalQuery, QueryOptions options) { + public final Query preProcessQuery(Query originalQuery, QueryOptions options) { + return preProcessQuery(originalQuery, options, null); + } + + protected Query preProcessQuery(Query originalQuery, QueryOptions options, VariantQueryProjection projection) { // Copy input query! Do not modify original query! Query query = VariantQueryUtils.copy(originalQuery); preProcessAnnotationParams(query); - preProcessStudyParams(query, options); + preProcessStudyParams(query, options, projection); if (options != null && options.getLong(QueryOptions.LIMIT) < 0) { throw VariantQueryException.malformedParam(QueryOptions.LIMIT, options.getString(QueryOptions.LIMIT), @@ -376,7 +385,7 @@ private VariantType parseVariantType(String type) { } } - protected void preProcessStudyParams(Query query, QueryOptions options) { + protected void preProcessStudyParams(Query query, QueryOptions options, VariantQueryProjection projection) { StudyMetadata defaultStudy = getDefaultStudy(query); QueryOperation formatOperator = null; if (isValidParam(query, SAMPLE_DATA)) { @@ -676,22 +685,23 @@ protected void preProcessStudyParams(Query query, QueryOptions options) { if (!isValidParam(query, INCLUDE_STUDY) || !isValidParam(query, INCLUDE_SAMPLE) || !isValidParam(query, INCLUDE_FILE) - || !isValidParam(query, SAMPLE_SKIP) - || !isValidParam(query, SAMPLE_LIMIT) + || isValidParam(query, SAMPLE_SKIP) + || isValidParam(query, SAMPLE_LIMIT) ) { - VariantQueryProjection selectVariantElements = - VariantQueryProjectionParser.parseVariantQueryFields(query, options, metadataManager); + if (projection == null) { + projection = projectionParser.parseVariantQueryProjection(query, options); + } // Apply the sample pagination. // Remove the sampleLimit and sampleSkip to avoid applying the pagination twice query.remove(SAMPLE_SKIP.key()); query.remove(SAMPLE_LIMIT.key()); - query.put(NUM_TOTAL_SAMPLES.key(), selectVariantElements.getNumTotalSamples()); - query.put(NUM_SAMPLES.key(), selectVariantElements.getNumSamples()); + query.put(NUM_TOTAL_SAMPLES.key(), projection.getNumTotalSamples()); + query.put(NUM_SAMPLES.key(), projection.getNumSamples()); if (!isValidParam(query, INCLUDE_STUDY)) { List includeStudy = new ArrayList<>(); - for (Integer studyId : selectVariantElements.getStudyIds()) { - includeStudy.add(selectVariantElements.getStudy(studyId).getStudyMetadata().getName()); + for (Integer studyId : projection.getStudyIds()) { + includeStudy.add(projection.getStudy(studyId).getStudyMetadata().getName()); } if (includeStudy.isEmpty()) { query.put(INCLUDE_STUDY.key(), NONE); @@ -699,8 +709,8 @@ protected void preProcessStudyParams(Query query, QueryOptions options) { query.put(INCLUDE_STUDY.key(), includeStudy); } } - if (!isValidParam(query, INCLUDE_SAMPLE) || selectVariantElements.getSamplePagination()) { - List includeSample = selectVariantElements.getSampleNames().values() + if (!isValidParam(query, INCLUDE_SAMPLE) || projection.getSamplePagination()) { + List includeSample = projection.getSampleNames().values() .stream().flatMap(Collection::stream).collect(Collectors.toList()); if (includeSample.isEmpty()) { query.put(INCLUDE_SAMPLE.key(), NONE); @@ -708,8 +718,8 @@ protected void preProcessStudyParams(Query query, QueryOptions options) { query.put(INCLUDE_SAMPLE.key(), includeSample); } } - if (!isValidParam(query, INCLUDE_FILE) || selectVariantElements.getSamplePagination()) { - List includeFile = selectVariantElements.getFiles() + if (!isValidParam(query, INCLUDE_FILE) || projection.getSamplePagination()) { + List includeFile = projection.getFiles() .entrySet() .stream() .flatMap(e -> e.getValue() diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java index b1e6b13e8c5..f72cdf10058 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java @@ -22,14 +22,11 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; -import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjectionParser; import java.util.ArrayList; import java.util.List; import java.util.Map; -import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.SAMPLE_METADATA; - /** * Created on 07/02/17. * @@ -76,6 +73,9 @@ public VariantQueryResult(long time, int numResults, long numMatches, List()); + } if (variantQuery != null) { addSamplesMetadataIfRequested(variantQuery); } @@ -92,6 +92,9 @@ private VariantQueryResult(DataResult dataResult, List results) { dataResult.getAttributes()); setResults(results); setNumResults(results.size()); + if (getEvents() == null) { + setEvents(new ArrayList<>()); + } } public VariantQueryResult(DataResult dataResult, ParsedVariantQuery variantQuery) { @@ -132,36 +135,17 @@ private void addSamplesMetadataIfRequested(ParsedVariantQuery query) { VariantQueryProjection projection = query.getProjection(); if (!query.getEvents().isEmpty()) { - if (getEvents() == null) { - setEvents(new ArrayList<>()); - } getEvents().addAll(query.getEvents()); } if (!projection.getEvents().isEmpty()) { - if (getEvents() == null) { - setEvents(new ArrayList<>()); - } getEvents().addAll(projection.getEvents()); } - int numTotalSamples = projection.getNumTotalSamples(); - int numSamples = projection.getNumSamples(); - if (query.getInputQuery().getBoolean(SAMPLE_METADATA.key(), false)) { - Map> samplesMetadata = query.getProjection().getSampleNames(); - if (numTotalSamples < 0 && numSamples < 0) { - numTotalSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); - VariantQueryProjectionParser.skipAndLimitSamples(query.getQuery(), samplesMetadata); - numSamples = samplesMetadata.values().stream().mapToInt(List::size).sum(); - } - setNumSamples(numSamples); - setNumTotalSamples(numTotalSamples); - setSamples(samplesMetadata); - } else { - if (numTotalSamples >= 0 && numSamples >= 0) { - setNumSamples(numSamples); - setNumTotalSamples(numTotalSamples); - } + if (query.getQuery().sampleMetadata()) { + setSamples(query.getProjection().getSampleNames()); } + setNumSamples(projection.getNumSamples()); + setNumTotalSamples(projection.getNumTotalSamples()); } public Map> getSamples() { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 9c237a9493d..138d833e465 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -70,6 +70,10 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti } Map> sampleIdsMap = getIncludeSampleIds(query, options, includeStudies, metadataManager); + int numTotalSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); + skipAndLimitSamples(query, sampleIdsMap); + int numSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); + for (VariantQueryProjection.StudyVariantQueryProjection study : studies.values()) { List sampleIds = sampleIdsMap.get(study.getId()); study.setSamples(sampleIds); @@ -79,9 +83,6 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti } study.setSampleNames(sampleNames); } - int numTotalSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); - skipAndLimitSamples(query, sampleIdsMap); - int numSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); Map> fileIdsMap = getIncludeFiles(query, includeStudies, includeFields, metadataManager, sampleIdsMap); @@ -147,7 +148,7 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti .setEvents(events); } - public static void skipAndLimitSamples(Query query, Map> sampleIds) { + private void skipAndLimitSamples(Query query, Map> sampleIds) { if (VariantQueryUtils.isValidParam(query, VariantQueryParam.SAMPLE_SKIP)) { int skip = query.getInt(VariantQueryParam.SAMPLE_SKIP.key()); if (skip > 0) { diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java index f52790a19c1..2a1d859ea7b 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java @@ -10,6 +10,7 @@ import org.opencb.biodata.models.variant.avro.SampleEntry; import org.opencb.biodata.models.variant.stats.VariantStats; import org.opencb.commons.datastore.core.*; +import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -111,9 +112,8 @@ protected void load() throws Exception { } protected VariantQueryResult query(Query query, QueryOptions options) { - options = options == null ? QueryOptions.empty() : options; - query = variantStorageEngine.preProcessQuery(query, options); - return dbAdaptor.get(query, options); + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); + return dbAdaptor.get(variantQuery); } protected ObjectMap getOptions() { @@ -382,13 +382,13 @@ public void testSampleLimitSkip() throws Exception { System.out.println("samples(ALL) = " + result.getSamples()); for (int i : new int[]{1, 3, 6, 8, 10}) { - result = query(new Query(VariantQueryParam.SAMPLE_SKIP.key(), i).append(VariantQueryParam.INCLUDE_SAMPLE.key(), ALL).append(SAMPLE_METADATA.key(), true), options); + result = query(new VariantQuery().sampleSkip(i).includeSampleAll().sampleMetadata(true), options); // System.out.println("samples(SKIP=" + i + ") = " + result.getSamples()); assertEquals(Math.max(0, 8 - i), result.getSamples().values().stream().mapToInt(List::size).sum()); assertEquals(Math.max(0, 8 - i), result.getNumSamples().intValue()); assertEquals(8, result.getNumTotalSamples().intValue()); - result = query(new Query(VariantQueryParam.SAMPLE_LIMIT.key(), i).append(VariantQueryParam.INCLUDE_SAMPLE.key(), ALL).append(SAMPLE_METADATA.key(), true), options); + result = query(new VariantQuery().sampleLimit(i).includeSampleAll().sampleMetadata(true), options); // System.out.println("samples(LIMIT=" + i + ") = " + result.getSamples()); assertEquals(Math.min(8, i), result.getSamples().values().stream().mapToInt(List::size).sum()); assertEquals(Math.min(8, i), result.getNumSamples().intValue()); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryTest.java index de17c52a8a0..5cfdde4ca13 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryTest.java @@ -28,6 +28,12 @@ public void test() throws Exception { if (param.type() == QueryParam.Type.BOOLEAN || param.type() == QueryParam.Type.BOOLEAN_ARRAY) { methodSet = getMethodSafe(param.key(), boolean.class); expectedValue = true; + } else if (param.type() == QueryParam.Type.INTEGER || param.type() == QueryParam.Type.INTEGER_ARRAY) { + methodSet = getMethodSafe(param.key(), int.class); + expectedValue = 42; + if (methodSet == null) { + methodSet = getMethodSafe(param.key(), Integer.class); + } } else { expectedValue = RandomStringUtils.random(10); methodSet = getMethodSafe(param.key(), String.class); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java index 45682df31f4..6aa472ee735 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java @@ -5,6 +5,7 @@ import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; +import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import java.util.List; @@ -17,8 +18,8 @@ public HadoopVariantQueryParser(CellBaseUtils cellBaseUtils, VariantStorageMetad } @Override - public Query preProcessQuery(Query originalQuery, QueryOptions options) { - Query query = super.preProcessQuery(originalQuery, options); + protected Query preProcessQuery(Query originalQuery, QueryOptions options, VariantQueryProjection projection) { + Query query = super.preProcessQuery(originalQuery, options, projection); List studyNames = metadataManager.getStudyNames(); if (isValidParam(query, STUDY) && studyNames.size() == 1) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java index 8052ac5622c..d56798f0de9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java @@ -1029,10 +1029,7 @@ private synchronized HBaseManager getHBaseManager(Configuration configuration) { @Override public ParsedVariantQuery parseQuery(Query originalQuery, QueryOptions options) { try { - Query query = preProcessQuery(originalQuery, options); - ParsedVariantQuery parsedVariantQuery = getVariantQueryParser().parseQuery(query, options, true); - parsedVariantQuery.setInputQuery(originalQuery); - return parsedVariantQuery; + return getVariantQueryParser().parseQuery(originalQuery, options); } catch (StorageEngineException e) { throw VariantQueryException.internalException(e).setQuery(originalQuery); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java index 38b4d9c1718..d3c608c8b42 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHadoopDBAdaptor.java @@ -247,6 +247,12 @@ public VariantQueryResult get(ParsedVariantQuery query) { .setConvertTime(iterator.getTimeConverting(TimeUnit.MILLISECONDS)); } + @Override + @Deprecated + public VariantQueryResult get(Query query, QueryOptions options) { + return get(new HadoopVariantQueryParser(null, getMetadataManager()).parseQuery(query, options)); + } + @Override public VariantQueryResult getPhased(String variant, String studyName, String sampleName, QueryOptions options, int windowsSize) { From bde39d3e92dbde10a0706ee08b5621d4ef4cca2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 17 Apr 2024 13:46:37 +0100 Subject: [PATCH 261/354] storage: Fix error querying samples with deleted files. #TASK-5876 --- .../phoenix/VariantSqlQueryParser.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java index 2d5c66b6dd9..7750583e0b8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java @@ -125,8 +125,6 @@ public String parse(Query query, QueryOptions options) { public String parse(ParsedVariantQuery variantQuery, QueryOptions options) { Query query = variantQuery.getQuery(); - StringBuilder sb = new StringBuilder("SELECT "); - try { Set dynamicColumns = new HashSet<>(); @@ -145,21 +143,22 @@ public String parse(ParsedVariantQuery variantQuery, QueryOptions options) { hints.add(HintNode.Hint.valueOf(hint)); } } + + StringBuilder sb = new StringBuilder("SELECT "); if (!hints.isEmpty()) { sb.append("/*+ ").append(hints.stream().map(Object::toString).collect(Collectors.joining(","))).append(" */ "); } - appendProjectedColumns(sb, variantQuery.getProjection(), options); appendFromStatement(sb, dynamicColumns); appendWhereStatement(sb, regionFilters, filters); appendOrderby(options, sb); appendLimitSkip(options, sb); + return sb.toString(); } catch (VariantQueryException e) { e.setQuery(query); throw e; } - return sb.toString(); } private void appendOrderby(QueryOptions options, StringBuilder sb) { @@ -217,7 +216,6 @@ protected StringBuilder appendProjectedColumns(StringBuilder sb, VariantQueryPro return sb.append(" COUNT(*) "); } else { Set returnedFields = projection.getFields(); - Collection studyIds = projection.getStudyIds(); sb.append(VariantColumn.CHROMOSOME).append(',') .append(VariantColumn.POSITION).append(',') @@ -967,36 +965,38 @@ protected void addVariantFilters(ParsedVariantQuery variantQuery, QueryOptions o } boolean multiFileSample = VariantStorageEngine.SplitData.MULTI.equals(sampleMetadata.getSplitData()); List sampleFiles = new ArrayList<>(); + // First file does not have the fileID in the column name + Integer firstSampleFile = sampleMetadata.getFiles().get(0); + if (multiFileSample) { if (fileIds.isEmpty()) { - sampleFiles.add(null); // First file does not have the fileID in the column name List fileIdsFromSampleId = sampleMetadata.getFiles(); - sampleFiles.addAll(fileIdsFromSampleId.subList(1, fileIdsFromSampleId.size())); + sampleFiles.addAll(fileIdsFromSampleId); } else { for (Pair fileIdPair : fileIds) { if (fileIdPair.getKey().equals(studyId)) { - Integer fileId = fileIdPair.getValue(); - int idx = sampleMetadata.getFiles().indexOf(fileId); - if (idx == 0) { - sampleFiles.add(null); // First file does not have the fileID in the column name - } else if (idx > 0) { - sampleFiles.add(fileId); // First file does not have the fileID in the column name - } + sampleFiles.add(fileIdPair.getValue()); } } } } else { - sampleFiles.add(null); // First file does not have the fileID in the column name + // Non multi file sample + sampleFiles.add(firstSampleFile); } for (Integer sampleFile : sampleFiles) { + if (!metadataManager.isFileIndexed(studyId, sampleFile)) { + // Skip non indexed files + continue; + } List sampleFileGtFilters = new ArrayList<>(genotypes.size()); for (String genotype : genotypes) { if (negated) { genotype = removeNegation(genotype); } String key; - if (sampleFile == null) { + if (Objects.equals(sampleFile, firstSampleFile)) { + // Special scenario for the first file. Column name does not contain the fileId key = buildSampleColumnKey(studyId, sampleId, new StringBuilder()).toString(); } else { key = buildSampleColumnKey(studyId, sampleId, sampleFile, new StringBuilder()).toString(); From ab3c55ececa35cbff5a9e3ab6043f612faf8dc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 18 Apr 2024 10:47:21 +0100 Subject: [PATCH 262/354] storage: Fix exception modifying an emptyList() #TASK-5876 --- .../storage/core/variant/query/VariantQueryResult.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java index f72cdf10058..ee432deb3b7 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryResult.java @@ -24,6 +24,7 @@ import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -134,6 +135,10 @@ public VariantQueryResult(DataResult dataResult) { private void addSamplesMetadataIfRequested(ParsedVariantQuery query) { VariantQueryProjection projection = query.getProjection(); + // Ensure is modifiable + if (getEvents() == null || Collections.emptyList().getClass().equals(getEvents().getClass())) { + setEvents(new ArrayList<>()); + } if (!query.getEvents().isEmpty()) { getEvents().addAll(query.getEvents()); } From b10b5c7a33c35190adcd9c7fc0345e7c9cd50f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 18 Apr 2024 11:21:33 +0100 Subject: [PATCH 263/354] storage: Improve warning event. Add cohort samples diff. #TASK-5876 --- .../core/metadata/VariantStorageMetadataManager.java | 1 + .../storage/core/metadata/models/CohortMetadata.java | 1 + .../query/projection/VariantQueryProjectionParser.java | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index ce037e948dc..65812bd7017 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -1249,6 +1249,7 @@ private CohortMetadata updateCohortSamples(int studyId, String cohortName, Colle if (!oldSamples.equals(sampleIdsList) || !oldFiles.equals(fileIds)) { // Cohort has been modified! Invalidate stats cohort.setStatsStatus(TaskMetadata.Status.ERROR); + cohort.getAttributes().put(CohortMetadata.INVALID_STATS_NUM_SAMPLES, oldSamples.size()); } } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/CohortMetadata.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/CohortMetadata.java index 4814fc82b63..a4e9de4116e 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/CohortMetadata.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/CohortMetadata.java @@ -8,6 +8,7 @@ * @author Jacobo Coll <jacobo167@gmail.com> */ public class CohortMetadata extends StudyResourceMetadata { + public static final String INVALID_STATS_NUM_SAMPLES = "invalidStatsNumSamples"; // private int studyId; // private int id; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 138d833e465..90fe6464641 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -137,7 +137,14 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { cohorts.add(cohort.getId()); if (cohort.isInvalid()) { - events.add(new Event(Event.Type.WARNING, "Cohort '" + cohort.getName() + "' has outdated variant stats")); + String message = "Cohort '" + cohort.getName() + "' has outdated variant stats."; + int numSampmles = cohort.getSamples().size(); + int invalidStatsNumSamples = cohort.getAttributes().getInt(CohortMetadata.INVALID_STATS_NUM_SAMPLES, -1); + if (invalidStatsNumSamples > 0) { + message += " Existing stats are calculated with " + invalidStatsNumSamples + " samples, " + + "but the cohort currently has " + numSampmles + " samples."; + } + events.add(new Event(Event.Type.WARNING, message)); } } study.setCohorts(cohorts); From 4d20481e9e6976db8432bb8e059cc8860d0bc14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 18 Apr 2024 14:20:59 +0100 Subject: [PATCH 264/354] storage: Fix wrong columns at sample+file sql query build. #TASK-5876 --- .../core/variant/query/VariantQueryUtils.java | 7 ++++ .../VariantQueryProjectionParser.java | 8 ++-- .../stats/VariantStatisticsManagerTest.java | 4 +- .../phoenix/VariantSqlQueryParser.java | 40 +++++++++---------- .../variant/index/sample/SampleIndexTest.java | 4 +- 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index b4e2e7819d3..f8c361be415 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -1542,6 +1542,13 @@ public static String printQuery(Query query) { query.put(ANNOT_GENE_REGIONS.key(), "numGeneRegions : " + ((Collection) geneRegions).size()); } } + if (isValidParam(query, ID_INTERSECT)) { + query = new Query(query); + Object idIntersect = query.get(ID_INTERSECT.key()); + if (idIntersect instanceof Collection) { + query.put(ID_INTERSECT.key(), "numIdIntersect : " + ((Collection) idIntersect).size()); + } + } try { return QUERY_MAPPER.writeValueAsString(query); } catch (JsonProcessingException e) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 90fe6464641..3ec0c32c08a 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -137,13 +137,15 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { cohorts.add(cohort.getId()); if (cohort.isInvalid()) { - String message = "Cohort '" + cohort.getName() + "' has outdated variant stats."; + String message = "Please note that the Cohort Stats for " + + "'" + study.getName() + ":" + cohort.getName() + "' are currently outdated."; int numSampmles = cohort.getSamples().size(); int invalidStatsNumSamples = cohort.getAttributes().getInt(CohortMetadata.INVALID_STATS_NUM_SAMPLES, -1); if (invalidStatsNumSamples > 0) { - message += " Existing stats are calculated with " + invalidStatsNumSamples + " samples, " - + "but the cohort currently has " + numSampmles + " samples."; + message += " The statistics have been calculated with " + invalidStatsNumSamples + " samples, " + + "while the total number of samples in the cohort is " + numSampmles + "."; } + message += " To display updated statistics, please execute variant-stats-index."; events.add(new Event(Event.Type.WARNING, message)); } } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java index f9b0faa97f8..baafe7d0ad6 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java @@ -146,7 +146,9 @@ public void queryInvalidStats() throws Exception { VariantQueryResult result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); assertEquals(1, result.getEvents().size()); - assertEquals("Cohort 'cohort2' has outdated variant stats", result.getEvents().get(0).getMessage()); + assertEquals("Please note that the Cohort Stats for '1000g:cohort2' are currently outdated." + + " The statistics have been calculated with 2 samples, while the total number of samples in the cohort is 4." + + " To display updated statistics, please execute variant-stats-index.", result.getEvents().get(0).getMessage()); } @Test diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java index 7750583e0b8..7cc9dd77bf4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java @@ -974,7 +974,8 @@ protected void addVariantFilters(ParsedVariantQuery variantQuery, QueryOptions o sampleFiles.addAll(fileIdsFromSampleId); } else { for (Pair fileIdPair : fileIds) { - if (fileIdPair.getKey().equals(studyId)) { + if (fileIdPair.getKey().equals(studyId) + && sampleMetadata.getFiles().contains(fileIdPair.getValue())) { sampleFiles.add(fileIdPair.getValue()); } } @@ -1231,27 +1232,24 @@ private void addSampleDataFilter(ParsedVariantQuery query, List filters, SampleMetadata sampleMetadata = sampleDataFilter.getKey(); boolean multiFileSample = VariantStorageEngine.SplitData.MULTI.equals(sampleMetadata.getSplitData()); + // First file does not have the fileID in the column name + Integer firstSampleFile = sampleMetadata.getFiles().get(0); List sampleFiles = new ArrayList<>(); if (multiFileSample) { if (fileIds.isEmpty()) { - sampleFiles.add(null); // First file does not have the fileID in the column name List fileIdsFromSampleId = sampleMetadata.getFiles(); - sampleFiles.addAll(fileIdsFromSampleId.subList(1, fileIdsFromSampleId.size())); + sampleFiles.addAll(fileIdsFromSampleId); } else { for (Pair fileIdPair : fileIds) { - if (fileIdPair.getKey().equals(sampleMetadata.getStudyId())) { - Integer fileId = fileIdPair.getValue(); - int idx = sampleMetadata.getFiles().indexOf(fileId); - if (idx == 0) { - sampleFiles.add(null); // First file does not have the fileID in the column name - } else if (idx > 0) { - sampleFiles.add(fileId); // First file does not have the fileID in the column name - } + if (fileIdPair.getKey().equals(sampleMetadata.getStudyId()) + && sampleMetadata.getFiles().contains(fileIdPair.getValue())) { + sampleFiles.add(fileIdPair.getValue()); } } } } else { - sampleFiles.add(null); // First file does not have the fileID in the column name + // Non multi file sample + sampleFiles.add(firstSampleFile); } for (Integer sampleFile : sampleFiles) { List sampleFileFilters = new LinkedList<>(); @@ -1271,10 +1269,11 @@ private void addSampleDataFilter(ParsedVariantQuery query, List filters, sb.append("TO_NUMBER("); } sb.append('"'); - if (sampleFile != null) { - buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sampleFile, sb); - } else { + if (Objects.equals(sampleFile, firstSampleFile)) { + // Special scenario for the first file. Column name does not contain the fileId buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sb); + } else { + buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sampleFile, sb); } sb.append('"'); @@ -1288,10 +1287,11 @@ private void addSampleDataFilter(ParsedVariantQuery query, List filters, if (op.startsWith(">>") || op.startsWith("<<")) { sb.append(" OR \""); - if (sampleFile != null) { - buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sampleFile, sb); - } else { + if (Objects.equals(sampleFile, firstSampleFile)) { + // Special scenario for the first file. Column name does not contain the fileId buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sb); + } else { + buildSampleColumnKey(sampleMetadata.getStudyId(), sampleMetadata.getId(), sampleFile, sb); } sb.append('"'); @@ -1308,8 +1308,8 @@ private void addSampleDataFilter(ParsedVariantQuery query, List filters, if (multiFileSample) { // The first file is null. Get the actual fileId Integer actualFileId; - if (sampleFile == null) { - actualFileId = sampleMetadata.getFiles().get(0); + if (Objects.equals(sampleFile, firstSampleFile)) { + actualFileId = firstSampleFile; } else { actualFileId = sampleFile; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java index 1ee4944733e..e15cb6ae4bb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java @@ -369,8 +369,8 @@ public void regenerateSampleIndex() throws Exception { } public VariantQueryResult dbAdaptorQuery(Query query, QueryOptions options) { - query = variantStorageEngine.preProcessQuery(query, options); - return dbAdaptor.get(query, options); + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); + return dbAdaptor.get(variantQuery); } @Test From 74851ede86c0cff18ea6ed86cdeffc9e7e5a8a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 23 Apr 2024 17:33:06 +0200 Subject: [PATCH 265/354] analysis: include the folder src/test/resources in the testResources section of the pom.xml file, #TASK-6082 --- opencga-analysis/pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index abd6d563378..4958a137880 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -250,6 +250,9 @@ log4j2-test.xml + + src/test/resources + From 212c472654c129751b5f5ed9b154b8d4a97dc6d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 24 Apr 2024 14:42:31 +0100 Subject: [PATCH 266/354] storage: Fix test after merge #TASK-5876 --- .../variant/query/executors/VariantQueryExecutorTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java index b5fdde0fb85..c58328d4469 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -8,7 +8,6 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.core.response.VariantQueryResult; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -20,6 +19,7 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import org.opencb.opencga.storage.core.variant.solr.VariantSolrExternalResource; @@ -198,7 +198,7 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, Assert.assertTrue(dbQueryExecutor.canUseThisExecutor(query, options)); ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); - VariantQueryResult expected = dbQueryExecutor.get(new Query(variantQuery.getQuery()), new QueryOptions(options)); + VariantQueryResult expected = dbQueryExecutor.get(variantQuery); VariantQueryResult unfilteredResult = null; VariantQueryResult result = null; @@ -237,7 +237,7 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, QueryOptions emptyOptions = new QueryOptions(); emptyOptions.putIfNotEmpty(QueryOptions.INCLUDE, options.getString(QueryOptions.INCLUDE)); emptyOptions.putIfNotEmpty(QueryOptions.EXCLUDE, options.getString(QueryOptions.EXCLUDE)); - unfilteredResult = dbQueryExecutor.get(emptyQuery, emptyOptions); + unfilteredResult = dbQueryExecutor.get(variantStorageEngine.parseQuery(emptyQuery, emptyOptions)); } for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { @@ -245,7 +245,7 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, logger.info(""); logger.info("###################"); logger.info("### Testing " + variantQueryExecutor.getClass().getSimpleName()); - result = variantQueryExecutor.get(new Query(variantQuery.getQuery()), new QueryOptions(options)); + result = variantQueryExecutor.get(variantQuery); logger.info("### Num results : " + result.getNumResults()); logger.info("###################"); expected.getResults().sort(Comparator.comparing(Variant::toString)); From 53e9e26aa0914ed148a26d71aed40871396b05f9 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Wed, 24 Apr 2024 18:11:13 +0200 Subject: [PATCH 267/354] server: Rewrite the message to send in the sendResetPasswordMail #TASK-464 --- .../CatalogAuthenticationManager.java | 3 +- .../opencb/opencga/core/common/MailUtils.java | 47 ++++++++++++------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java index 2f8f476f828..2c14d8c78fa 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java @@ -133,7 +133,8 @@ public OpenCGAResult resetPassword(String userId) throws CatalogException { String mailHost = this.emailConfig.getHost(); String mailPort = this.emailConfig.getPort(); try { - MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort); + MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, + "true", ((User) user.getResults().get(0)).getName()); result = userDBAdaptor.resetPassword(userId, email, newPassword); } catch (Exception e) { throw new CatalogException("Email could not be sent.", e); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index 19338531443..7181db48b89 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -16,6 +16,8 @@ package org.opencb.opencga.core.common; +import org.opencb.opencga.core.models.user.User; +import org.opencb.opencga.core.response.OpenCGAResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,13 +35,7 @@ public class MailUtils { private static final Logger logger = LoggerFactory.getLogger(MailUtils.class); public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort) throws Exception { - sendResetPasswordMail(to, newPassword, mailUser, mailPassword, - mailHost, mailPort, "true"); - } - - public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort, String ssl) throws Exception { + String mailHost, String mailPort, String ssl, String UserName) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); @@ -59,20 +55,35 @@ protected PasswordAuthentication getPasswordAuthentication() { message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); - message.setSubject("Your password has been reset"); - message.setText("Hello, \n" + - "You can now login using this new password:" + - "\n\n" + - newPassword + - "\n\n\n" + - "Please change it when you first login" + - "\n\n" + - "Best regards,\n\n" + - "Systems Genomics Laboratory" + - "\n"); + message.setSubject("XetaBase: Password Reset"); + message.setText(getEmailContent(UserName,newPassword)); Transport.send(message); } + public static String getEmailContent(String userId, String temporaryPassword) { + StringBuilder sb = new StringBuilder(); + + sb.append("Hi ").append(userId).append(",\n\n"); + sb.append("We confirm that your password has been successfully reset.\n\n"); + sb.append("Please find your new login credentials below:\n\n"); + sb.append("User ID: ").append(userId).append("\n"); + sb.append("Temporary Password: ").append(temporaryPassword).append("\n\n"); + sb.append("For your security, we strongly recommend that you log in using the temporary password provided "); + sb.append("and promptly create a new password that is unique and known only to you. "); + sb.append("You can change your password by accessing \"Your Profile > Change Password\" in your User Profile.\n\n"); + sb.append("If you did not request a password reset, please contact our support team immediately at support@zettagenomics.com.\n\n"); + sb.append("Best regards,\n\n"); + sb.append("ZettaGenomics Support Team \n\n"); + sb.append("*This email and any attachments are confidential and may contain privileged information " + + "intended solely for the use of the individual or entity to whom they are addressed. " + + "If you have received this email in error, please notify the sender immediately and delete the email" + + " and any attachments from your system. Any unauthorized use, disclosure, distribution, " + + "or copying of this email or its attachments is strictly prohibited.*"); + + + return sb.toString(); + } + public static void sendMail(String smtpServer, String to, String from, String subject, String body) throws Exception { Properties props = System.getProperties(); From de1e789027bb6acc07a5cf916b2c1d3bf0190abc Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 25 Apr 2024 11:56:43 +0200 Subject: [PATCH 268/354] cli: Regenerate client and command line #TASK-6111 --- .../app/cli/main/OpenCgaCompleter.java | 2 +- .../app/cli/main/OpencgaCliOptionsParser.java | 2 +- .../AnalysisClinicalCommandOptions.java | 4 ++-- .../AnalysisVariantCommandOptions.java | 8 +++---- opencga-client/src/main/R/R/Admin-methods.R | 2 +- .../src/main/R/R/Alignment-methods.R | 2 +- opencga-client/src/main/R/R/AllGenerics.R | 22 +++++++++---------- .../src/main/R/R/Clinical-methods.R | 8 +++---- opencga-client/src/main/R/R/Cohort-methods.R | 4 ++-- opencga-client/src/main/R/R/Family-methods.R | 4 ++-- opencga-client/src/main/R/R/File-methods.R | 4 ++-- opencga-client/src/main/R/R/GA4GH-methods.R | 4 ++-- .../src/main/R/R/Individual-methods.R | 4 ++-- opencga-client/src/main/R/R/Job-methods.R | 4 ++-- opencga-client/src/main/R/R/Meta-methods.R | 2 +- .../src/main/R/R/Operation-methods.R | 2 +- opencga-client/src/main/R/R/Panel-methods.R | 4 ++-- opencga-client/src/main/R/R/Project-methods.R | 2 +- opencga-client/src/main/R/R/Sample-methods.R | 4 ++-- opencga-client/src/main/R/R/Study-methods.R | 4 ++-- opencga-client/src/main/R/R/User-methods.R | 4 ++-- opencga-client/src/main/R/R/Variant-methods.R | 10 ++++----- .../client/rest/clients/AdminClient.java | 2 +- .../client/rest/clients/AlignmentClient.java | 2 +- .../rest/clients/ClinicalAnalysisClient.java | 6 ++--- .../client/rest/clients/CohortClient.java | 2 +- .../rest/clients/DiseasePanelClient.java | 2 +- .../client/rest/clients/FamilyClient.java | 2 +- .../client/rest/clients/FileClient.java | 2 +- .../client/rest/clients/GA4GHClient.java | 2 +- .../client/rest/clients/IndividualClient.java | 2 +- .../client/rest/clients/JobClient.java | 2 +- .../client/rest/clients/MetaClient.java | 2 +- .../client/rest/clients/ProjectClient.java | 2 +- .../client/rest/clients/SampleClient.java | 2 +- .../client/rest/clients/StudyClient.java | 2 +- .../client/rest/clients/UserClient.java | 2 +- .../client/rest/clients/VariantClient.java | 10 ++++----- .../rest/clients/VariantOperationClient.java | 2 +- opencga-client/src/main/javascript/Admin.js | 2 +- .../src/main/javascript/Alignment.js | 2 +- .../src/main/javascript/ClinicalAnalysis.js | 7 +++--- opencga-client/src/main/javascript/Cohort.js | 2 +- .../src/main/javascript/DiseasePanel.js | 2 +- opencga-client/src/main/javascript/Family.js | 2 +- opencga-client/src/main/javascript/File.js | 2 +- opencga-client/src/main/javascript/GA4GH.js | 2 +- .../src/main/javascript/Individual.js | 2 +- opencga-client/src/main/javascript/Job.js | 2 +- opencga-client/src/main/javascript/Meta.js | 2 +- opencga-client/src/main/javascript/Project.js | 2 +- opencga-client/src/main/javascript/Sample.js | 2 +- opencga-client/src/main/javascript/Study.js | 2 +- opencga-client/src/main/javascript/User.js | 2 +- opencga-client/src/main/javascript/Variant.js | 12 +++++----- .../src/main/javascript/VariantOperation.js | 2 +- .../pyopencga/rest_clients/admin_client.py | 2 +- .../rest_clients/alignment_client.py | 2 +- .../rest_clients/clinical_analysis_client.py | 8 +++---- .../pyopencga/rest_clients/cohort_client.py | 2 +- .../rest_clients/disease_panel_client.py | 2 +- .../pyopencga/rest_clients/family_client.py | 2 +- .../pyopencga/rest_clients/file_client.py | 2 +- .../pyopencga/rest_clients/ga4gh_client.py | 2 +- .../rest_clients/individual_client.py | 2 +- .../pyopencga/rest_clients/job_client.py | 2 +- .../pyopencga/rest_clients/meta_client.py | 2 +- .../pyopencga/rest_clients/project_client.py | 2 +- .../pyopencga/rest_clients/sample_client.py | 2 +- .../pyopencga/rest_clients/study_client.py | 2 +- .../pyopencga/rest_clients/user_client.py | 2 +- .../pyopencga/rest_clients/variant_client.py | 14 ++++++------ .../rest_clients/variant_operation_client.py | 2 +- 73 files changed, 125 insertions(+), 128 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java index 36e23f42168..b0db2e99473 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpenCgaCompleter.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-04-17 OpenCB +* Copyright 2015-2024-04-25 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java index a50c83bbdc6..c5d4c21c8d2 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/OpencgaCliOptionsParser.java @@ -1,5 +1,5 @@ /* -* Copyright 2015-2024-04-17 OpenCB +* Copyright 2015-2024-04-25 OpenCB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java index 3a7ccffd4bd..592dbfc3efc 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisClinicalCommandOptions.java @@ -1687,7 +1687,7 @@ public class QueryVariantCommandOptions { @Parameter(names = {"--include-interpretation"}, description = "Interpretation ID to include the fields related to this interpretation", required = false, arity = 1) public String includeInterpretation; - @Parameter(names = {"--id"}, description = "List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T", required = false, arity = 1) public String id; @Parameter(names = {"--region"}, description = "List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000", required = false, arity = 1) @@ -1768,7 +1768,7 @@ public class QueryVariantCommandOptions { @Parameter(names = {"--ct"}, description = "List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'", required = false, arity = 1) public String ct; - @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ...", required = false, arity = 1) + @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ...", required = false, arity = 1) public String xref; @Parameter(names = {"--biotype"}, description = "List of biotypes, e.g. protein_coding", required = false, arity = 1) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java index f4a675b0e53..069e1ef9322 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/cli/main/options/AnalysisVariantCommandOptions.java @@ -177,7 +177,7 @@ public class AggregationStatsCommandOptions { @Parameter(names = {"--ct"}, description = "List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'", required = false, arity = 1) public String ct; - @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ...", required = false, arity = 1) + @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ...", required = false, arity = 1) public String xref; @Parameter(names = {"--biotype"}, description = "List of biotypes, e.g. protein_coding", required = false, arity = 1) @@ -259,7 +259,7 @@ public class QueryAnnotationCommandOptions { @ParametersDelegate public CommonCommandOptions commonOptions = commonCommandOptions; - @Parameter(names = {"--id"}, description = "List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T", required = false, arity = 1) public String id; @Parameter(names = {"--region"}, description = "List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000", required = false, arity = 1) @@ -1614,7 +1614,7 @@ public class QueryCommandOptions { @Parameter(names = {"--saved-filter"}, description = "Use a saved filter at User level", required = false, arity = 1) public String savedFilter; - @Parameter(names = {"--id"}, description = "List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T", required = false, arity = 1) + @Parameter(names = {"--id"}, description = "List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T", required = false, arity = 1) public String id; @Parameter(names = {"--region"}, description = "List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000", required = false, arity = 1) @@ -1740,7 +1740,7 @@ public class QueryCommandOptions { @Parameter(names = {"--ct"}, description = "List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'", required = false, arity = 1) public String ct; - @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ...", required = false, arity = 1) + @Parameter(names = {"--xref"}, description = "List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ...", required = false, arity = 1) public String xref; @Parameter(names = {"--biotype"}, description = "List of biotypes, e.g. protein_coding", required = false, arity = 1) diff --git a/opencga-client/src/main/R/R/Admin-methods.R b/opencga-client/src/main/R/R/Admin-methods.R index b1075de496d..02700c96173 100644 --- a/opencga-client/src/main/R/R/Admin-methods.R +++ b/opencga-client/src/main/R/R/Admin-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Alignment-methods.R b/opencga-client/src/main/R/R/Alignment-methods.R index 789a0eff6d1..e367674574c 100644 --- a/opencga-client/src/main/R/R/Alignment-methods.R +++ b/opencga-client/src/main/R/R/Alignment-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/AllGenerics.R b/opencga-client/src/main/R/R/AllGenerics.R index b6c6eea6fc7..3f65ad80933 100644 --- a/opencga-client/src/main/R/R/AllGenerics.R +++ b/opencga-client/src/main/R/R/AllGenerics.R @@ -1,6 +1,6 @@ # ############################################################################## ## UserClient -setGeneric("userClient", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) +setGeneric("userClient", function(OpencgaR, users, user, filterId, endpointName, params=NULL, ...) standardGeneric("userClient")) # ############################################################################## @@ -10,42 +10,42 @@ setGeneric("projectClient", function(OpencgaR, projects, project, endpointName, # ############################################################################## ## StudyClient -setGeneric("studyClient", function(OpencgaR, templateId, variableSet, members, study, group, studies, endpointName, params=NULL, ...) +setGeneric("studyClient", function(OpencgaR, studies, members, variableSet, group, templateId, study, endpointName, params=NULL, ...) standardGeneric("studyClient")) # ############################################################################## ## FileClient -setGeneric("fileClient", function(OpencgaR, files, members, folder, file, annotationSet, endpointName, params=NULL, ...) +setGeneric("fileClient", function(OpencgaR, members, file, folder, annotationSet, files, endpointName, params=NULL, ...) standardGeneric("fileClient")) # ############################################################################## ## JobClient -setGeneric("jobClient", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) +setGeneric("jobClient", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) standardGeneric("jobClient")) # ############################################################################## ## SampleClient -setGeneric("sampleClient", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) +setGeneric("sampleClient", function(OpencgaR, annotationSet, members, samples, sample, endpointName, params=NULL, ...) standardGeneric("sampleClient")) # ############################################################################## ## IndividualClient -setGeneric("individualClient", function(OpencgaR, annotationSet, individuals, members, individual, endpointName, params=NULL, ...) +setGeneric("individualClient", function(OpencgaR, annotationSet, individual, members, individuals, endpointName, params=NULL, ...) standardGeneric("individualClient")) # ############################################################################## ## FamilyClient -setGeneric("familyClient", function(OpencgaR, family, families, members, annotationSet, endpointName, params=NULL, ...) +setGeneric("familyClient", function(OpencgaR, family, members, annotationSet, families, endpointName, params=NULL, ...) standardGeneric("familyClient")) # ############################################################################## ## CohortClient -setGeneric("cohortClient", function(OpencgaR, cohorts, annotationSet, cohort, members, endpointName, params=NULL, ...) +setGeneric("cohortClient", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) standardGeneric("cohortClient")) # ############################################################################## ## PanelClient -setGeneric("panelClient", function(OpencgaR, panels, members, endpointName, params=NULL, ...) +setGeneric("panelClient", function(OpencgaR, members, panels, endpointName, params=NULL, ...) standardGeneric("panelClient")) # ############################################################################## @@ -60,7 +60,7 @@ setGeneric("variantClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## ClinicalClient -setGeneric("clinicalClient", function(OpencgaR, members, clinicalAnalyses, clinicalAnalysis, interpretation, annotationSet, interpretations, endpointName, params=NULL, ...) +setGeneric("clinicalClient", function(OpencgaR, members, clinicalAnalyses, annotationSet, interpretations, interpretation, clinicalAnalysis, endpointName, params=NULL, ...) standardGeneric("clinicalClient")) # ############################################################################## @@ -75,7 +75,7 @@ setGeneric("metaClient", function(OpencgaR, endpointName, params=NULL, ...) # ############################################################################## ## GA4GHClient -setGeneric("ga4ghClient", function(OpencgaR, file, study, endpointName, params=NULL, ...) +setGeneric("ga4ghClient", function(OpencgaR, study, file, endpointName, params=NULL, ...) standardGeneric("ga4ghClient")) # ############################################################################## diff --git a/opencga-client/src/main/R/R/Clinical-methods.R b/opencga-client/src/main/R/R/Clinical-methods.R index 4086c5dc9f0..d1f276dc792 100644 --- a/opencga-client/src/main/R/R/Clinical-methods.R +++ b/opencga-client/src/main/R/R/Clinical-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -61,7 +61,7 @@ #' [*]: Required parameter #' @export -setMethod("clinicalClient", "OpencgaR", function(OpencgaR, members, clinicalAnalyses, clinicalAnalysis, interpretation, annotationSet, interpretations, endpointName, params=NULL, ...) { +setMethod("clinicalClient", "OpencgaR", function(OpencgaR, members, clinicalAnalyses, annotationSet, interpretations, interpretation, clinicalAnalysis, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/analysis/clinical/acl/{members}/update: @@ -541,7 +541,7 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, members, clinicalAnal #' @param approximateCountSamplingSize Sampling size to get the approximate count. Larger values increase accuracy but also increase execution time. #' @param savedFilter Use a saved filter at User level. #' @param includeInterpretation Interpretation ID to include the fields related to this interpretation. - #' @param id List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + #' @param id List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. #' @param region List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. #' @param type List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, COPY_NUMBER_GAIN, INSERTION, DELETION, DUPLICATION, TANDEM_DUPLICATION, BREAKEND, e.g. SNV,INDEL. #' @param study Filter variants from the given studies, these can be either the numeric ID or the alias with the format user@project:study. @@ -568,7 +568,7 @@ setMethod("clinicalClient", "OpencgaR", function(OpencgaR, members, clinicalAnal #' @param familyProband Specify the proband child to use for the family segregation. #' @param gene List of genes, most gene IDs are accepted (HGNC, Ensembl gene, ...). This is an alias to 'xref' parameter. #' @param ct List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'. - #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... #' @param biotype List of biotypes, e.g. protein_coding. #' @param proteinSubstitution Protein substitution scores include SIFT and PolyPhen. You can query using the score {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. #' @param conservation Filter by conservation score: {conservation_score}[<|>|<=|>=]{number} e.g. phastCons>0.5,phylop<0.1,gerp>0.1. diff --git a/opencga-client/src/main/R/R/Cohort-methods.R b/opencga-client/src/main/R/R/Cohort-methods.R index 4fd94649ad3..727cc6dcae3 100644 --- a/opencga-client/src/main/R/R/Cohort-methods.R +++ b/opencga-client/src/main/R/R/Cohort-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("cohortClient", "OpencgaR", function(OpencgaR, cohorts, annotationSet, cohort, members, endpointName, params=NULL, ...) { +setMethod("cohortClient", "OpencgaR", function(OpencgaR, annotationSet, members, cohort, cohorts, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/cohorts/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Family-methods.R b/opencga-client/src/main/R/R/Family-methods.R index 7df4099ebb1..3111f2a51ed 100644 --- a/opencga-client/src/main/R/R/Family-methods.R +++ b/opencga-client/src/main/R/R/Family-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("familyClient", "OpencgaR", function(OpencgaR, family, families, members, annotationSet, endpointName, params=NULL, ...) { +setMethod("familyClient", "OpencgaR", function(OpencgaR, family, members, annotationSet, families, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/families/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/File-methods.R b/opencga-client/src/main/R/R/File-methods.R index 32930f9addc..a0c896dcffa 100644 --- a/opencga-client/src/main/R/R/File-methods.R +++ b/opencga-client/src/main/R/R/File-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -55,7 +55,7 @@ #' [*]: Required parameter #' @export -setMethod("fileClient", "OpencgaR", function(OpencgaR, files, members, folder, file, annotationSet, endpointName, params=NULL, ...) { +setMethod("fileClient", "OpencgaR", function(OpencgaR, members, file, folder, annotationSet, files, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/files/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/GA4GH-methods.R b/opencga-client/src/main/R/R/GA4GH-methods.R index 5fa299d9a0a..2406d77ff2c 100644 --- a/opencga-client/src/main/R/R/GA4GH-methods.R +++ b/opencga-client/src/main/R/R/GA4GH-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -31,7 +31,7 @@ #' [*]: Required parameter #' @export -setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, file, study, endpointName, params=NULL, ...) { +setMethod("ga4ghClient", "OpencgaR", function(OpencgaR, study, file, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/ga4gh/reads/search: diff --git a/opencga-client/src/main/R/R/Individual-methods.R b/opencga-client/src/main/R/R/Individual-methods.R index 5561a1988b1..b48136ae582 100644 --- a/opencga-client/src/main/R/R/Individual-methods.R +++ b/opencga-client/src/main/R/R/Individual-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, individuals, members, individual, endpointName, params=NULL, ...) { +setMethod("individualClient", "OpencgaR", function(OpencgaR, annotationSet, individual, members, individuals, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/individuals/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Job-methods.R b/opencga-client/src/main/R/R/Job-methods.R index 4d943c46e40..b6c47021122 100644 --- a/opencga-client/src/main/R/R/Job-methods.R +++ b/opencga-client/src/main/R/R/Job-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -40,7 +40,7 @@ #' [*]: Required parameter #' @export -setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, job, members, endpointName, params=NULL, ...) { +setMethod("jobClient", "OpencgaR", function(OpencgaR, jobs, members, job, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/jobs/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Meta-methods.R b/opencga-client/src/main/R/R/Meta-methods.R index 8bd1b850f98..6e427607ade 100644 --- a/opencga-client/src/main/R/R/Meta-methods.R +++ b/opencga-client/src/main/R/R/Meta-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Operation-methods.R b/opencga-client/src/main/R/R/Operation-methods.R index c5f02d3de48..0431fa7a235 100644 --- a/opencga-client/src/main/R/R/Operation-methods.R +++ b/opencga-client/src/main/R/R/Operation-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Panel-methods.R b/opencga-client/src/main/R/R/Panel-methods.R index 4a5fab649b9..ab0e75d32a3 100644 --- a/opencga-client/src/main/R/R/Panel-methods.R +++ b/opencga-client/src/main/R/R/Panel-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -36,7 +36,7 @@ #' [*]: Required parameter #' @export -setMethod("panelClient", "OpencgaR", function(OpencgaR, panels, members, endpointName, params=NULL, ...) { +setMethod("panelClient", "OpencgaR", function(OpencgaR, members, panels, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/panels/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Project-methods.R b/opencga-client/src/main/R/R/Project-methods.R index 740abc79fb0..c75b843e860 100644 --- a/opencga-client/src/main/R/R/Project-methods.R +++ b/opencga-client/src/main/R/R/Project-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/R/R/Sample-methods.R b/opencga-client/src/main/R/R/Sample-methods.R index 89427790a5f..2ab6077f9b4 100644 --- a/opencga-client/src/main/R/R/Sample-methods.R +++ b/opencga-client/src/main/R/R/Sample-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -39,7 +39,7 @@ #' [*]: Required parameter #' @export -setMethod("sampleClient", "OpencgaR", function(OpencgaR, samples, annotationSet, members, sample, endpointName, params=NULL, ...) { +setMethod("sampleClient", "OpencgaR", function(OpencgaR, annotationSet, members, samples, sample, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/samples/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/Study-methods.R b/opencga-client/src/main/R/R/Study-methods.R index 7c9c3d1ea80..a3d83d55ecd 100644 --- a/opencga-client/src/main/R/R/Study-methods.R +++ b/opencga-client/src/main/R/R/Study-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -46,7 +46,7 @@ #' [*]: Required parameter #' @export -setMethod("studyClient", "OpencgaR", function(OpencgaR, templateId, variableSet, members, study, group, studies, endpointName, params=NULL, ...) { +setMethod("studyClient", "OpencgaR", function(OpencgaR, studies, members, variableSet, group, templateId, study, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/studies/acl/{members}/update: diff --git a/opencga-client/src/main/R/R/User-methods.R b/opencga-client/src/main/R/R/User-methods.R index 5de14f31ef3..266a3ee51d5 100644 --- a/opencga-client/src/main/R/R/User-methods.R +++ b/opencga-client/src/main/R/R/User-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -38,7 +38,7 @@ #' [*]: Required parameter #' @export -setMethod("userClient", "OpencgaR", function(OpencgaR, filterId, user, users, endpointName, params=NULL, ...) { +setMethod("userClient", "OpencgaR", function(OpencgaR, users, user, filterId, endpointName, params=NULL, ...) { switch(endpointName, #' @section Endpoint /{apiVersion}/users/login: diff --git a/opencga-client/src/main/R/R/Variant-methods.R b/opencga-client/src/main/R/R/Variant-methods.R index da20cde0ff2..c17b30b4f0c 100644 --- a/opencga-client/src/main/R/R/Variant-methods.R +++ b/opencga-client/src/main/R/R/Variant-methods.R @@ -2,7 +2,7 @@ # WARNING: AUTOGENERATED CODE # # This code was generated by a tool. -# Autogenerated on: 2024-04-17 +# Autogenerated on: 2024-04-25 # # Manual changes to this file may cause unexpected behavior in your application. # Manual changes to this file will be overwritten if the code is regenerated. @@ -88,7 +88,7 @@ setMethod("variantClient", "OpencgaR", function(OpencgaR, endpointName, params=N #' @param annotationExists Return only annotated variants. #' @param gene List of genes, most gene IDs are accepted (HGNC, Ensembl gene, ...). This is an alias to 'xref' parameter. #' @param ct List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'. - #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... #' @param biotype List of biotypes, e.g. protein_coding. #' @param proteinSubstitution Protein substitution scores include SIFT and PolyPhen. You can query using the score {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. #' @param conservation Filter by conservation score: {conservation_score}[<|>|<=|>=]{number} e.g. phastCons>0.5,phylop<0.1,gerp>0.1. @@ -122,7 +122,7 @@ setMethod("variantClient", "OpencgaR", function(OpencgaR, endpointName, params=N #' @section Endpoint /{apiVersion}/analysis/variant/annotation/query: #' Query variant annotations from any saved versions. - #' @param id List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + #' @param id List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. #' @param region List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. #' @param include Fields included in the response, whole JSON path must be provided. #' @param exclude Fields excluded in the response, whole JSON path must be provided. @@ -425,7 +425,7 @@ setMethod("variantClient", "OpencgaR", function(OpencgaR, endpointName, params=N #' @param approximateCount Get an approximate count, instead of an exact total count. Reduces execution time. #' @param approximateCountSamplingSize Sampling size to get the approximate count. Larger values increase accuracy but also increase execution time. #' @param savedFilter Use a saved filter at User level. - #' @param id List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + #' @param id List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. #' @param region List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. #' @param type List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, COPY_NUMBER_GAIN, INSERTION, DELETION, DUPLICATION, TANDEM_DUPLICATION, BREAKEND, e.g. SNV,INDEL. #' @param reference Reference allele. @@ -467,7 +467,7 @@ setMethod("variantClient", "OpencgaR", function(OpencgaR, endpointName, params=N #' @param annotationExists Return only annotated variants. #' @param gene List of genes, most gene IDs are accepted (HGNC, Ensembl gene, ...). This is an alias to 'xref' parameter. #' @param ct List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' and 'protein_altering'. - #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + #' @param xref List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... #' @param biotype List of biotypes, e.g. protein_coding. #' @param proteinSubstitution Protein substitution scores include SIFT and PolyPhen. You can query using the score {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. #' @param conservation Filter by conservation score: {conservation_score}[<|>|<=|>=]{number} e.g. phastCons>0.5,phylop<0.1,gerp>0.1. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java index 91df6bfd606..5601a4e5329 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AdminClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java index 32033b437ce..ea517320b92 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/AlignmentClient.java @@ -40,7 +40,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java index 799a12f0734..e80fc6b059f 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ClinicalAnalysisClient.java @@ -54,7 +54,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -698,7 +698,7 @@ public RestResponse search(ObjectMap params) throws ClientExce * execution time. * savedFilter: Use a saved filter at User level. * includeInterpretation: Interpretation ID to include the fields related to this interpretation. - * id: List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + * id: List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: * 2,3:100000-200000. * type: List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, COPY_NUMBER_GAIN, INSERTION, @@ -746,7 +746,7 @@ public RestResponse search(ObjectMap params) throws ClientExce * ct: List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' * and 'protein_altering'. * xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - * dbSNP, ClinVar, HPO, Cosmic, ... + * dbSNP, ClinVar, HPO, Cosmic, HGVS ... * biotype: List of biotypes, e.g. protein_coding. * proteinSubstitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java index f9d16f17762..64dfe81be6b 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/CohortClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java index 92c14116c8e..ba0285bd561 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/DiseasePanelClient.java @@ -35,7 +35,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java index 826c7203f08..e7c9399f9d6 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FamilyClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java index 3f16dccce20..43814c27514 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/FileClient.java @@ -44,7 +44,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java index 5ec97c7c4dc..2959295e3a0 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/GA4GHClient.java @@ -27,7 +27,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java index cbfba299f88..66f78beaf7e 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/IndividualClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java index 9ebea67f137..f34b38d60f6 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/JobClient.java @@ -37,7 +37,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java index 5f3e0ceef96..3d4dddbf928 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/MetaClient.java @@ -28,7 +28,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java index fe6b3ab2206..8931d46d3c2 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/ProjectClient.java @@ -32,7 +32,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java index 17a8bf1b762..5de5d3488bd 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/SampleClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java index e7aae483ca4..3f598c842a3 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/StudyClient.java @@ -45,7 +45,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java index 503aed913b8..0ecdcb5b517 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/UserClient.java @@ -36,7 +36,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java index 3abdd8c4bec..810091d8275 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantClient.java @@ -62,7 +62,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -105,7 +105,7 @@ public VariantClient(String token, ClientConfiguration configuration) { * ct: List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' * and 'protein_altering'. * xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - * dbSNP, ClinVar, HPO, Cosmic, ... + * dbSNP, ClinVar, HPO, Cosmic, HGVS ... * biotype: List of biotypes, e.g. protein_coding. * proteinSubstitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. @@ -152,7 +152,7 @@ public RestResponse metadataAnnotation(ObjectMap params) throws Clien /** * Query variant annotations from any saved versions. * @param params Map containing any of the following optional parameters. - * id: List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + * id: List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: * 2,3:100000-200000. * include: Fields included in the response, whole JSON path must be provided. @@ -640,7 +640,7 @@ public RestResponse runPlink(PlinkWrapperParams data, ObjectMap params) thr * approximateCountSamplingSize: Sampling size to get the approximate count. Larger values increase accuracy but also increase * execution time. * savedFilter: Use a saved filter at User level. - * id: List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + * id: List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: * 2,3:100000-200000. * type: List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, COPY_NUMBER_GAIN, INSERTION, @@ -712,7 +712,7 @@ public RestResponse runPlink(PlinkWrapperParams data, ObjectMap params) thr * ct: List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases 'loss_of_function' * and 'protein_altering'. * xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - * dbSNP, ClinVar, HPO, Cosmic, ... + * dbSNP, ClinVar, HPO, Cosmic, HGVS ... * biotype: List of biotypes, e.g. protein_coding. * proteinSubstitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. diff --git a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java index 0b210dc1dda..14a89e79d08 100644 --- a/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java +++ b/opencga-client/src/main/java/org/opencb/opencga/client/rest/clients/VariantOperationClient.java @@ -50,7 +50,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. -* Autogenerated on: 2024-04-17 +* Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Admin.js b/opencga-client/src/main/javascript/Admin.js index 492edb26ae9..5772c11289c 100644 --- a/opencga-client/src/main/javascript/Admin.js +++ b/opencga-client/src/main/javascript/Admin.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Alignment.js b/opencga-client/src/main/javascript/Alignment.js index 88753f9f105..c6e95fac4a9 100644 --- a/opencga-client/src/main/javascript/Alignment.js +++ b/opencga-client/src/main/javascript/Alignment.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/ClinicalAnalysis.js b/opencga-client/src/main/javascript/ClinicalAnalysis.js index 6a3e8de727e..78c02c0920b 100644 --- a/opencga-client/src/main/javascript/ClinicalAnalysis.js +++ b/opencga-client/src/main/javascript/ClinicalAnalysis.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -585,8 +585,7 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * but also increase execution time. * @param {String} [params.savedFilter] - Use a saved filter at User level. * @param {String} [params.includeInterpretation] - Interpretation ID to include the fields related to this interpretation. - * @param {String} [params.id] - List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. - * rs116600158,19:7177679:C:T. + * @param {String} [params.id] - List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * @param {String} [params.region] - List of regions, these can be just a single chromosome name or regions in the format chr:start-end, * e.g.: 2,3:100000-200000. * @param {String} [params.type] - List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, @@ -638,7 +637,7 @@ export default class ClinicalAnalysis extends OpenCGAParentClass { * @param {String} [params.ct] - List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases * 'loss_of_function' and 'protein_altering'. * @param {String} [params.xref] - List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, - * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... * @param {String} [params.biotype] - List of biotypes, e.g. protein_coding. * @param {String} [params.proteinSubstitution] - Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. diff --git a/opencga-client/src/main/javascript/Cohort.js b/opencga-client/src/main/javascript/Cohort.js index 813bde9476f..bc33d1c6e26 100644 --- a/opencga-client/src/main/javascript/Cohort.js +++ b/opencga-client/src/main/javascript/Cohort.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/DiseasePanel.js b/opencga-client/src/main/javascript/DiseasePanel.js index e78120b782e..c1f49cba7da 100644 --- a/opencga-client/src/main/javascript/DiseasePanel.js +++ b/opencga-client/src/main/javascript/DiseasePanel.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Family.js b/opencga-client/src/main/javascript/Family.js index b445c29f5f4..9bd5d316764 100644 --- a/opencga-client/src/main/javascript/Family.js +++ b/opencga-client/src/main/javascript/Family.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/File.js b/opencga-client/src/main/javascript/File.js index 2aa945f22ce..c11712707b8 100644 --- a/opencga-client/src/main/javascript/File.js +++ b/opencga-client/src/main/javascript/File.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/GA4GH.js b/opencga-client/src/main/javascript/GA4GH.js index d1da328c363..c74108c5ca5 100644 --- a/opencga-client/src/main/javascript/GA4GH.js +++ b/opencga-client/src/main/javascript/GA4GH.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Individual.js b/opencga-client/src/main/javascript/Individual.js index 94a4b3565f3..5ec331eeca4 100644 --- a/opencga-client/src/main/javascript/Individual.js +++ b/opencga-client/src/main/javascript/Individual.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Job.js b/opencga-client/src/main/javascript/Job.js index 4fefa922553..67b8db8e091 100644 --- a/opencga-client/src/main/javascript/Job.js +++ b/opencga-client/src/main/javascript/Job.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Meta.js b/opencga-client/src/main/javascript/Meta.js index da37ac584da..0cea26d1a89 100644 --- a/opencga-client/src/main/javascript/Meta.js +++ b/opencga-client/src/main/javascript/Meta.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Project.js b/opencga-client/src/main/javascript/Project.js index 47c7ee63038..1afb1f8c793 100644 --- a/opencga-client/src/main/javascript/Project.js +++ b/opencga-client/src/main/javascript/Project.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Sample.js b/opencga-client/src/main/javascript/Sample.js index ec2124cefa7..907ffe1b935 100644 --- a/opencga-client/src/main/javascript/Sample.js +++ b/opencga-client/src/main/javascript/Sample.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Study.js b/opencga-client/src/main/javascript/Study.js index 0c75aa2f018..fed4b5a6c39 100644 --- a/opencga-client/src/main/javascript/Study.js +++ b/opencga-client/src/main/javascript/Study.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/User.js b/opencga-client/src/main/javascript/User.js index 23454b1aab1..8775caa0071 100644 --- a/opencga-client/src/main/javascript/User.js +++ b/opencga-client/src/main/javascript/User.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/javascript/Variant.js b/opencga-client/src/main/javascript/Variant.js index 1af0a7e0d34..ecfa45cd988 100644 --- a/opencga-client/src/main/javascript/Variant.js +++ b/opencga-client/src/main/javascript/Variant.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. @@ -57,7 +57,7 @@ export default class Variant extends OpenCGAParentClass { * @param {String} [params.ct] - List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases * 'loss_of_function' and 'protein_altering'. * @param {String} [params.xref] - List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, - * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... * @param {String} [params.biotype] - List of biotypes, e.g. protein_coding. * @param {String} [params.proteinSubstitution] - Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. @@ -103,8 +103,7 @@ export default class Variant extends OpenCGAParentClass { /** Query variant annotations from any saved versions * @param {Object} [params] - The Object containing the following optional parameters: - * @param {String} [params.id] - List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. - * rs116600158,19:7177679:C:T. + * @param {String} [params.id] - List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * @param {String} [params.region] - List of regions, these can be just a single chromosome name or regions in the format chr:start-end, * e.g.: 2,3:100000-200000. * @param {String} [params.include] - Fields included in the response, whole JSON path must be provided. @@ -519,8 +518,7 @@ export default class Variant extends OpenCGAParentClass { * @param {Number} [params.approximateCountSamplingSize] - Sampling size to get the approximate count. Larger values increase accuracy * but also increase execution time. * @param {String} [params.savedFilter] - Use a saved filter at User level. - * @param {String} [params.id] - List of IDs, these can be rs IDs (dbSNP) or variants in the format chrom:start:ref:alt, e.g. - * rs116600158,19:7177679:C:T. + * @param {String} [params.id] - List of variant IDs in the format chrom:start:ref:alt, e.g. 19:7177679:C:T. * @param {String} [params.region] - List of regions, these can be just a single chromosome name or regions in the format chr:start-end, * e.g.: 2,3:100000-200000. * @param {String} [params.type] - List of types, accepted values are SNV, MNV, INDEL, SV, COPY_NUMBER, COPY_NUMBER_LOSS, @@ -595,7 +593,7 @@ export default class Variant extends OpenCGAParentClass { * @param {String} [params.ct] - List of SO consequence types, e.g. missense_variant,stop_lost or SO:0001583,SO:0001578. Accepts aliases * 'loss_of_function' and 'protein_altering'. * @param {String} [params.xref] - List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, - * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, ... + * Ensembl genes, dbSNP, ClinVar, HPO, Cosmic, HGVS ... * @param {String} [params.biotype] - List of biotypes, e.g. protein_coding. * @param {String} [params.proteinSubstitution] - Protein substitution scores include SIFT and PolyPhen. You can query using the score * {protein_score}[<|>|<=|>=]{number} or the description {protein_score}[~=|=]{description} e.g. polyphen>0.1,sift=tolerant. diff --git a/opencga-client/src/main/javascript/VariantOperation.js b/opencga-client/src/main/javascript/VariantOperation.js index 66f185b9172..89b31d6f794 100644 --- a/opencga-client/src/main/javascript/VariantOperation.js +++ b/opencga-client/src/main/javascript/VariantOperation.js @@ -12,7 +12,7 @@ * WARNING: AUTOGENERATED CODE * * This code was generated by a tool. - * Autogenerated on: 2024-04-17 + * Autogenerated on: 2024-04-25 * * Manual changes to this file may cause unexpected behavior in your application. * Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py index e858d7c2cb4..cf56a794019 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/admin_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py index 70672d7a91c..c61107c6533 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/alignment_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py index f6081dc1c88..eacad69006d 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/clinical_analysis_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -713,8 +713,8 @@ def query_variant(self, **options): :param str saved_filter: Use a saved filter at User level. :param str include_interpretation: Interpretation ID to include the fields related to this interpretation. - :param str id: List of IDs, these can be rs IDs (dbSNP) or variants in - the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + :param str id: List of variant IDs in the format chrom:start:ref:alt, + e.g. 19:7177679:C:T. :param str region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. @@ -800,7 +800,7 @@ def query_variant(self, **options): aliases 'loss_of_function' and 'protein_altering'. :param str xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - dbSNP, ClinVar, HPO, Cosmic, ... + dbSNP, ClinVar, HPO, Cosmic, HGVS ... :param str biotype: List of biotypes, e.g. protein_coding. :param str protein_substitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py index 22522d3080d..e4ecc0c8ece 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/cohort_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py index 4d745af3e36..77d939aa32e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/disease_panel_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py index 5d2a725b8ca..82d22a7a3f0 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/family_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py index 982e768b914..61a4f098c06 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/file_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py index d474c8e4742..759d188fd17 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/ga4gh_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py index 0ad324b569d..b4abe50abc8 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/individual_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py index 4530c66f33f..278d1595159 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/job_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py index 617d13cd022..c5beeb4d320 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/meta_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py index 80e1be2620d..1fc03169013 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/project_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py index bd2bb71476c..ff401a57af2 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/sample_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py index 64f9f0b38f4..9c6c7610d38 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/study_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py index 099919118b7..654bd1e6b9e 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/user_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py index 89f1c3d162e..86e1f537ba4 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. @@ -65,7 +65,7 @@ def aggregation_stats(self, **options): aliases 'loss_of_function' and 'protein_altering'. :param str xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - dbSNP, ClinVar, HPO, Cosmic, ... + dbSNP, ClinVar, HPO, Cosmic, HGVS ... :param str biotype: List of biotypes, e.g. protein_coding. :param str protein_substitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score @@ -126,8 +126,8 @@ def query_annotation(self, **options): Query variant annotations from any saved versions. PATH: /{apiVersion}/analysis/variant/annotation/query - :param str id: List of IDs, these can be rs IDs (dbSNP) or variants in - the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + :param str id: List of variant IDs in the format chrom:start:ref:alt, + e.g. 19:7177679:C:T. :param str region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. @@ -661,8 +661,8 @@ def query(self, **options): approximate count. Larger values increase accuracy but also increase execution time. :param str saved_filter: Use a saved filter at User level. - :param str id: List of IDs, these can be rs IDs (dbSNP) or variants in - the format chrom:start:ref:alt, e.g. rs116600158,19:7177679:C:T. + :param str id: List of variant IDs in the format chrom:start:ref:alt, + e.g. 19:7177679:C:T. :param str region: List of regions, these can be just a single chromosome name or regions in the format chr:start-end, e.g.: 2,3:100000-200000. @@ -787,7 +787,7 @@ def query(self, **options): aliases 'loss_of_function' and 'protein_altering'. :param str xref: List of any external reference, these can be genes, proteins or variants. Accepted IDs include HGNC, Ensembl genes, - dbSNP, ClinVar, HPO, Cosmic, ... + dbSNP, ClinVar, HPO, Cosmic, HGVS ... :param str biotype: List of biotypes, e.g. protein_coding. :param str protein_substitution: Protein substitution scores include SIFT and PolyPhen. You can query using the score diff --git a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py index f53a2ace921..a98de91c73a 100644 --- a/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py +++ b/opencga-client/src/main/python/pyopencga/rest_clients/variant_operation_client.py @@ -2,7 +2,7 @@ WARNING: AUTOGENERATED CODE This code was generated by a tool. - Autogenerated on: 2024-04-17 + Autogenerated on: 2024-04-25 Manual changes to this file may cause unexpected behavior in your application. Manual changes to this file will be overwritten if the code is regenerated. From e4fac8aeb68db930f87cc547c2ee770000ee3928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 25 Apr 2024 15:29:52 +0200 Subject: [PATCH 269/354] analysis: fix JUnit test, TASK-6117 --- .../opencga/analysis/variant/manager/VariantOperationsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java index 14c09547876..f9a698b2fc9 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java @@ -515,7 +515,7 @@ public void testCellbaseConfigure() throws Exception { assertEquals("GRCh38", cellBaseUtils.getAssembly()); String newCellbase = "https://uk.ws.zettagenomics.com/cellbase/"; - String newCellbaseVersion = "v5.2"; + String newCellbaseVersion = "v5.8"; assertNotEquals(newCellbase, cellBaseUtils.getURL()); assertNotEquals(newCellbaseVersion, cellBaseUtils.getVersion()); From b61bf0967026cc648103fefd2e50c4cd51d15f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 26 Apr 2024 14:05:10 +0100 Subject: [PATCH 270/354] storage: Avoid concurrent variant-index jobs of files sharing samples. #TASK-6078 --- .../VariantStorageMetadataManager.java | 79 +++-- .../core/metadata/models/TaskMetadata.java | 27 +- .../core/variant/VariantStorageEngine.java | 79 +++-- .../dummy/DummyStudyMetadataDBAdaptor.java | 2 +- ...HadoopLocalLoadVariantStoragePipeline.java | 26 +- .../variant/HadoopVariantStorageEngine.java | 5 + .../metadata/HBaseTaskMetadataDBAdaptor.java | 2 +- ...doopVariantStorageEngineSplitDataTest.java | 283 ++++++++++++++++++ .../hadoop/variant/VariantHbaseTestUtils.java | 9 +- 9 files changed, 441 insertions(+), 71 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index cf4477bb4f1..ce192dade2b 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -1273,13 +1273,17 @@ public TaskMetadata getTask(int studyId, String taskName, List fileIds) } public Iterator taskIterator(int studyId) { - return taskIterator(studyId, null); + return taskIterator(studyId, null, false); } public Iterator taskIterator(int studyId, List statusFilter) { return taskIterator(studyId, statusFilter, false); } + public Iterator taskIterator(int studyId, TaskMetadata.Status... statusFilter) { + return taskIterator(studyId, Arrays.asList(statusFilter), false); + } + public Iterator taskIterator(int studyId, List statusFilter, boolean reversed) { return taskDBAdaptor.taskIterator(studyId, statusFilter, reversed); } @@ -1288,6 +1292,13 @@ public Iterable getRunningTasks(int studyId) { return taskDBAdaptor.getRunningTasks(studyId); } + public Iterable getActiveTasks(int studyId) { + return () -> taskIterator(studyId, + TaskMetadata.Status.RUNNING, + TaskMetadata.Status.DONE, + TaskMetadata.Status.ERROR); + } + public void unsecureUpdateTask(int studyId, TaskMetadata task) throws StorageEngineException { task.setStudyId(studyId); if (task.getId() == 0) { @@ -2074,47 +2085,35 @@ private TaskMetadata getRunningTaskCompatibleOrFail(int studyId, String jobOpera TaskMetadata.Type type, Predicate allowConcurrent) throws StorageEngineException { TaskMetadata resumeTask = null; - Iterator iterator = taskIterator(studyId, Arrays.asList( - TaskMetadata.Status.DONE, - TaskMetadata.Status.RUNNING, - TaskMetadata.Status.ERROR)); - while (iterator.hasNext()) { - TaskMetadata task = iterator.next(); + for (TaskMetadata task : getActiveTasks(studyId)) { TaskMetadata.Status currentStatus = task.currentStatus(); - switch (currentStatus) { - case READY: - logger.warn("Unexpected READY task. IGNORE"); - // Ignore ready operations - break; - case DONE: - case RUNNING: - if (!resume) { - if (task.sameOperation(fileIds, type, jobOperationName)) { - throw StorageEngineException.currentOperationInProgressException(task, this); - } else { - if (allowConcurrent.test(task)) { - break; - } else { - throw StorageEngineException.otherOperationInProgressException(task, jobOperationName, fileIds, this); - } - } - } - // DO NOT BREAK!. Resuming last loading, go to error case. - case ERROR: - if (!task.sameOperation(fileIds, type, jobOperationName)) { - if (allowConcurrent.test(task)) { - break; - } else { - throw StorageEngineException.otherOperationInProgressException(task, jobOperationName, fileIds, this, resume); - } - } else { - logger.info("Resuming last batch operation \"" + task.getName() + "\" due to error."); - resumeTask = task; - } - break; - default: - throw new IllegalArgumentException("Unknown Status " + currentStatus); + if (currentStatus != TaskMetadata.Status.DONE + && currentStatus != TaskMetadata.Status.RUNNING + && currentStatus != TaskMetadata.Status.ERROR) { + logger.warn("Unexpected {} task. IGNORE", currentStatus); + // Ignore ready operations + continue; + } + + if (task.sameOperation(fileIds, type, jobOperationName)) { + if (currentStatus == TaskMetadata.Status.ERROR) { + // Automatically resume ERROR status tasks + logger.info("Resuming last batch operation \"" + task.getName() + "\" due to error."); + resumeTask = task; + } else if (resume) { + // Force resume + logger.info("Manually resuming last batch operation \"" + task.getName() + "\" in status " + currentStatus + "."); + resumeTask = task; + } else { + // Already being executed + throw StorageEngineException.currentOperationInProgressException(task, this); + } + } else { + // Check if it can be executed concurrently + if (!allowConcurrent.test(task)) { + throw StorageEngineException.otherOperationInProgressException(task, jobOperationName, fileIds, this); + } } } return resumeTask; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java index e7d32e12b5d..aba5d230c88 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java @@ -34,10 +34,33 @@ public class TaskMetadata { public enum Status { NONE, + /** + * Active task. + * Running, but not finished + */ RUNNING, - DONE, // Finished, but some work still needed (optional) + /** + * Active task. + * Finished, but some work still needed (optional status) + */ + DONE, + /** + * Active task. + * Currently, paused. + * Errors found during the execution. Needs to be resumed or cleaned. + */ + ERROR, + /** + * Finished. + * Ready to be used + */ READY, - ERROR + /** + * Finished. + * Task was aborted, cancelled or rolled back. + * Any needed clean might be executed by other running tasks + */ + ABORTED, } public enum Type { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index 018d09292f1..8368fcf7074 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -946,35 +946,78 @@ public void removeSamples(String study, List samples, URI outdir) throws */ protected TaskMetadata preRemove(String study, List files, List samples) throws StorageEngineException { AtomicReference batchFileOperation = new AtomicReference<>(); + boolean force = getOptions().getBoolean(FORCE.key(), FORCE.defaultValue()); + boolean resume = getOptions().getBoolean(RESUME.key(), RESUME.defaultValue()); VariantStorageMetadataManager metadataManager = getMetadataManager(); - metadataManager.updateStudyMetadata(study, studyMetadata -> { - List fileIds = new ArrayList<>(files.size()); - for (String file : files) { - FileMetadata fileMetadata = metadataManager.getFileMetadata(studyMetadata.getId(), file); - if (fileMetadata == null) { - throw VariantQueryException.fileNotFound(file, study); - } - if (fileMetadata.getType() == FileMetadata.Type.PARTIAL) { - String virtualFileName = metadataManager.getFileName( - studyMetadata.getId(), - fileMetadata.getAttributes().getInt(FileMetadata.VIRTUAL_PARENT)); - throw new StorageEngineException("Unable to remove " + FileMetadata.Type.PARTIAL + " file. " - + "Try removing its virtual file : '" + virtualFileName + "'"); - } - fileIds.add(fileMetadata.getId()); - if (!fileMetadata.isIndexed()) { + + int studyId = metadataManager.getStudyId(study); + List fileIds = new ArrayList<>(files.size()); + for (String file : files) { + FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, file); + if (fileMetadata == null) { + throw VariantQueryException.fileNotFound(file, study); + } + if (fileMetadata.getType() == FileMetadata.Type.PARTIAL) { + String virtualFileName = metadataManager.getFileName( + studyId, + fileMetadata.getAttributes().getInt(FileMetadata.VIRTUAL_PARENT)); + throw new StorageEngineException("Unable to remove " + FileMetadata.Type.PARTIAL + " file. " + + "Try removing its virtual file : '" + virtualFileName + "'"); + } + if (fileMetadata.getIndexStatus() == TaskMetadata.Status.NONE) { + if (force) { + logger.info("Force remove. Removing non indexed file: " + fileMetadata.getName()); + } else { throw new StorageEngineException("Unable to remove non indexed file: " + fileMetadata.getName()); } } + if (fileMetadata.getIndexStatus() == TaskMetadata.Status.RUNNING) { + if (force) { + logger.info("Force remove. Removing file while being indexed: " + fileMetadata.getName()); + } else { + throw new StorageEngineException("Unable to remove file while being indexed: " + fileMetadata.getName()); + } + } + fileIds.add(fileMetadata.getId()); + } - boolean resume = getOptions().getBoolean(RESUME.key(), RESUME.defaultValue()); + metadataManager.updateStudyMetadata(study, studyMetadata -> { + List tasksToAbort = new ArrayList<>(); + HashSet fileIdsSet = new HashSet<>(fileIds); batchFileOperation.set(metadataManager.addRunningTask( studyMetadata.getId(), REMOVE_OPERATION_NAME, fileIds, resume, - TaskMetadata.Type.REMOVE)); + TaskMetadata.Type.REMOVE, runningTask -> { + if (runningTask.getType() == TaskMetadata.Type.LOAD) { + if (force && fileIdsSet.containsAll(runningTask.getFileIds())) { + // Abort running load task as all files are being removed + tasksToAbort.add(runningTask); + return true; + } else { + if (force) { + logger.error("Unable to force remove the file while other files are being loaded."); + } + // Unable to remove files. Other files are being loaded. + return false; + } + } else { + // Unable to remove files. Other tasks are running. + return false; + } + })); + // If the task was successfully created, abort other tasks. + for (TaskMetadata task : tasksToAbort) { + List fileNames = task.getFileIds().stream() + .map(fileId -> metadataManager.getFileName(studyMetadata.getId(), fileId)) + .collect(Collectors.toList()); + TaskMetadata.Status status = TaskMetadata.Status.ABORTED; + logger.info("Force remove. Setting status to " + status + " of running task " + + task.getName() + "('id=" + task.getId() + ") for files " + fileNames); + metadataManager.setStatus(studyMetadata.getId(), task.getId(), status); + } return studyMetadata; }); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyStudyMetadataDBAdaptor.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyStudyMetadataDBAdaptor.java index f954026b234..3d519030b19 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyStudyMetadataDBAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyStudyMetadataDBAdaptor.java @@ -222,7 +222,7 @@ public Iterator taskIterator(int studyId, List loadedGenotypes; private int sampleIndexVersion; @@ -182,19 +182,33 @@ protected void securePreLoad(StudyMetadata studyMetadata, VariantFileMetadata fi final AtomicInteger ongoingLoads = new AtomicInteger(1); // this boolean resume = options.getBoolean(VariantStorageOptions.RESUME.key(), VariantStorageOptions.RESUME.defaultValue()); - List fileIds = Collections.singletonList(getFileId()); - taskId = getMetadataManager() - .addRunningTask(studyId, OPERATION_NAME, fileIds, resume, Type.LOAD, + VariantStorageMetadataManager metadataManager = getMetadataManager(); + LinkedHashSet sampleIdsFromFileId = metadataManager.getSampleIdsFromFileId(studyId, getFileId()); + VariantStorageEngine.SplitData splitData = VariantStorageEngine.SplitData.from(options); + + taskId = metadataManager + .addRunningTask(studyId, OPERATION_NAME, Collections.singletonList(getFileId()), resume, Type.LOAD, operation -> { if (operation.getName().equals(OPERATION_NAME)) { - if (operation.currentStatus().equals(Status.ERROR)) { + if (operation.currentStatus() == Status.ERROR) { Integer fileId = operation.getFileIds().get(0); - String fileName = getMetadataManager().getFileName(studyMetadata.getId(), fileId); + String fileName = metadataManager.getFileName(studyMetadata.getId(), fileId); logger.warn("Pending load operation for file " + fileName + " (" + fileId + ')'); } else { ongoingLoads.incrementAndGet(); } + if (splitData != VariantStorageEngine.SplitData.CHROMOSOME && splitData != VariantStorageEngine.SplitData.REGION) { + // Do not allow any concurrent load operation on files sharing samples + for (Integer fileId : operation.getFileIds()) { + Set samples = metadataManager.getSampleIdsFromFileId(studyId, fileId); + for (Integer sample : samples) { + if (sampleIdsFromFileId.contains(sample)) { + return false; + } + } + } + } return true; } else { return false; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java index 2f0f6143b6b..afd6b54490e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java @@ -698,6 +698,11 @@ public void removeSamples(String study, List samples, URI outdir) throws remove(study, fullyDeletedFiles, samples, outdir); } + @Override + protected TaskMetadata preRemove(String study, List files, List samples) throws StorageEngineException { + return super.preRemove(study, files, samples); + } + @Override public void removeFiles(String study, List files, URI outdir) throws StorageEngineException { remove(study, files, Collections.emptyList(), outdir); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseTaskMetadataDBAdaptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseTaskMetadataDBAdaptor.java index 290f937631b..4fe8d236cc1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseTaskMetadataDBAdaptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseTaskMetadataDBAdaptor.java @@ -28,7 +28,7 @@ public TaskMetadata getTask(int studyId, int taskId, Long timeStamp) { @Override public Iterator taskIterator(int studyId, List statusFilter, boolean reversed) { - if (statusFilter == null) { + if (statusFilter == null || statusFilter.isEmpty()) { return iterator(getTaskRowKeyPrefix(studyId), TaskMetadata.class, reversed); } else if (statusFilter.contains(TaskMetadata.Status.READY)) { EnumSet set = EnumSet.copyOf(statusFilter); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java index f5ebbbe8fd6..c8bd80e1882 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java @@ -2,8 +2,11 @@ import htsjdk.variant.vcf.VCFConstants; import org.apache.commons.lang3.StringUtils; +import org.hamcrest.CoreMatchers; +import org.hamcrest.MatcherAssert; import org.junit.*; import org.junit.experimental.categories.Category; +import org.mockito.Mockito; import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.FileEntry; @@ -24,6 +27,7 @@ import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; +import org.opencb.opencga.storage.core.variant.VariantStoragePipeline; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; @@ -50,6 +54,7 @@ public class HadoopVariantStorageEngineSplitDataTest extends VariantStorageBaseTest implements HadoopVariantStorageTest { public static final List SAMPLES = Arrays.asList("NA19600", "NA19660", "NA19661", "NA19685"); + public static final String MOCKED_EXCEPTION = "Mocked exception"; @ClassRule public static HadoopExternalResource externalResource = new HadoopExternalResource(); @@ -63,6 +68,91 @@ public void tearDown() throws Exception { VariantHbaseTestUtils.printVariants(getVariantStorageEngine().getDBAdaptor(), newOutputUri(getTestName().getMethodName())); } + @Test + public void testMultiChromosomeSplitDataConcurrentFail() throws Exception { + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + failAtLoadingFile("by_chr/", "chr20.variant-test-file.vcf.gz", outputUri); + // Will fail if LOAD_SPLIT_DATA is not set + thrown.expect(StoragePipelineException.class); + variantStorageEngine.index(Collections.singletonList(getResourceUri("by_chr/chr21.variant-test-file.vcf.gz")), outputUri); + } + + @Test + public void testMultiChromosomeSplitDataConcurrentFailOneIndexOther() throws Exception { + // Test goal: + // - Index chr20 and chr21 concurrently with shared samples and LOAD_SPLIT_DATA=CHROMOSOME + // Test steps: + // - Fail at loading chr20 (left the file in status "RUNNING") + // - Index chr21 correctly with LOAD_SPLIT_DATA=CHROMOSOME + + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + failAtLoadingFile("by_chr/", "chr20.variant-test-file.vcf.gz", outputUri); + + // Won't fail if LOAD_SPLIT_DATA is set correctly + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_SPLIT_DATA.key(), VariantStorageEngine.SplitData.CHROMOSOME); + variantStorageEngine.index(Collections.singletonList(getResourceUri("by_chr/chr21.variant-test-file.vcf.gz")), outputUri); + } + + @Test + public void testMultiChromosomeSplitDataConcurrentFail3() throws Exception { + // Test goal: + // - Ensure file can be loaded after deleting a file with shared samples without any LOAD_SPLIT_DATA. + // Test steps: + // - Fail at loading chr20 (left the file in status "RUNNING") + // - Force remove chr20 + // - Index chr21 correctly + + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + failAtLoadingFile("by_chr/", "chr20.variant-test-file.vcf.gz", outputUri); + + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + variantStorageEngine.removeFile(STUDY_NAME, "chr20.variant-test-file.vcf.gz", outputUri); + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), false); + + variantStorageEngine.index(Collections.singletonList(getResourceUri("by_chr/chr21.variant-test-file.vcf.gz")), outputUri); + } + + @Test + public void testMultiChromosomeSplitDataConcurrentFailDelete() throws Exception { + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + failAtLoadingFile("by_chr/", "chr20.variant-test-file.vcf.gz", outputUri); + + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_SPLIT_DATA.key(), VariantStorageEngine.SplitData.CHROMOSOME); + variantStorageEngine.index(Collections.singletonList(getResourceUri("by_chr/chr21.variant-test-file.vcf.gz")), outputUri); + + try { + // FORCE=true is needed, as the file is not correctly indexed + // Set FORCE=false to assert exception + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), false); + variantStorageEngine.removeFile(STUDY_NAME, "chr20.variant-test-file.vcf.gz", outputUri); + fail(); + } catch (StorageEngineException e) { + assertEquals("Unable to remove non indexed file: chr20.variant-test-file.vcf.gz", e.getMessage()); + } + + // FORCE=true is needed, as the file is not correctly indexed + failAtDeletingFile("chr20.variant-test-file.vcf.gz", outputUri, 1, new ObjectMap(VariantStorageOptions.FORCE.key(), true)); + + try { + // FORCE=true is needed, as the file is not correctly indexed + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + // RESUME=true is needed, as the delete task is in status "RUNNING" from the previous failAtDeletingFile + // Set RESUME=false to assert exception + variantStorageEngine.getOptions().put(VariantStorageOptions.RESUME.key(), false); + variantStorageEngine.removeFile(STUDY_NAME, "chr20.variant-test-file.vcf.gz", outputUri); + fail(); + } catch (StorageEngineException e) { + assertEquals("Operation \"remove\" for files [\"chr20.variant-test-file.vcf.gz\" (id=1)] in status \"RUNNING\". Relaunch with resume=true to finish the operation.", e.getMessage()); + } + + + // FORCE=true is needed, as the file is not correctly indexed + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + // RESUME=true is needed, as the delete task is in status "RUNNING" + variantStorageEngine.getOptions().put(VariantStorageOptions.RESUME.key(), true); + variantStorageEngine.removeFile(STUDY_NAME, "chr20.variant-test-file.vcf.gz", outputUri); + } + @Test public void testMultiChromosomeSplitData() throws Exception { variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); @@ -131,6 +221,57 @@ public void testMultiChromosomeSplitData() throws Exception { }, QueryOptions.empty()); } + private void failAtLoadingFile(String x, String file1, URI outputUri) throws Exception { + try { + VariantStorageEngine engine = getMockedStorageEngine(new ObjectMap(VariantStorageOptions.STUDY.key(), STUDY_NAME)); + engine.index(Collections.singletonList(getResourceUri(x + file1)), outputUri); + fail("Should have thrown an exception"); + } catch (StoragePipelineException e) { + try { + assertEquals(MOCKED_EXCEPTION, e.getCause().getMessage()); + int studyId = metadataManager.getStudyId(STUDY_NAME); + FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, file1); + assertEquals(TaskMetadata.Status.NONE, fileMetadata.getIndexStatus()); + List runningTasks = new ArrayList<>(); + metadataManager.getRunningTasks(studyId).forEach(runningTasks::add); + assertEquals(1, runningTasks.size()); + assertEquals(TaskMetadata.Type.LOAD, runningTasks.get(0).getType()); + assertEquals(TaskMetadata.Status.RUNNING, runningTasks.get(0).currentStatus()); + assertEquals(Arrays.asList(fileMetadata.getId()), runningTasks.get(0).getFileIds()); + } catch (AssertionError error) { + e.printStackTrace(); + throw error; + } + } + } + + private void failAtDeletingFile(String file, URI outputUri, int expectedRunningTasks, ObjectMap options) throws Exception { + int studyId = metadataManager.getStudyId(STUDY_NAME); + FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, file); + try { + getMockedStorageEngine(options).removeFile(STUDY_NAME, file, outputUri); + fail("Should have thrown an exception"); + } catch (StorageEngineException e) { + try { + assertEquals(MOCKED_EXCEPTION, e.getMessage()); + assertEquals(TaskMetadata.Status.NONE, fileMetadata.getIndexStatus()); + List runningTasks = new ArrayList<>(); + metadataManager.getRunningTasks(studyId).forEach(runningTasks::add); + assertEquals(expectedRunningTasks, runningTasks.size()); + Optional optional = runningTasks.stream() + .filter(t -> t.getType() == TaskMetadata.Type.REMOVE && Arrays.asList(fileMetadata.getId()).equals(t.getFileIds())) + .findFirst(); + assertTrue(optional.isPresent()); + assertEquals(TaskMetadata.Type.REMOVE, optional.get().getType()); + assertEquals(TaskMetadata.Status.RUNNING, optional.get().currentStatus()); + assertEquals(Arrays.asList(fileMetadata.getId()), optional.get().getFileIds()); + } catch (AssertionError error) { + e.printStackTrace(); + throw error; + } + } + } + @Test public void testMultiChromosomeSplitDataVirtualFile() throws Exception { variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); @@ -406,6 +547,148 @@ private void checkIssueEntries_22_44681612_A_G(Variant v) { } + @Test + public void testLoadMultiFileDataConcurrency() throws Exception { + + URI outDir = newOutputUri(); + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), false); + variantStorageEngine.getOptions().put(VariantStorageOptions.FAMILY.key(), true); + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + + String resourceDir = "by_chr/"; + String file1 = "chr22.variant-test-file.vcf.gz"; + String file2 = "chr22_1-2-DUP.variant-test-file.vcf.gz"; + + failAtLoadingFile(resourceDir, file1, outDir); + + try { + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file2)), outDir); + } catch (StoragePipelineException e) { + MatcherAssert.assertThat(e.getCause().getMessage(), startsWith("Can not \"Load\" files")); + MatcherAssert.assertThat(e.getCause().getMessage(), CoreMatchers.containsString(file2)); + MatcherAssert.assertThat(e.getCause().getMessage(), CoreMatchers.containsString(file1)); + } + + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + variantStorageEngine.removeFile(STUDY_NAME, file1, outDir); + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file2)), outDir); + + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), true); +// variantStorageEngine.getOptions().put(VariantStorageOptions.RESUME.key(), true); + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file1)), outDir); + } + + + @Test + public void testLoadMultiFileDataConcurrencyDeleteMany() throws Exception { + + URI outDir = newOutputUri(); + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), false); + variantStorageEngine.getOptions().put(VariantStorageOptions.FAMILY.key(), true); + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + + String resourceDir = "platinum/"; + String file1 = "1K.end.platinum-genomes-vcf-NA12877_S1.vcf.gz"; + String file2 = "1K.end.platinum-genomes-vcf-NA12878_S1.vcf.gz"; + + failAtLoadingFile(resourceDir, file1, outDir); + failAtLoadingFile(resourceDir, file2, outDir); +// try { +// getMockedStorageEngine().index(Collections.singletonList(getResourceUri(resourceDir + file1)), outDir); +// fail("Should have thrown an exception"); +// } catch (StoragePipelineException e) { +// assertEquals(MOCKED_EXCEPTION, e.getCause().getMessage()); +// } +// try { +// getMockedStorageEngine().index(Collections.singletonList(getResourceUri(resourceDir + file2)), outDir); +// fail("Should have thrown an exception"); +// } catch (StoragePipelineException e) { +// assertEquals(MOCKED_EXCEPTION, e.getCause().getMessage()); +// } + + + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + try { + variantStorageEngine.removeFile(STUDY_NAME, file1, outDir); + fail(); + } catch (StorageEngineException e) { + MatcherAssert.assertThat(e.getMessage(), startsWith("Can not \"remove\" files")); + MatcherAssert.assertThat(e.getMessage(), CoreMatchers.containsString(file1)); + MatcherAssert.assertThat(e.getMessage(), CoreMatchers.containsString(file2)); + } + try { + variantStorageEngine.removeFile(STUDY_NAME, file2, outDir); + fail(); + } catch (StorageEngineException e) { + MatcherAssert.assertThat(e.getMessage(), startsWith("Can not \"remove\" files")); + MatcherAssert.assertThat(e.getMessage(), CoreMatchers.containsString(file1)); + MatcherAssert.assertThat(e.getMessage(), CoreMatchers.containsString(file2)); + } + variantStorageEngine.removeFiles(STUDY_NAME, Arrays.asList(file1, file2), outDir); + + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file2)), outDir); + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file1)), outDir); + } + + @Test + public void testLoadMultiFileDataConcurrencyFail() throws Exception { + + URI outDir = newOutputUri(); + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), false); + variantStorageEngine.getOptions().put(VariantStorageOptions.FAMILY.key(), true); + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + + String resourceDir = "by_chr/"; + String file1 = "chr22.variant-test-file.vcf.gz"; + String file2 = "chr22_1-2-DUP.variant-test-file.vcf.gz"; + + failAtLoadingFile(resourceDir, file1, outDir); + + try { + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file2)), outDir); + } catch (StoragePipelineException e) { + MatcherAssert.assertThat(e.getCause().getMessage(), startsWith("Can not \"Load\" files")); + MatcherAssert.assertThat(e.getCause().getMessage(), CoreMatchers.containsString(file2)); + MatcherAssert.assertThat(e.getCause().getMessage(), CoreMatchers.containsString(file1)); + } + + variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), true); + variantStorageEngine.getOptions().put(VariantStorageOptions.RESUME.key(), true); + variantStorageEngine.index(Collections.singletonList(getResourceUri(file1)), outDir); + + } + + private VariantStorageEngine getMockedStorageEngine() throws Exception { + return getMockedStorageEngine(new ObjectMap()); + } + + private VariantStorageEngine getMockedStorageEngine(ObjectMap options) throws Exception { + HadoopVariantStorageEngine mockedStorageEngine = Mockito.spy(getVariantStorageEngine()); + mockedStorageEngine.getOptions().putAll(options); + mockedStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + VariantStoragePipeline mockedPipeline = Mockito.spy(variantStorageEngine.newStoragePipeline(true)); + + Mockito.doReturn(mockedPipeline).when(mockedStorageEngine).newStoragePipeline(Mockito.anyBoolean()); +// Mockito.doThrow(new StoragePipelineException(MOCKED_EXCEPTION, Collections.emptyList())).when(mockedPipeline).load(Mockito.any(), Mockito.any()); + Mockito.doAnswer(invocation -> { + // Throw StorageEngineException when calling load + System.out.printf("MOCKED load(%s, %s)%n", invocation.getArgument(0), invocation.getArgument(1)); + System.out.println("MOCKED load throw StorageEngineException"); + throw new StoragePipelineException(MOCKED_EXCEPTION, Collections.emptyList()); + }).when(mockedPipeline).load(Mockito.any(), Mockito.any()); + + Mockito.doAnswer(invocation -> { + // Call real method when calling preRemove, then throw StorageEngineException + System.out.printf("MOCKED preRemove(%s, %s, %s)%n", invocation.getArgument(0), invocation.getArgument(1), invocation.getArgument(2)); + System.out.println("MOCKED preRemove callRealMethod"); + invocation.callRealMethod(); + System.out.println("MOCKED preRemove callRealMethod DONE"); + System.out.println("MOCKED preRemove throw StorageEngineException"); + throw new StorageEngineException(MOCKED_EXCEPTION); + }).when(mockedStorageEngine).preRemove(Mockito.any(), Mockito.any(), Mockito.any()); + return mockedStorageEngine; + } + @Test public void testLoadByRegion() throws Exception { URI outDir = newOutputUri(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java index 3557c5e55ff..e55f4bf5ea1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java @@ -46,6 +46,7 @@ import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.io.VariantWriterFactory; @@ -72,7 +73,6 @@ import java.util.zip.DataFormatException; import static org.opencb.opencga.storage.core.variant.VariantStorageBaseTest.getTmpRootDir; -import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageTest.configuration; /** * Utility class for VariantStorage hadoop tests @@ -236,8 +236,11 @@ private static void printVariantsFromDBAdaptor(VariantHadoopDBAdaptor dbAdaptor, } private static void printVariantsFromDBAdaptor(VariantHadoopDBAdaptor dbAdaptor, PrintStream out) { - VariantDBIterator iterator = dbAdaptor.iterator(new Query(VariantQueryParam.INCLUDE_SAMPLE_DATA.key(), "all,SAMPLE_ID") - .append(VariantQueryParam.INCLUDE_SAMPLE.key(), ParamConstants.ALL), + if (dbAdaptor.getMetadataManager().getStudyIds().isEmpty()) { + out.println("No studies found!"); + return; + } + VariantDBIterator iterator = dbAdaptor.iterator(new VariantQuery().includeSampleId(true).includeSampleAll(), new QueryOptions("simpleGenotypes", true)); ObjectMapper mapper = new ObjectMapper().configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true); while (iterator.hasNext()) { From 06ba227e152bf43e5921685d60af9703b0d586ed Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 29 Apr 2024 12:14:11 +0200 Subject: [PATCH 271/354] server: MailUtils enable SSL #TASK-464 --- .../main/java/org/opencb/opencga/core/common/MailUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index 7181db48b89..45c6d58ca06 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -39,7 +39,8 @@ public static void sendResetPasswordMail(String to, String newPassword, final St Properties props = new Properties(); props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.starttls.enable", ssl); + // props.put("mail.smtp.starttls.enable", ssl); + props.put("mail.smtp.ssl.enable", ssl); props.put("mail.smtp.host", mailHost); props.put("mail.smtp.port", mailPort); From 4338023e54bb95dd8853f3bc3f082680bcd5880c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 29 Apr 2024 13:26:53 +0200 Subject: [PATCH 272/354] server: added properties to mail MailUtils #TASK-464 --- .../main/java/org/opencb/opencga/core/common/MailUtils.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index 45c6d58ca06..e09fd420207 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -39,11 +39,13 @@ public static void sendResetPasswordMail(String to, String newPassword, final St Properties props = new Properties(); props.put("mail.smtp.auth", "true"); - // props.put("mail.smtp.starttls.enable", ssl); props.put("mail.smtp.ssl.enable", ssl); props.put("mail.smtp.host", mailHost); props.put("mail.smtp.port", mailPort); - + props.put("mail.smtp.starttls.enable", "true"); + props.put("mail.smtp.starttls.required", "true"); + props.put("mail.smtp.ssl.protocols", "TLSv1.2"); + props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { From 15576c99a34d162ea426123ea923317baf96d00c Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 29 Apr 2024 14:25:25 +0200 Subject: [PATCH 273/354] server: Change userName for userId #TASK-464 --- .../auth/authentication/CatalogAuthenticationManager.java | 2 +- .../main/java/org/opencb/opencga/core/common/MailUtils.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java index 2c14d8c78fa..d86d778a1e2 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java @@ -134,7 +134,7 @@ public OpenCGAResult resetPassword(String userId) throws CatalogException { String mailPort = this.emailConfig.getPort(); try { MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, - "true", ((User) user.getResults().get(0)).getName()); + "true", ((User) user.getResults().get(0)).getId()); result = userDBAdaptor.resetPassword(userId, email, newPassword); } catch (Exception e) { throw new CatalogException("Email could not be sent.", e); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index e09fd420207..7ff75f86698 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -35,7 +35,7 @@ public class MailUtils { private static final Logger logger = LoggerFactory.getLogger(MailUtils.class); public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort, String ssl, String UserName) throws Exception { + String mailHost, String mailPort, String ssl, String user_id) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); @@ -59,7 +59,7 @@ protected PasswordAuthentication getPasswordAuthentication() { InternetAddress.parse(to)); message.setSubject("XetaBase: Password Reset"); - message.setText(getEmailContent(UserName,newPassword)); + message.setText(getEmailContent(user_id,newPassword)); Transport.send(message); } From accfa3b86d7edff6ef67a6a1c1588ed8fae079b6 Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 30 Apr 2024 10:20:19 +0200 Subject: [PATCH 274/354] catalog: fix FORMAT and bioformat regex queries, #TASK-5932 --- .../db/mongodb/FileMongoDBAdaptor.java | 9 ++----- .../catalog/managers/FileManagerTest.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java index a0811254e65..38d24ed6674 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java @@ -1479,13 +1479,6 @@ private Bson parseQuery(Query query, Document extraQuery, String user) addAutoOrQuery(queryParam.key(), queryParam.key(), myQuery, queryParam.type(), andBsonList); } break; - case FORMAT: - case BIOFORMAT: - // Replace the value for an uppercase string as we know it will always be in that way - String uppercaseValue = myQuery.getString(queryParam.key()).toUpperCase(); - myQuery.put(queryParam.key(), uppercaseValue); - addAutoOrQuery(queryParam.key(), queryParam.key(), myQuery, queryParam.type(), andBsonList); - break; case UUID: case EXTERNAL: case TYPE: @@ -1493,6 +1486,8 @@ private Bson parseQuery(Query query, Document extraQuery, String user) case ID: case PATH: case RELEASE: + case FORMAT: + case BIOFORMAT: case TAGS: case SIZE: case SOFTWARE_NAME: diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java index a0517b1294a..c01d915498c 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java @@ -188,6 +188,32 @@ public void testLinkFileWithoutReadPermissions() throws IOException, CatalogExce fileManager.link(studyFqn, new FileLinkParams().setUri(file.getPath()), false, token); } + @Test + public void filterByFormatTest() throws CatalogException { + Query query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "PLAIN"); + OpenCGAResult search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "plain"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(0, search.getNumResults()); + + // Case sensitive search in lower case + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^pla/"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(0, search.getNumResults()); + + // Case sensitive in upper case + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^PLA/"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + + // Case insensitive search + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^pla/i"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + } + @Test public void createDirectoryTest() throws CatalogException { FileCreateParams params = new FileCreateParams() From 4a33662ac2d17fa6fe9ce1682e3590e8c7289254 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 30 Apr 2024 11:34:31 +0200 Subject: [PATCH 275/354] Prepare release 2.12.4 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 4958a137880..b9dfad55dc4 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 3daac8c0301..4a1ed3c2907 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index e20025edd44..7a0a54910ce 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 35402c7c932..797cdbcaabd 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 3ae7d4f552b..3deebdfe00c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 7d949bb6f58..d1bce7dd255 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 4df3d66a007..555b40fd93c 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 326718f8022..00cd35d1974 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 2823f273f28..b50473c3dea 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index cc328a5fdd8..237df394693 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 00bf4226afd..a78bc108cd3 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 453935bf26c..ae1663ed408 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 9df46c71579..299f46d55e1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 64a1da9403f..d39f818fa65 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index b1eae85ecec..c80452c7b80 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 164bbcc0560..fb5c1500b27 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 6e0196b0eb8..eb724763958 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 9ec6f2f1ab3..4927f1d5263 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 0c2ccaae662..5796b008eed 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 469922d6d88..0840b6813d5 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 ../pom.xml diff --git a/pom.xml b/pom.xml index 6421b21012a..893c4f54869 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4-SNAPSHOT + 2.12.4 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.4_dev - 2.12.4_dev - 5.8.3-SNAPSHOT - 2.12.2-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.4-SNAPSHOT + 2.12.4 + 2.12.4 + 5.8.3 + 2.12.2 + 4.12.0 + 2.12.4 0.2.0 2.11.4 From ae255c3650e49b6ddcf5abe6e358372e9955c3d3 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 30 Apr 2024 11:37:16 +0200 Subject: [PATCH 276/354] Prepare next release 2.12.5-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index b9dfad55dc4..0e8c8b94814 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 4a1ed3c2907..ae72959c680 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 7a0a54910ce..120850f20f8 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 797cdbcaabd..dfe20bc1c6d 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 3deebdfe00c..e17ae02a3c5 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index d1bce7dd255..f64f0c82cd5 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 555b40fd93c..3010de9e741 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 00cd35d1974..35730710dd5 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index b50473c3dea..dee5f5ab22d 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 237df394693..f566fb8d61a 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index a78bc108cd3..d2569f51505 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ae1663ed408..98684f89345 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 299f46d55e1..c40bd0c545e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index d39f818fa65..f2ab268c070 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index c80452c7b80..c78627c4980 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index fb5c1500b27..5f0d66e4a26 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index eb724763958..ede0e9d5479 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 4927f1d5263..46032914536 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 5796b008eed..b318a6c26bb 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 0840b6813d5..ae075a55888 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 893c4f54869..29536c3be50 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.5-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.4 - 2.12.4 - 5.8.3 - 2.12.2 - 4.12.0 - 2.12.4 + 2.12.5_dev + 2.12.5_dev + 5.8.4-SNAPSHOT + 2.12.3-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.5-SNAPSHOT 0.2.0 2.11.4 From f4f67c2afdefa86fae72773accecc54bed7c39a7 Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 2 May 2024 13:00:10 +0200 Subject: [PATCH 277/354] catalog: remove references from cases when file is deleted, #TASK-5535 --- .../ClinicalAnalysisMongoDBAdaptor.java | 27 ++++++- .../db/mongodb/FileMongoDBAdaptor.java | 1 + .../opencga/catalog/managers/FileManager.java | 17 +++-- .../catalog/managers/FileManagerTest.java | 73 +++++++++++++++++++ 4 files changed, 110 insertions(+), 8 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java index dd5b90a22d8..078554b4737 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/ClinicalAnalysisMongoDBAdaptor.java @@ -31,9 +31,7 @@ import org.opencb.commons.datastore.core.*; import org.opencb.commons.datastore.mongodb.MongoDBCollection; import org.opencb.commons.datastore.mongodb.MongoDBIterator; -import org.opencb.opencga.catalog.db.api.ClinicalAnalysisDBAdaptor; -import org.opencb.opencga.catalog.db.api.DBIterator; -import org.opencb.opencga.catalog.db.api.InterpretationDBAdaptor; +import org.opencb.opencga.catalog.db.api.*; import org.opencb.opencga.catalog.db.mongodb.converters.ClinicalAnalysisConverter; import org.opencb.opencga.catalog.db.mongodb.iterators.ClinicalAnalysisCatalogMongoDBIterator; import org.opencb.opencga.catalog.exceptions.CatalogAuthorizationException; @@ -151,6 +149,10 @@ static void fixFilesForRemoval(ObjectMap parameters, String key) { for (Object file : parameters.getAsList(key)) { if (file instanceof File) { fileParamList.add(new Document("uid", ((File) file).getUid())); + } else if (file instanceof Document) { + fileParamList.add(new Document("uid", ((Document) file).get("uid"))); + } else { + throw new IllegalArgumentException("Expected a File or Document object"); } } parameters.put(key, fileParamList); @@ -814,6 +816,25 @@ OpenCGAResult privateDelete(ClientSession clientSession, ClinicalAnalysis cli return endWrite(tmpStartTime, 1, 0, 0, 1, Collections.emptyList()); } + void removeFileReferences(ClientSession clientSession, long studyUid, long fileUid, Document file) + throws CatalogParameterException, CatalogDBException, CatalogAuthorizationException { + ObjectMap parameters = new ObjectMap(FILES.key(), Collections.singletonList(file)); + ObjectMap actionMap = new ObjectMap(FILES.key(), ParamUtils.BasicUpdateAction.REMOVE); + QueryOptions options = new QueryOptions(Constants.ACTIONS, actionMap); + + Query query = new Query() + .append(QueryParams.STUDY_UID.key(), studyUid) + .append(QueryParams.FILES_UID.key(), fileUid); + OpenCGAResult result = get(query, ClinicalAnalysisManager.INCLUDE_CLINICAL_IDS); + for (ClinicalAnalysis clinicalAnalysis : result.getResults()) { + logger.debug("Removing file references from Clinical Analysis {}", clinicalAnalysis.getId()); + ClinicalAudit clinicalAudit = new ClinicalAudit("OPENCGA", ClinicalAudit.Action.UPDATE_CLINICAL_ANALYSIS, "File " + + file.getString(FileDBAdaptor.QueryParams.PATH.key()) + " was deleted. Remove file references from case.", + TimeUtils.getTime()); + transactionalUpdate(clientSession, clinicalAnalysis, parameters, null, Collections.singletonList(clinicalAudit), options); + } + } + @Override public OpenCGAResult restore(long id, QueryOptions queryOptions) throws CatalogDBException { return null; diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java index a0811254e65..3b5a14684b4 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java @@ -1008,6 +1008,7 @@ OpenCGAResult privateDelete(ClientSession clientSession, Document fileDo long tmpFileUid = tmpFile.getLong(PRIVATE_UID); dbAdaptorFactory.getCatalogJobDBAdaptor().removeFileReferences(clientSession, studyUid, tmpFileUid, tmpFile); + dbAdaptorFactory.getClinicalAnalysisDBAdaptor().removeFileReferences(clientSession, studyUid, tmpFileUid, tmpFile); // Set status nestedPut(QueryParams.INTERNAL_STATUS.key(), getMongoDBDocument(new FileStatus(status), "status"), tmpFile); diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java index 0832d689440..f1bd98c2a90 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java @@ -30,10 +30,7 @@ import org.opencb.commons.utils.ListUtils; import org.opencb.opencga.catalog.auth.authorization.AuthorizationManager; import org.opencb.opencga.catalog.db.DBAdaptorFactory; -import org.opencb.opencga.catalog.db.api.DBIterator; -import org.opencb.opencga.catalog.db.api.FileDBAdaptor; -import org.opencb.opencga.catalog.db.api.SampleDBAdaptor; -import org.opencb.opencga.catalog.db.api.StudyDBAdaptor; +import org.opencb.opencga.catalog.db.api.*; import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; import org.opencb.opencga.catalog.exceptions.*; import org.opencb.opencga.catalog.io.IOManager; @@ -1836,7 +1833,7 @@ public OpenCGAResult unlink(@Nullable String studyId, String fileId, Strin } catch (CatalogException e) { auditManager.audit(userId, Enums.Action.UNLINK, Enums.Resource.FILE, fileId, "", study.getId(), study.getUuid(), auditParams, new AuditRecord.Status(AuditRecord.Status.Result.ERROR, e.getError())); - throw e; + throw new CatalogException("Could not unlink file '" + fileId + "'", e); } } @@ -3100,6 +3097,16 @@ private void checkCanDeleteFile(Study study, String fileId, boolean unlink, List // TODO: Validate no file/folder within any registered directory is not registered in OpenCGA } + Query clinicalQuery = new Query() + .append(ClinicalAnalysisDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()) + .append(ClinicalAnalysisDBAdaptor.QueryParams.FILES_UID.key(), file.getUid()) + .append(ClinicalAnalysisDBAdaptor.QueryParams.LOCKED.key(), true); + OpenCGAResult count = clinicalDBAdaptor.count(clinicalQuery); + if (count.getNumMatches() > 0) { + throw new CatalogException("The file " + file.getName() + " is part of " + count.getNumMatches() + " clinical analyses"); + } + + // Check the original files are not being indexed at the moment if (!indexFiles.isEmpty()) { Query query = new Query(FileDBAdaptor.QueryParams.UID.key(), new ArrayList<>(indexFiles)); diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java index a0517b1294a..d105ba55342 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java @@ -38,11 +38,17 @@ import org.opencb.opencga.catalog.io.IOManager; import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.catalog.utils.ParamUtils; +import org.opencb.opencga.core.common.JacksonUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.common.UriUtils; import org.opencb.opencga.core.models.AclEntryList; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysis; +import org.opencb.opencga.core.models.clinical.ClinicalAnalysisUpdateParams; import org.opencb.opencga.core.models.common.AnnotationSet; +import org.opencb.opencga.core.models.family.Family; import org.opencb.opencga.core.models.file.*; +import org.opencb.opencga.core.models.individual.Individual; +import org.opencb.opencga.core.models.panel.Panel; import org.opencb.opencga.core.models.sample.Sample; import org.opencb.opencga.core.models.study.*; import org.opencb.opencga.core.models.user.Account; @@ -2196,6 +2202,73 @@ public void deleteFolderTest4() throws CatalogException, IOException { } } + @Test + public void deleteFileInClinicalAnalysis() throws CatalogException, IOException { + // START DATA PREPARATION FOR TEST !!! + String bamFile = getClass().getResource("/biofiles/NA19600.chrom20.small.bam").getFile(); + File file = fileManager.link(studyFqn, new FileLinkParams(bamFile, "", "", "", null, null, null, null, null), false, token).first(); + + Family family1 = DummyModelUtils.getDummyFamily("familyId1"); + catalogManager.getFamilyManager().create(studyFqn, family1, QueryOptions.empty(), token); + + // Associate BAM file to sample + String sampleId = family1.getMembers().get(0).getSamples().get(0).getId(); + catalogManager.getFileManager().update(studyFqn, file.getId(), new FileUpdateParams().setSampleIds(Collections.singletonList(sampleId)), + QueryOptions.empty(), token); + + Panel myPanel = DummyModelUtils.getDummyPanel("myPanel"); + catalogManager.getPanelManager().create(studyFqn, myPanel, QueryOptions.empty(), token); + + Family copy = JacksonUtils.copy(family1, Family.class); + for (Individual member : copy.getMembers()) { + // Only use the first sample + member.setSamples(Collections.singletonList(member.getSamples().get(0))); + } + + ClinicalAnalysis clinicalAnalysis1 = DummyModelUtils.getDummyClinicalAnalysis(copy.getMembers().get(0), copy, Collections.singletonList(myPanel)); + clinicalAnalysis1 = catalogManager.getClinicalAnalysisManager().create(studyFqn, clinicalAnalysis1, INCLUDE_RESULT, token).first(); + assertEquals(1, clinicalAnalysis1.getFiles().size()); + assertEquals(file.getPath(), clinicalAnalysis1.getFiles().get(0).getPath()); + assertFalse(clinicalAnalysis1.isLocked()); + + ClinicalAnalysis clinicalAnalysis2 = DummyModelUtils.getDummyClinicalAnalysis(copy.getMembers().get(0), copy, Collections.singletonList(myPanel)); + clinicalAnalysis2 = catalogManager.getClinicalAnalysisManager().create(studyFqn, clinicalAnalysis2, INCLUDE_RESULT, token).first(); + assertEquals(1, clinicalAnalysis2.getFiles().size()); + assertEquals(file.getPath(), clinicalAnalysis2.getFiles().get(0).getPath()); + assertFalse(clinicalAnalysis2.isLocked()); + + // Lock clinicalAnalysis2 + clinicalAnalysis2 = catalogManager.getClinicalAnalysisManager().update(studyFqn, clinicalAnalysis2.getId(), + new ClinicalAnalysisUpdateParams().setLocked(true), INCLUDE_RESULT, token).first(); + assertTrue(clinicalAnalysis2.isLocked()); + // END DATA PREPARATION FOR TEST !!! + + // Mark as pending delete + catalogManager.getFileManager().fileDBAdaptor.update(file.getUid(), new ObjectMap(FileDBAdaptor.QueryParams.INTERNAL_STATUS_ID.key(), FileStatus.PENDING_DELETE), QueryOptions.empty()); + CatalogException catalogException = assertThrows(CatalogException.class, () -> catalogManager.getFileManager().unlink(studyFqn, file.getId(), token)); + assertTrue(catalogException.getMessage().contains("Could not unlink")); + assertTrue(catalogException.getCause().getMessage().contains("clinical analyses")); + + // Unlock clinicalAnalysis2 + clinicalAnalysis2 = catalogManager.getClinicalAnalysisManager().update(studyFqn, clinicalAnalysis2.getId(), + new ClinicalAnalysisUpdateParams().setLocked(false), INCLUDE_RESULT, token).first(); + assertFalse(clinicalAnalysis2.isLocked()); + + // Unlink file + catalogManager.getFileManager().unlink(studyFqn, file.getId(), token); + + Sample sample = catalogManager.getSampleManager().get(studyFqn, sampleId, QueryOptions.empty(), token).first(); + assertEquals(0, sample.getFileIds().size()); + + OpenCGAResult search = catalogManager.getClinicalAnalysisManager().search(studyFqn, new Query(), QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + for (ClinicalAnalysis clinicalAnalysis : search.getResults()) { + assertEquals(0, clinicalAnalysis.getFiles().size()); + assertEquals("OPENCGA", clinicalAnalysis.getAudit().get(clinicalAnalysis.getAudit().size() - 1).getAuthor()); + assertTrue(clinicalAnalysis.getAudit().get(clinicalAnalysis.getAudit().size() - 1).getMessage().contains("was deleted. Remove file references from case")); + } + } + private File createBasicDirectoryFileTestEnvironment(List folderFiles) throws CatalogException { File folder = fileManager.createFolder(studyFqn, Paths.get("folder").toString(), false, null, QueryOptions.empty(), token).first(); From b73503d7dde8f7ce18629e87a39abda176b216f7 Mon Sep 17 00:00:00 2001 From: pfurio Date: Fri, 3 May 2024 12:38:58 +0200 Subject: [PATCH 278/354] catalog: remove references from relatedFiles, #TASK-5535 - remove references when a file is deleted/unlinked --- .../opencga/catalog/db/api/FileDBAdaptor.java | 1 + .../db/mongodb/FileMongoDBAdaptor.java | 40 ++++++++++++++++++- .../db/mongodb/converters/FileConverter.java | 2 +- .../opencga/catalog/managers/FileManager.java | 8 ++-- .../catalog/managers/FileManagerTest.java | 26 +++++++++++- 5 files changed, 71 insertions(+), 6 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/FileDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/FileDBAdaptor.java index 86e62f1ebc1..2690fb210ab 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/FileDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/api/FileDBAdaptor.java @@ -68,6 +68,7 @@ enum QueryParams implements QueryParam { INTERNAL_STATUS_DESCRIPTION("internal.status.description", TEXT, ""), INTERNAL_STATUS_DATE("internal.status.date", TEXT, ""), RELATED_FILES("relatedFiles", TEXT_ARRAY, ""), + RELATED_FILES_FILE_UID("relatedFiles.file.uid", LONG, ""), RELATED_FILES_RELATION("relatedFiles.relation", TEXT, ""), SIZE("size", INTEGER, ""), EXPERIMENT("experiment", OBJECT, ""), diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java index 3b5a14684b4..1cb95b8995a 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java @@ -40,6 +40,7 @@ import org.opencb.opencga.catalog.managers.FileUtils; import org.opencb.opencga.catalog.managers.SampleManager; import org.opencb.opencga.catalog.utils.Constants; +import org.opencb.opencga.catalog.utils.ParamUtils; import org.opencb.opencga.catalog.utils.ParamUtils.BasicUpdateAction; import org.opencb.opencga.catalog.utils.UuidUtils; import org.opencb.opencga.core.api.ParamConstants; @@ -785,7 +786,8 @@ private UpdateDocument getValidatedUpdateParams(ClientSession clientSession, lon document.getSet().put(QueryParams.RELATED_FILES.key(), relatedFileDocument); break; case REMOVE: - document.getPullAll().put(QueryParams.RELATED_FILES.key(), relatedFileDocument); + List documentList = fixRelatedFilesForRemoval(relatedFileDocument); + document.getPull().put(QueryParams.RELATED_FILES.key(), documentList); break; case ADD: document.getAddToSet().put(QueryParams.RELATED_FILES.key(), relatedFileDocument); @@ -886,6 +888,18 @@ private UpdateDocument getValidatedUpdateParams(ClientSession clientSession, lon return document; } + private List fixRelatedFilesForRemoval(List relatedFiles) { + if (CollectionUtils.isEmpty(relatedFiles)) { + return Collections.emptyList(); + } + + List relatedFilesCopy = new ArrayList<>(relatedFiles.size()); + for (Document relatedFile : relatedFiles) { + relatedFilesCopy.add(new Document("file", new Document("uid", relatedFile.get("file", Document.class).get("uid")))); + } + return relatedFilesCopy; + } + @Override public OpenCGAResult delete(File file) throws CatalogDBException { throw new UnsupportedOperationException("Use delete passing status field."); @@ -1007,6 +1021,7 @@ OpenCGAResult privateDelete(ClientSession clientSession, Document fileDo Document tmpFile = iterator.next(); long tmpFileUid = tmpFile.getLong(PRIVATE_UID); + removeFileReferences(clientSession, studyUid, tmpFileUid, tmpFile); dbAdaptorFactory.getCatalogJobDBAdaptor().removeFileReferences(clientSession, studyUid, tmpFileUid, tmpFile); dbAdaptorFactory.getClinicalAnalysisDBAdaptor().removeFileReferences(clientSession, studyUid, tmpFileUid, tmpFile); @@ -1036,6 +1051,28 @@ OpenCGAResult privateDelete(ClientSession clientSession, Document fileDo } } + void removeFileReferences(ClientSession clientSession, long studyUid, long fileUid, Document fileDoc) + throws CatalogParameterException, CatalogDBException, CatalogAuthorizationException { + File file = fileConverter.convertToDataModelType(fileDoc); + FileRelatedFile relatedFile = new FileRelatedFile(file, null); + ObjectMap parameters = new ObjectMap(QueryParams.RELATED_FILES.key(), Collections.singletonList(relatedFile)); + ObjectMap actionMap = new ObjectMap(QueryParams.RELATED_FILES.key(), ParamUtils.BasicUpdateAction.REMOVE); + QueryOptions options = new QueryOptions(Constants.ACTIONS, actionMap); + + Query query = new Query() + .append(QueryParams.STUDY_UID.key(), studyUid) + .append(QueryParams.RELATED_FILES_FILE_UID.key(), fileUid); + UpdateDocument updateDocument = getValidatedUpdateParams(clientSession, studyUid, parameters, query, options); + Document updateDoc = updateDocument.toFinalUpdateDocument(); + if (!updateDoc.isEmpty()) { + Bson bsonQuery = parseQuery(query); + OpenCGAResult result = transactionalUpdate(clientSession, studyUid, bsonQuery, updateDocument); + if (result.getNumUpdated() > 0) { + logger.debug("File '{}' removed from related files array from {} files.", file.getPath(), result.getNumUpdated()); + } + } + } + // OpenCGAResult privateDelete(ClientSession clientSession, File file, String status) throws CatalogDBException { // long tmpStartTime = startQuery(); // logger.debug("Deleting file {} ({})", file.getPath(), file.getUid()); @@ -1497,6 +1534,7 @@ private Bson parseQuery(Query query, Document extraQuery, String user) case TAGS: case SIZE: case SOFTWARE_NAME: + case RELATED_FILES_FILE_UID: case JOB_ID: addAutoOrQuery(queryParam.key(), queryParam.key(), myQuery, queryParam.type(), andBsonList); break; diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/FileConverter.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/FileConverter.java index 267666f77f0..c4db86b7408 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/FileConverter.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/converters/FileConverter.java @@ -107,7 +107,7 @@ public List convertRelatedFiles(List relatedFileList) if (ListUtils.isNotEmpty(relatedFileList)) { for (FileRelatedFile relatedFile : relatedFileList) { relatedFiles.add(new Document() - .append("relation", relatedFile.getRelation().name()) + .append("relation", relatedFile.getRelation() != null ? relatedFile.getRelation().name() : null) .append("file", new Document("uid", relatedFile.getFile().getUid())) ); } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java index f1bd98c2a90..2d411253440 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java @@ -1535,7 +1535,7 @@ public OpenCGAResult delete(String studyStr, List fileIds, QueryOptions return delete(studyStr, fileIds, options, false, token); } - public OpenCGAResult delete(String studyStr, List fileIds, ObjectMap params, boolean ignoreException, String token) + public OpenCGAResult delete(String studyStr, List fileIds, QueryOptions options, boolean ignoreException, String token) throws CatalogException { String userId = catalogManager.getUserManager().getUserId(token); Study study = studyManager.resolveId(studyStr, userId, new QueryOptions(QueryOptions.INCLUDE, @@ -1546,13 +1546,15 @@ public OpenCGAResult delete(String studyStr, List fileIds, ObjectMap par ObjectMap auditParams = new ObjectMap() .append("study", studyStr) .append("fileIds", fileIds) - .append("params", params) + .append("options", options) .append("ignoreException", ignoreException) .append("token", token); + QueryOptions queryOptions = options != null ? new QueryOptions(options) : new QueryOptions(); + // We need to avoid processing subfolders or subfiles of an already processed folder independently Set processedPaths = new HashSet<>(); - boolean physicalDelete = params.getBoolean(Constants.SKIP_TRASH, false); + boolean physicalDelete = queryOptions.getBoolean(Constants.SKIP_TRASH, false); auditManager.initAuditBatch(operationUuid); OpenCGAResult result = OpenCGAResult.empty(File.class); diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java index d105ba55342..c381295d180 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java @@ -1032,7 +1032,7 @@ public void testUnlinkFile() throws CatalogException, IOException { // We send the unlink command again thrown.expect(CatalogException.class); - thrown.expectMessage("not found"); + thrown.expectMessage("not unlink"); fileManager.unlink(studyFqn, "myDirectory/data/test/folder/test_0.5K.txt", token); } @@ -2269,6 +2269,30 @@ public void deleteFileInClinicalAnalysis() throws CatalogException, IOException } } + @Test + public void deleteFileUserInRelatedFilesTest() throws CatalogException { + fileManager.update(studyFqn, "data/test/folder/test_1K.txt.gz", + new FileUpdateParams().setRelatedFiles(Collections.singletonList( + new SmallRelatedFileParams("data/test/folder/test_0.5K.txt", FileRelatedFile.Relation.PART_OF_PAIR))), + null, token); + File file = fileManager.get(studyFqn, "data/test/folder/test_1K.txt.gz", QueryOptions.empty(), token).first(); + assertFalse(file.getRelatedFiles().isEmpty()); + assertEquals(1, file.getRelatedFiles().size()); + assertEquals("data/test/folder/test_0.5K.txt", file.getRelatedFiles().get(0).getFile().getPath()); + + file = fileManager.get(studyFqn, "data/test/folder/test_0.5K.txt", FileManager.INCLUDE_FILE_IDS, token).first(); + + // Mark as pending delete + catalogManager.getFileManager().fileDBAdaptor.update(file.getUid(), new ObjectMap(FileDBAdaptor.QueryParams.INTERNAL_STATUS_ID.key(), FileStatus.PENDING_DELETE), QueryOptions.empty()); + // Delete test_0.5K file + QueryOptions options = new QueryOptions(Constants.SKIP_TRASH, true); + fileManager.delete(studyFqn, Collections.singletonList("data/test/folder/test_0.5K.txt"), options, token); + + // Ensure there are no more references to test_0.5K file + file = fileManager.get(studyFqn, "data/test/folder/test_1K.txt.gz", QueryOptions.empty(), token).first(); + assertTrue(file.getRelatedFiles().isEmpty()); + } + private File createBasicDirectoryFileTestEnvironment(List folderFiles) throws CatalogException { File folder = fileManager.createFolder(studyFqn, Paths.get("folder").toString(), false, null, QueryOptions.empty(), token).first(); From bb19f7548291867606a4fd2a5adf3a97b5a47f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 3 May 2024 22:54:07 +0100 Subject: [PATCH 279/354] storage: Add migration to detect invalid files and samples. #TASK-6078 --- ...llegalConcurrentFileLoadingsMigration.java | 265 ++++++++++++++++++ .../exceptions/StorageEngineException.java | 5 + .../VariantStorageMetadataManager.java | 12 +- .../adaptors/FileMetadataDBAdaptor.java | 4 - .../core/metadata/models/TaskMetadata.java | 6 + .../core/variant/VariantStoragePipeline.java | 12 +- .../adaptors/VariantQueryException.java | 4 + .../variant/query/VariantQueryParser.java | 14 + .../SampleIndexVariantQueryExecutor.java | 2 +- .../index/sample/SampleIndexQueryParser.java | 2 +- ...doopVariantStorageEngineSplitDataTest.java | 80 ++++++ 11 files changed, 395 insertions(+), 11 deletions(-) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java new file mode 100644 index 00000000000..68a40c4901e --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -0,0 +1,265 @@ +package org.opencb.opencga.app.migrations.v2_12_5.storage; + +import org.opencb.commons.datastore.core.ObjectMap; +import org.opencb.commons.datastore.core.Query; +import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.app.migrations.StorageMigrationTool; +import org.opencb.opencga.catalog.db.api.FileDBAdaptor; +import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.core.common.TimeUtils; +import org.opencb.opencga.core.common.UriUtils; +import org.opencb.opencga.core.models.file.File; +import org.opencb.opencga.storage.core.exceptions.StorageEngineException; +import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; +import org.opencb.opencga.storage.core.metadata.models.FileMetadata; +import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; +import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; +import org.opencb.opencga.storage.core.variant.VariantStorageEngine; +import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; +import org.opencb.opencga.storage.core.variant.adaptors.VariantField; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; + +import java.time.Instant; +import java.util.*; +import java.util.stream.Collectors; + +@Migration(id = "illegal_concurrent_file_loadings" , + description = "Detect illegal concurrent file loadings and fix them by setting 'status' to 'INVALID' or 'READY'", + version = "2.12.5", + manual = true, + domain = Migration.MigrationDomain.STORAGE, + language = Migration.MigrationLanguage.JAVA, + date = 20240424 +) +public class DetectIllegalConcurrentFileLoadingsMigration extends StorageMigrationTool { + + @Override + protected void run() throws Exception { + for (String project : getVariantStorageProjects()) { + VariantStorageEngine engine = getVariantStorageEngineByProject(project); + if (!engine.getStorageEngineId().equals("hadoop")) { + continue; + } + logger.info("Checking project '{}'", project); + for (String study : engine.getMetadataManager().getStudyNames()) { + checkStudy(engine, study); + } + } + } + + private void checkStudy(VariantStorageEngine engine, String study) throws StorageEngineException, CatalogException { + VariantStorageMetadataManager metadataManager = engine.getMetadataManager(); + + logger.info("Checking study '{}'", study); + int studyId = metadataManager.getStudyId(study); + + Set> fileSets = getFileWithSharedSamples(engine, studyId); + Set fileIds = fileSets.stream().flatMap(Collection::stream).collect(Collectors.toSet()); + + if (fileSets.isEmpty()) { + logger.info("No concurrent file loadings found in study '{}'", study); + return; + } + + Map fileTasks = new HashMap<>(); + for (TaskMetadata taskMetadata : metadataManager.taskIterable(studyId)) { + if (taskMetadata.getType() == TaskMetadata.Type.LOAD) { + for (Integer fileId : taskMetadata.getFileIds()) { + if (fileIds.contains(fileId)) { + TaskMetadata old = fileTasks.put(fileId, taskMetadata); + if (old != null) { + throw new IllegalStateException("File '" + fileId + "' is being loaded by more than one task." + + " Tasks '" + old.getName() + "'(" + old.getId() + ") and" + + " '" + taskMetadata.getName() + "'(" + taskMetadata.getId() + ")"); + } + } + } + } + } + + Set> fileSetsToInvalidate = new HashSet<>(); + Set affectedFiles = new HashSet<>(); + Set affectedSamples = new HashSet<>(); + for (Set fileSet : fileSets) { + // Check if any task from this file set overlaps in time + List tasks = new ArrayList<>(); + for (Integer fileId : fileSet) { + TaskMetadata task = fileTasks.get(fileId); + if (task != null) { + tasks.add(task); + } + } + if (tasks.size() > 1) { + logger.info("Found {} tasks loading files {}", tasks.size(), fileSet); + for (int i = 0; i < tasks.size(); i++) { + TaskMetadata task1 = tasks.get(i); + Date task1start = task1.getStatus().firstKey(); + Date task1end = task1.getStatus().lastKey(); + for (int f = i + 1; f < tasks.size(); f++) { + TaskMetadata task2 = tasks.get(f); + Date task2start = task2.getStatus().firstKey(); + Date task2end = task2.getStatus().lastKey(); + if (task1start.before(task2end) && task1end.after(task2start)) { + fileSetsToInvalidate.add(fileSet); + affectedFiles.addAll(task1.getFileIds()); + + List task1Files = task1.getFileIds().stream().map(fileId -> "'" + metadataManager.getFileName(studyId, fileId) + "'(" + fileId + ")").collect(Collectors.toList()); + List task2Files = task2.getFileIds().stream().map(fileId -> "'" + metadataManager.getFileName(studyId, fileId) + "'(" + fileId + ")").collect(Collectors.toList()); + + logger.info("Tasks '{}'({}) and '{}'({}) overlap in time", task1.getName(), task1.getId(), task2.getName(), task2.getId()); + logger.info("Task1: {} - {} loading files {}", task1start, task1end, task1Files); + logger.info("Task2: {} - {} loading files {}", task2start, task2end, task2Files); + Set task1Samples = task1.getFileIds().stream().flatMap(file -> metadataManager.getSampleIdsFromFileId(studyId, file).stream()).collect(Collectors.toSet()); + Set task2Samples = task2.getFileIds().stream().flatMap(file -> metadataManager.getSampleIdsFromFileId(studyId, file).stream()).collect(Collectors.toSet()); + for (Integer task1Sample : task1Samples) { + if (task2Samples.contains(task1Sample)) { + String sampleName = metadataManager.getSampleName(studyId, task1Sample); + affectedSamples.add(task1Sample); + logger.info("Sample '{}'({}) is shared between tasks", sampleName, task1Sample); + } + } + } + } + } + } + + Set invalidFiles = new HashSet<>(); + List invalidSampleIndexes = new ArrayList<>(); + for (Integer sampleId : affectedSamples) { + String sampleName = metadataManager.getSampleName(studyId, sampleId); + SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(studyId, sampleId); + if (!sampleMetadata.isMultiFileSample()) { + logger.warn("Sample '{}'({}) is not a multi-file sample but has multiple files loaded", sampleName, sampleId); + for (Integer file : sampleMetadata.getFiles()) { + if (metadataManager.isFileIndexed(studyId, file)) { + invalidFiles.add(file); + logger.info(" - Invalidating file '{}'({}). Must be deleted and then indexed.", + metadataManager.getFileName(studyId, file), file); + } + } + } else if (sampleMetadata.getSampleIndexStatus(sampleMetadata.getSampleIndexVersion()) == TaskMetadata.Status.READY) { + for (Integer fileId : sampleMetadata.getFiles()) { + if (affectedFiles.contains(fileId)) { + FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, fileId); + String fileName = fileMetadata.getName(); + + long actualCount = engine.get(new VariantQuery().study(study).sample(sampleName).file(fileName), + new QueryOptions(QueryOptions.INCLUDE, VariantField.ID).append(QueryOptions.COUNT, true)) + .getNumMatches(); + + File catalogFile = catalogManager.getFileManager().search(study, + new Query(FileDBAdaptor.QueryParams.URI.key(), UriUtils.createUriSafe(fileMetadata.getPath())), + new QueryOptions(), token).first(); + if (catalogFile == null) { + logger.warn("File '{}'({}) not found in catalog", fileName, fileId); + logger.warn("Sample '{}'({}) invalidated, as file '{}'({}) is not found in catalog", sampleName, sampleId, fileName, fileId); + logger.info(" - Invalidating sample index for sample '{}'({})", sampleName, sampleId); + invalidSampleIndexes.add(sampleId); + continue; + } + if (fileMetadata.getSamples().size() == 1) { + long expectedCount = 0; + for (Map.Entry entry : catalogFile.getQualityControl().getVariant() + .getVariantSetMetrics().getGenotypeCount().entrySet()) { + if (GenotypeClass.MAIN_ALT.test(entry.getKey())) { + expectedCount += entry.getValue(); + } + } + if (expectedCount == 0) { + expectedCount = catalogFile.getQualityControl().getVariant().getVariantSetMetrics().getVariantCount(); + } + if (expectedCount != actualCount) { + invalidSampleIndexes.add(sampleId); + logger.warn("Sample '{}'({}) was expected to have {} variants in the sample index of file '{}'({}) but has {}", + sampleName, sampleId, fileName, fileId, expectedCount, actualCount); + logger.info(" - Invalidating sample index for sample '{}'({})", sampleName, sampleId); + } + } else { + Map pipelineResult = (Map) catalogFile.getAttributes().get("storagePipelineResult"); + long loadedVariants = ((Number) ((Map) pipelineResult.get("loadStats")).get("loadedVariants")).longValue(); + if (loadedVariants != actualCount) { + invalidSampleIndexes.add(sampleId); + logger.warn("Sample '{}'({}) was expected to have {} variants in the sample index but has {}", + sampleName, sampleId, loadedVariants, actualCount); + logger.info(" - Invalidating sample index for sample '{}'({})", sampleName, sampleId); + } + } + } + } + } else { + invalidSampleIndexes.add(sampleId); + } + } + + if (params.getBoolean("dry-run")) { + logger.info("Dry-run mode. Skipping invalidation of files and samples"); + } else { + ObjectMap event = new ObjectMap() + .append("patch", getAnnotation().patch()) + .append("description", "affected_invalid_sample") + .append("dateStr", TimeUtils.getTime()) + .append("date", Date.from(Instant.now())); + for (Integer sampleId : invalidSampleIndexes) { + metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { + logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); + } else { + for (Integer sampleIndexVersion : sampleMetadata.getSampleIndexVersions()) { + sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, sampleIndexVersion); + } + sampleMetadata.getAttributes().put("TASK-6078", event); + } + }); + } + Set invalidSamples = new HashSet<>(); + for (Integer fileId : invalidFiles) { + metadataManager.updateFileMetadata(studyId, fileId, fileMetadata -> { + invalidSamples.addAll(fileMetadata.getSamples()); + if (fileMetadata.getAttributes().containsKey("TASK-6078")) { + logger.info("File '{}'({}) already has the attribute 'TASK-6078'. Skip", fileMetadata.getName(), fileMetadata.getId()); + } else { + fileMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + fileMetadata.getAttributes().put("TASK-6078", event); + } + }); + } + for (Integer sampleId : invalidSamples) { + metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { + logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); + } else { + sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + sampleMetadata.getAttributes().put("TASK-6078", event); + } + }); + } + } + } + } + + private Set> getFileWithSharedSamples(VariantStorageEngine engine, int studyId) throws StorageEngineException { + VariantStorageMetadataManager metadataManager = engine.getMetadataManager(); + + Set> fileSets = new HashSet<>(); + // Check if there are any sample with more than one file + for (SampleMetadata sampleMetadata : metadataManager.sampleMetadataIterable(studyId)) { + if (sampleMetadata.getFiles().size() > 1) { + if (sampleMetadata.getSplitData() == VariantStorageEngine.SplitData.CHROMOSOME || sampleMetadata.getSplitData() == VariantStorageEngine.SplitData.REGION) { + logger.debug("Sample '{}' is split by chromosome or region. Skip", sampleMetadata.getName()); + continue; + } + ArrayList sampleFileIds = new ArrayList<>(sampleMetadata.getFiles()); + + sampleFileIds.removeIf(fileId -> !metadataManager.isFileIndexed(studyId, fileId)); + + if (sampleFileIds.size() > 1) { + logger.info("Sample '{}' has more than one indexed file with split data '{}'", sampleMetadata.getName(), sampleMetadata.getSplitData()); + + fileSets.add(new HashSet<>(sampleFileIds)); + } + } + } + return fileSets; + } +} diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/exceptions/StorageEngineException.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/exceptions/StorageEngineException.java index 547b83c55af..0ac128118a9 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/exceptions/StorageEngineException.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/exceptions/StorageEngineException.java @@ -41,6 +41,11 @@ public static StorageEngineException alreadyLoaded(int fileId, String fileName) return unableToExecute("Already loaded", fileId, fileName); } + public static StorageEngineException invalidFileStatus(int fileId, String fileName) { + return unableToExecute("File is in INVALID status. Unable to load. File needs to be deleted from the variant-storage", + fileId, fileName); + } + public static StorageEngineException otherOperationInProgressException(TaskMetadata operation, String jobOperationName, List fileIds, VariantStorageMetadataManager mm) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index 3f863d4b680..34dcec280ed 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -679,6 +679,7 @@ public FileMetadata updateFileMetadata(int studyId, int fi update.update(fileMetadata); lock.checkLocked(); unsecureUpdateFileMetadata(studyId, fileMetadata); + fileIdIndexedCache.put(studyId, fileId, fileMetadata.isIndexed()); return fileMetadata; } finally { lock.unlock(); @@ -807,7 +808,6 @@ public void addIndexedFiles(int studyId, List fileIds) throws StorageEn .getName(); logger.info("Register file " + name + " as INDEXED"); } - fileDBAdaptor.addIndexedFiles(studyId, fileIds); fileIdsFromSampleIdCache.clear(); fileIdIndexedCache.clear(); } @@ -821,6 +821,7 @@ public void removeIndexedFiles(int studyId, Collection fileIds) throws fileMetadata.setIndexStatus(TaskMetadata.Status.NONE); fileMetadata.setSecondaryAnnotationIndexStatus(TaskMetadata.Status.NONE); fileMetadata.setAnnotationStatus(TaskMetadata.Status.NONE); + fileMetadata.getAttributes().remove(LOAD_ARCHIVE.key()); if (fileMetadata.getType() == FileMetadata.Type.VIRTUAL) { partialFiles.addAll(fileMetadata.getAttributes().getAsIntegerList(FileMetadata.VIRTUAL_FILES)); } @@ -833,6 +834,7 @@ public void removeIndexedFiles(int studyId, Collection fileIds) throws fileMetadata.setIndexStatus(TaskMetadata.Status.NONE); fileMetadata.setSecondaryAnnotationIndexStatus(TaskMetadata.Status.NONE); fileMetadata.setAnnotationStatus(TaskMetadata.Status.NONE); + fileMetadata.getAttributes().remove(LOAD_ARCHIVE.key()); }); // deleteVariantFileMetadata(studyId, fileId); } @@ -851,7 +853,6 @@ public void removeIndexedFiles(int studyId, Collection fileIds) throws } }); } - fileDBAdaptor.removeIndexedFiles(studyId, fileIds); } public Iterable fileMetadataIterable(int studyId) { @@ -1278,6 +1279,10 @@ public TaskMetadata getTask(int studyId, String taskName, List fileIds) return task; } + public Iterable taskIterable(int studyId) { + return () -> taskIterator(studyId, null, false); + } + public Iterator taskIterator(int studyId) { return taskIterator(studyId, null, false); } @@ -1754,6 +1759,9 @@ private int registerFile(int studyId, String filePath, FileMetadata.Type type) t if (fileId != null) { updateFileMetadata(studyId, fileId, fileMetadata -> { + if (fileMetadata.getIndexStatus() == TaskMetadata.Status.INVALID) { + throw StorageEngineException.invalidFileStatus(fileMetadata.getId(), fileName); + } if (fileMetadata.isIndexed()) { throw StorageEngineException.alreadyLoaded(fileMetadata.getId(), fileName); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/FileMetadataDBAdaptor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/FileMetadataDBAdaptor.java index ca6a5964b59..8cb916df1c6 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/FileMetadataDBAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/FileMetadataDBAdaptor.java @@ -75,10 +75,6 @@ public String description() { LinkedHashSet getIndexedFiles(int studyId, boolean includePartial); - default void addIndexedFiles(int studyId, List fileIds) {} - - default void removeIndexedFiles(int studyId, Collection fileIds) {}; - default DataResult count() { return count(new Query()); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java index aba5d230c88..c0d0cf9376c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/models/TaskMetadata.java @@ -61,6 +61,12 @@ public enum Status { * Any needed clean might be executed by other running tasks */ ABORTED, + /** + * Finished. + * Task finished with invalid results. + * Similar to "ERROR" status, but this can't be resumed. Needs to be cleaned first. + */ + INVALID, } public enum Type { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStoragePipeline.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStoragePipeline.java index 19b0631659f..5b37d2512b1 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStoragePipeline.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStoragePipeline.java @@ -61,6 +61,7 @@ import org.opencb.opencga.storage.core.io.plain.StringDataWriter; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; +import org.opencb.opencga.storage.core.metadata.models.FileMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; @@ -176,9 +177,14 @@ public URI preTransform(URI input) throws StorageEngineException, IOException, F Integer fileId = getMetadataManager().getFileId(studyMetadata.getId(), fileName, true); if (fileId != null) { // File is indexed. Mark as non indexed. - getMetadataManager().updateFileMetadata(studyMetadata.getId(), fileId, fileMetadata -> { - fileMetadata.setIndexStatus(TaskMetadata.Status.NONE); - }); + FileMetadata fileMetadata = getMetadataManager().getFileMetadata(studyMetadata.getId(), fileId); + if (fileMetadata.getIndexStatus() == TaskMetadata.Status.INVALID) { + throw StorageEngineException.invalidFileStatus(fileId, fileName); + } else if (fileMetadata.getIndexStatus() != TaskMetadata.Status.NONE) { + getMetadataManager().updateFileMetadata(studyMetadata.getId(), fileId, fm -> { + fm.setIndexStatus(TaskMetadata.Status.NONE); + }); + } logger.info("File '{}' already loaded. Force reload!", fileName); } } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryException.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryException.java index d90698f9e44..20ef94c7f2c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryException.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryException.java @@ -217,6 +217,10 @@ public static VariantQueryException fileNotFound(Object file, Object study) { return new VariantQueryException("File " + quote(file) + " not found in study '" + study + "'"); } + public static VariantQueryException fileNotIndexed(Object file, Object study) { + return new VariantQueryException("File " + quote(file) + " not indexed in study '" + study + "'"); + } + public static VariantQueryException scoreNotFound(Object score, Object study) { return new VariantQueryException("Variant Score " + quote(score) + " not found in study '" + study + "'"); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index a0f641fa987..641e365a51d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -3,6 +3,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.EnumUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; @@ -459,6 +460,19 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ } } + if (isValidParam(query, FILE)) { + ParsedQuery files = splitValue(query, FILE); + for (String file : files.getValues()) { + Pair fileIdPair = metadataManager.getFileIdPair(file, false, defaultStudy); + if (fileIdPair == null) { + throw VariantQueryException.fileNotFound(file, defaultStudy.getName()); + } + if (!metadataManager.isFileIndexed(fileIdPair.getKey(), fileIdPair.getValue())) { + throw VariantQueryException.fileNotIndexed(file, metadataManager.getStudyName(fileIdPair.getKey())); + } + } + } + QueryOperation genotypeOperator = null; VariantQueryParam genotypeParam = null; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java index 25cb7052acd..6175128018d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java @@ -191,7 +191,7 @@ private boolean queryFiltersCovered(Query query) { // Check if the query is fully covered Set params = VariantQueryUtils.validParams(query, true); params.remove(VariantQueryParam.STUDY); - + logger.info("Uncovered filters : " + params); return params.isEmpty(); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java index 08bfd820c72..6137c5bd6c1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java @@ -274,7 +274,7 @@ public SampleIndexQuery parse(Query query) { //} else if (isValidParam(query, FILE)) { // Add FILEs filter ? } else { - throw new IllegalStateException("Unable to query SamplesIndex"); + throw new IllegalStateException("Unable to query SamplesIndex. Missing sample filter! Query: " + query.toJson()); } boolean requireFamilyIndex = !mendelianErrorSet.isEmpty(); SampleIndexSchema schema = schemaFactory.getSchema(studyId, sampleGenotypeQuery.keySet(), false, requireFamilyIndex); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java index c8bd80e1882..e4f1f2e14b4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java @@ -16,6 +16,7 @@ import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.core.api.ParamConstants; +import org.opencb.opencga.core.common.UriUtils; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; @@ -30,6 +31,7 @@ import org.opencb.opencga.storage.core.variant.VariantStoragePipeline; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.annotation.annotators.CellBaseRestVariantAnnotator; @@ -689,6 +691,84 @@ private VariantStorageEngine getMockedStorageEngine(ObjectMap options) throws Ex return mockedStorageEngine; } + @Test + public void testDeleteErrorFiles() throws Exception { + URI outDir = newOutputUri(); + + VariantStorageMetadataManager mm = variantStorageEngine.getMetadataManager(); + + variantStorageEngine.getOptions().put(VariantStorageOptions.STUDY.key(), STUDY_NAME); + URI file = variantStorageEngine.index(Collections.singletonList(getPlatinumFile(1)), outDir).get(0).getInput(); + String fileName = UriUtils.fileName(file); + + int studyId = mm.getStudyId(STUDY_NAME); + int fileId = mm.getFileId(studyId, fileName); + FileMetadata fileMetadata = mm.updateFileMetadata(studyId, fileId, fm -> { + fm.setIndexStatus(TaskMetadata.Status.INVALID); + }); + assertFalse(mm.isFileIndexed(studyId, fileId)); + assertFalse(fileMetadata.isIndexed()); + LinkedHashSet samples = fileMetadata.getSamples(); + + for (Integer sample : samples) { + mm.updateSampleMetadata(studyId, sample, sampleMetadata -> { + sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + }); + } + + try { + variantStorageEngine.get(new VariantQuery().file(fileName), new QueryOptions()); + fail(); + } catch (VariantQueryException e) { + String expected = VariantQueryException.fileNotIndexed(fileName, STUDY_NAME).getMessage(); + assertEquals(expected, e.getMessage()); + } + + try { + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), true); + variantStorageEngine.index(Collections.singletonList(getPlatinumFile(1)), outDir); + fail(); + } catch (StorageEngineException e) { + try { + String expected = StorageEngineException.invalidFileStatus(fileId, fileName).getMessage(); + assertEquals(expected, e.getCause().getMessage()); + } catch (AssertionError error) { + e.printStackTrace(); + throw error; + } + } + + try { + variantStorageEngine.getOptions().put(VariantStorageOptions.FORCE.key(), false); + variantStorageEngine.index(Collections.singletonList(getPlatinumFile(1)), outDir); + fail(); + } catch (StorageEngineException e) { + try { + String expected = StorageEngineException.invalidFileStatus(fileId, fileName).getMessage(); + assertEquals(expected, e.getCause().getMessage()); + } catch (AssertionError error) { + e.printStackTrace(); + throw error; + } + } + + variantStorageEngine.removeFile(STUDY_NAME, fileName, outDir); + + fileMetadata = mm.getFileMetadata(studyId, fileId); + assertEquals(TaskMetadata.Status.NONE, fileMetadata.getIndexStatus()); + for (Integer sample : samples) { + assertEquals(TaskMetadata.Status.NONE, mm.getSampleMetadata(studyId, sample).getIndexStatus()); + } + + variantStorageEngine.index(Collections.singletonList(getPlatinumFile(1)), outDir); + + fileMetadata = mm.getFileMetadata(studyId, fileId); + assertEquals(TaskMetadata.Status.READY, fileMetadata.getIndexStatus()); + for (Integer sample : samples) { + assertEquals(TaskMetadata.Status.READY, mm.getSampleMetadata(studyId, sample).getIndexStatus()); + } + } + @Test public void testLoadByRegion() throws Exception { URI outDir = newOutputUri(); From 68a9561438d584dab17f220348fc44ab73f13245 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 6 May 2024 12:41:16 +0200 Subject: [PATCH 280/354] MailUtils:FIX: Code scanning/SonarCloud - Server hostnames should be verified during SSL/TLS connections #TASK-464 --- .../src/main/java/org/opencb/opencga/core/common/MailUtils.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index 7ff75f86698..e180538aa7f 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -45,7 +45,9 @@ public static void sendResetPasswordMail(String to, String newPassword, final St props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); + props.put("mail.smtp.ssl.checkserveridentity", "true"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { From f8b7020de9a4f8ce0728554bfefe4d95e7fb995b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 6 May 2024 19:49:05 +0200 Subject: [PATCH 281/354] pom: Create hot fix branch #TASK-6172 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index b9dfad55dc4..36890fd8b65 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 4a1ed3c2907..cce6a1832f6 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 7a0a54910ce..fa4d079fca2 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 797cdbcaabd..cf8bce68061 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 3deebdfe00c..5e87374579c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index d1bce7dd255..b896c8ef333 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 555b40fd93c..0e14a74b9a2 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 00cd35d1974..255d0d1709c 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index b50473c3dea..f2834ff74ae 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 237df394693..81ae1525c3e 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index a78bc108cd3..83ba931c476 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ae1663ed408..0cb400c03d3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 299f46d55e1..be258210e4f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index d39f818fa65..7ce0441a47d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index c80452c7b80..cf4bb3c0833 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index fb5c1500b27..a2124179531 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index eb724763958..364447c5d26 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 4927f1d5263..d07a2556ef6 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 5796b008eed..8af319c168b 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 0840b6813d5..fd776c8408b 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 893c4f54869..bd0b2b56ab6 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4 + 2.12.4.1-SNAPSHOT pom OpenCGA From cc9f2ca2cfeb0f0c52d6535b778ac0e0fe67402e Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 7 May 2024 15:55:40 +0200 Subject: [PATCH 282/354] catalog: enable mail as a valid user id, #TASK-6183 --- .../main/java/org/opencb/opencga/catalog/utils/ParamUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java index 7d6eb326acc..f9351c4b27e 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java @@ -124,7 +124,7 @@ public static void checkValidUserId(String userId) throws CatalogParameterExcept if (userId.equals(ParamConstants.ANONYMOUS_USER_ID) || userId.equals(ParamConstants.REGISTERED_USERS)) { throw new CatalogParameterException("User id cannot be one of the reserved OpenCGA users."); } - if (!userId.matches("^[A-Za-z0-9]([-_.]?[A-Za-z0-9])*$")) { + if (!userId.matches("^[A-Za-z0-9]([-_.@]?[A-Za-z0-9])*$")) { throw new CatalogParameterException("Invalid user id. Id needs to start by any character and might contain single '-', '_', " + "'.', symbols followed by any character or number."); } From 7b655a76b1cc09909f1806187393fd8ae8870cab Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 7 May 2024 15:56:48 +0200 Subject: [PATCH 283/354] catalog: fix error message, #TASK-6183 --- .../main/java/org/opencb/opencga/catalog/utils/ParamUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java index f9351c4b27e..c39d111d8c7 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/utils/ParamUtils.java @@ -126,7 +126,7 @@ public static void checkValidUserId(String userId) throws CatalogParameterExcept } if (!userId.matches("^[A-Za-z0-9]([-_.@]?[A-Za-z0-9])*$")) { throw new CatalogParameterException("Invalid user id. Id needs to start by any character and might contain single '-', '_', " - + "'.', symbols followed by any character or number."); + + "'.' or '@' symbols followed by any character or number."); } } From da7eff0b698883e0c71595ec2b08e1536011cd25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Mon, 6 May 2024 11:43:48 +0100 Subject: [PATCH 284/354] app: Small improvements to migration. #TASK-6078 --- ...llegalConcurrentFileLoadingsMigration.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index 68a40c4901e..bf69842c07d 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -138,7 +138,7 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag metadataManager.getFileName(studyId, file), file); } } - } else if (sampleMetadata.getSampleIndexStatus(sampleMetadata.getSampleIndexVersion()) == TaskMetadata.Status.READY) { + } else if (sampleMetadata.getSampleIndexStatus(Optional.of(sampleMetadata.getSampleIndexVersion()).orElse(-1)) == TaskMetadata.Status.READY) { for (Integer fileId : sampleMetadata.getFiles()) { if (affectedFiles.contains(fileId)) { FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, fileId); @@ -158,7 +158,7 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag invalidSampleIndexes.add(sampleId); continue; } - if (fileMetadata.getSamples().size() == 1) { + if (fileMetadata.getSamples().size() == 1 && catalogFile.getSampleIds().size() == 1) { long expectedCount = 0; for (Map.Entry entry : catalogFile.getQualityControl().getVariant() .getVariantSetMetrics().getGenotypeCount().entrySet()) { @@ -172,7 +172,7 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag if (expectedCount != actualCount) { invalidSampleIndexes.add(sampleId); logger.warn("Sample '{}'({}) was expected to have {} variants in the sample index of file '{}'({}) but has {}", - sampleName, sampleId, fileName, fileId, expectedCount, actualCount); + sampleName, sampleId, expectedCount, fileName, fileId, actualCount); logger.info(" - Invalidating sample index for sample '{}'({})", sampleName, sampleId); } } else { @@ -193,7 +193,20 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag } if (params.getBoolean("dry-run")) { - logger.info("Dry-run mode. Skipping invalidation of files and samples"); + if (invalidFiles.isEmpty() && invalidSampleIndexes.isEmpty()) { + logger.info("Dry-run mode. No files or samples to invalidate"); + } else { + logger.info("Dry-run mode. Skipping invalidation of files and samples"); + + Set invalidSamples = new HashSet<>(); + for (Integer fileId : invalidFiles) { + invalidSamples.addAll(metadataManager.getSampleIdsFromFileId(studyId, fileId)); + } + + logger.info("Affected files: {}", invalidFiles); + logger.info("Affected samples: {}", invalidSamples); + logger.info("Affected sample indexes: {}", invalidSampleIndexes); + } } else { ObjectMap event = new ObjectMap() .append("patch", getAnnotation().patch()) @@ -205,10 +218,11 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); } else { + Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); for (Integer sampleIndexVersion : sampleMetadata.getSampleIndexVersions()) { sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, sampleIndexVersion); } - sampleMetadata.getAttributes().put("TASK-6078", event); + sampleMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); } }); } @@ -219,8 +233,9 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag if (fileMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("File '{}'({}) already has the attribute 'TASK-6078'. Skip", fileMetadata.getName(), fileMetadata.getId()); } else { + Map oldStatus = new HashMap<>(fileMetadata.getStatus()); fileMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - fileMetadata.getAttributes().put("TASK-6078", event); + fileMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); } }); } @@ -229,8 +244,9 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); } else { + Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - sampleMetadata.getAttributes().put("TASK-6078", event); + sampleMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); } }); } From bed4579418ea97586efdfa1d00c5e167f8a9df32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 7 May 2024 15:18:57 +0100 Subject: [PATCH 285/354] app: Store migration event in catalog as well. #TASK-6078 --- ...llegalConcurrentFileLoadingsMigration.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index bf69842c07d..d64a3163715 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -10,6 +10,8 @@ import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.common.UriUtils; import org.opencb.opencga.core.models.file.File; +import org.opencb.opencga.core.models.file.FileUpdateParams; +import org.opencb.opencga.core.models.sample.SampleUpdateParams; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.FileMetadata; @@ -214,7 +216,8 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag .append("dateStr", TimeUtils.getTime()) .append("date", Date.from(Instant.now())); for (Integer sampleId : invalidSampleIndexes) { - metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + ObjectMap thisEvent = new ObjectMap(event); + String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); } else { @@ -222,33 +225,41 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag for (Integer sampleIndexVersion : sampleMetadata.getSampleIndexVersions()) { sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, sampleIndexVersion); } - sampleMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); + sampleMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); } - }); + }).getName(); + catalogManager.getSampleManager().update(study, sampleName, + new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); } Set invalidSamples = new HashSet<>(); for (Integer fileId : invalidFiles) { - metadataManager.updateFileMetadata(studyId, fileId, fileMetadata -> { + ObjectMap thisEvent = new ObjectMap(event); + String filePath = metadataManager.updateFileMetadata(studyId, fileId, fileMetadata -> { invalidSamples.addAll(fileMetadata.getSamples()); if (fileMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("File '{}'({}) already has the attribute 'TASK-6078'. Skip", fileMetadata.getName(), fileMetadata.getId()); } else { Map oldStatus = new HashMap<>(fileMetadata.getStatus()); fileMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - fileMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); + fileMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); } - }); + }).getPath(); + catalogManager.getFileManager().update(study, filePath, + new FileUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); } for (Integer sampleId : invalidSamples) { - metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + ObjectMap thisEvent = new ObjectMap(event); + String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); } else { Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - sampleMetadata.getAttributes().put("TASK-6078", new ObjectMap(event).append("oldStatus", oldStatus)); + sampleMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); } - }); + }).getName(); + catalogManager.getSampleManager().update(study, sampleName, + new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); } } } From 9c9e09cc341e5ce2cc2347d5e80e90a3ac64b109 Mon Sep 17 00:00:00 2001 From: imedina Date: Tue, 7 May 2024 01:02:17 +0100 Subject: [PATCH 286/354] storage: add modified HGVS and pharmacogenomics to 'xrefs' #TASK-6172 --- .../VariantAnnotationModelUtils.java | 66 +++++++++++++++---- 1 file changed, 53 insertions(+), 13 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java index c31b7137236..8e71ac5b53b 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java @@ -6,6 +6,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class VariantAnnotationModelUtils { @@ -21,19 +23,24 @@ public class VariantAnnotationModelUtils { * - annotation.consequenceTypes.transcriptId * - annotation.consequenceTypes.ensemblTranscriptId * - annotation.consequenceTypes.hgvs + * - annotation.consequenceTypes.proteinVariantAnnotation.proteinId * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotAccession * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotName * - annotation.consequenceTypes.proteinVariantAnnotation.uniprotVariantId * - annotation.consequenceTypes.proteinVariantAnnotation.features.id * - annotation.traitAssociation.id - * - annotation.geneTraitAssociation.hpo * - annotation.geneTraitAssociation.id + * - annotation.geneTraitAssociation.hpo + * - annotation.pharmacogenomics.id + * - annotation.pharmacogenomics.name * * @param variantAnnotation VariantAnnotation object * @return Set of XRefs */ + private static final Pattern HGVS_PATTERN = Pattern.compile("\\([^()]*\\)"); + public Set extractXRefs(VariantAnnotation variantAnnotation) { - Set xrefs = new HashSet<>(); + Set xrefs = new HashSet<>(100); if (variantAnnotation == null) { return xrefs; @@ -41,7 +48,7 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { xrefs.add(variantAnnotation.getId()); - if (variantAnnotation.getXrefs() != null) { + if (CollectionUtils.isNotEmpty(variantAnnotation.getXrefs())) { for (Xref xref : variantAnnotation.getXrefs()) { if (xref != null) { xrefs.add(xref.getId()); @@ -49,26 +56,53 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } } - if (variantAnnotation.getHgvs() != null) { + if (CollectionUtils.isNotEmpty(variantAnnotation.getHgvs())) { xrefs.addAll(variantAnnotation.getHgvs()); + + // TODO Remove this code when CellBase 6.4.0 returns the expected HGVS + for (String hgvs: variantAnnotation.getHgvs()) { + if (hgvs.startsWith("ENST") || hgvs.startsWith("NM_")) { + // 1. Remove the content between parentheses, e.g. ENST00000680783.1(ENSG00000135744):c.776T>C + if (hgvs.contains("(")) { + Matcher matcher = HGVS_PATTERN.matcher(hgvs); + StringBuffer result = new StringBuffer(); + while (matcher.find()) { + matcher.appendReplacement(result, ""); + } + matcher.appendTail(result); + xrefs.add(result.toString()); + } + + // 2. Add the HGVS with the Ensembl and gene name, e.g. ENSG00000135744:c.776T>C, AGT:c.776T>C + for (ConsequenceType conseqType : variantAnnotation.getConsequenceTypes()) { + if (conseqType != null && conseqType.getHgvs().contains(hgvs)) { + String[] fields = hgvs.split(":"); + xrefs.add(conseqType.getGeneId() + ":" + fields[1]); + xrefs.add(conseqType.getGeneName() + ":" + fields[1]); + break; + } + } + } + } } List consequenceTypes = variantAnnotation.getConsequenceTypes(); - if (consequenceTypes != null) { + if (CollectionUtils.isNotEmpty(consequenceTypes)) { for (ConsequenceType conseqType : consequenceTypes) { xrefs.add(conseqType.getGeneName()); xrefs.add(conseqType.getGeneId()); - xrefs.add(conseqType.getEnsemblGeneId()); xrefs.add(conseqType.getTranscriptId()); + xrefs.add(conseqType.getEnsemblGeneId()); xrefs.add(conseqType.getEnsemblTranscriptId()); - if (conseqType.getHgvs() != null) { - xrefs.addAll(conseqType.getHgvs()); - } + // This is already added in the variantAnnotation.getHgvs() section +// if (conseqType.getHgvs() != null) { +// xrefs.addAll(conseqType.getHgvs()); +// } ProteinVariantAnnotation protVarAnnotation = conseqType.getProteinVariantAnnotation(); if (protVarAnnotation != null) { - + xrefs.add(protVarAnnotation.getProteinId()); xrefs.add(protVarAnnotation.getUniprotAccession()); xrefs.add(protVarAnnotation.getUniprotName()); xrefs.add(protVarAnnotation.getUniprotVariantId()); @@ -80,7 +114,6 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } } } - } if (CollectionUtils.isNotEmpty(variantAnnotation.getTraitAssociation())) { @@ -89,10 +122,17 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } } - if (variantAnnotation.getGeneTraitAssociation() != null) { + if (CollectionUtils.isNotEmpty(variantAnnotation.getGeneTraitAssociation())) { for (GeneTraitAssociation geneTrait : variantAnnotation.getGeneTraitAssociation()) { - xrefs.add(geneTrait.getHpo()); xrefs.add(geneTrait.getId()); + xrefs.add(geneTrait.getHpo()); + } + } + + if (CollectionUtils.isNotEmpty(variantAnnotation.getPharmacogenomics())) { + for (Pharmacogenomics pharmacogenomics : variantAnnotation.getPharmacogenomics()) { + xrefs.add(pharmacogenomics.getId()); + xrefs.add(pharmacogenomics.getName()); } } From 4451b13d21f0bced909291076801ca690c96288c Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 7 May 2024 16:53:59 +0200 Subject: [PATCH 287/354] catalog: add mail test, #TASK-6183 --- .../opencga/catalog/managers/CatalogManagerTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java index 8e468806d04..2b403314f4a 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java @@ -49,6 +49,7 @@ import org.opencb.opencga.core.models.sample.*; import org.opencb.opencga.core.models.study.*; import org.opencb.opencga.core.models.user.Account; +import org.opencb.opencga.core.models.user.AuthenticationResponse; import org.opencb.opencga.core.models.user.User; import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; @@ -276,6 +277,16 @@ private String getAdminToken() throws CatalogException, IOException { return catalogManager.getUserManager().loginAsAdmin("admin").getToken(); } + @Test + public void createUserUsingMailAsId() throws CatalogException { + catalogManager.getUserManager().create(new User().setId("hello.mail@mymail.org").setName("Hello") + .setAccount(new Account().setType(Account.AccountType.GUEST)), TestParamConstants.PASSWORD, opencgaToken); + AuthenticationResponse login = catalogManager.getUserManager().login("hello.mail@mymail.org", TestParamConstants.PASSWORD); + assertNotNull(login); + User user = catalogManager.getUserManager().get("hello.mail@mymail.org", new QueryOptions(), login.getToken()).first(); + assertEquals("hello.mail@mymail.org", user.getId()); + } + @Test public void getGroupsTest() throws CatalogException { Group group = new Group("groupId", Arrays.asList("user2", "user3")).setSyncedFrom(new Group.Sync("ldap", "bio")); From 3b8f89015a30bd52ac77ecbf94f053e9d5556a55 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 7 May 2024 16:58:00 +0200 Subject: [PATCH 288/354] MailUtils: Change user_id to CamelCase #TASK-464 --- .../main/java/org/opencb/opencga/core/common/MailUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index e180538aa7f..ef5852befa8 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -35,7 +35,7 @@ public class MailUtils { private static final Logger logger = LoggerFactory.getLogger(MailUtils.class); public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort, String ssl, String user_id) throws Exception { + String mailHost, String mailPort, String ssl, String userId) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); @@ -61,7 +61,7 @@ protected PasswordAuthentication getPasswordAuthentication() { InternetAddress.parse(to)); message.setSubject("XetaBase: Password Reset"); - message.setText(getEmailContent(user_id,newPassword)); + message.setText(getEmailContent(userId,newPassword)); Transport.send(message); } From d5101a45e91d67f1ef79f300c9622de24333faf7 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 7 May 2024 17:56:56 +0200 Subject: [PATCH 289/354] MailUtils: Refactor ssl and userId variables #TASK-464 --- .../auth/authentication/CatalogAuthenticationManager.java | 3 +-- .../java/org/opencb/opencga/core/common/MailUtils.java | 8 +++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java index d86d778a1e2..88b807edd3e 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java @@ -133,8 +133,7 @@ public OpenCGAResult resetPassword(String userId) throws CatalogException { String mailHost = this.emailConfig.getHost(); String mailPort = this.emailConfig.getPort(); try { - MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, - "true", ((User) user.getResults().get(0)).getId()); + MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, userId); result = userDBAdaptor.resetPassword(userId, email, newPassword); } catch (Exception e) { throw new CatalogException("Email could not be sent.", e); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index ef5852befa8..1802d54a642 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -34,14 +34,16 @@ public class MailUtils { private static final Logger logger = LoggerFactory.getLogger(MailUtils.class); + + public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort, String ssl, String userId) throws Exception { + String mailHost, String mailPort, String userId) throws Exception { Properties props = new Properties(); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.ssl.enable", ssl); props.put("mail.smtp.host", mailHost); props.put("mail.smtp.port", mailPort); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); From 364e0a6043be646f951fbcb9f489cf04d09f474d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 7 May 2024 17:01:23 +0100 Subject: [PATCH 290/354] storage: Add test to query by alternative hgvs forms #TASK-6172 --- .../VariantAnnotationModelUtils.java | 24 ++++++---- .../core/variant/query/VariantQueryUtils.java | 13 ++++++ .../VariantAnnotationModelUtilsTest.java | 46 +++++++++++++++++++ .../executors/VariantQueryExecutorTest.java | 6 +++ 4 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtilsTest.java diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java index 8e71ac5b53b..b6c8bfcf39d 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java @@ -2,6 +2,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.opencb.biodata.models.variant.avro.*; +import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import java.util.HashSet; import java.util.List; @@ -56,12 +57,14 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } } + List consequenceTypes = variantAnnotation.getConsequenceTypes(); + if (CollectionUtils.isNotEmpty(variantAnnotation.getHgvs())) { xrefs.addAll(variantAnnotation.getHgvs()); // TODO Remove this code when CellBase 6.4.0 returns the expected HGVS for (String hgvs: variantAnnotation.getHgvs()) { - if (hgvs.startsWith("ENST") || hgvs.startsWith("NM_")) { + if (VariantQueryUtils.isTranscript(hgvs)) { // 1. Remove the content between parentheses, e.g. ENST00000680783.1(ENSG00000135744):c.776T>C if (hgvs.contains("(")) { Matcher matcher = HGVS_PATTERN.matcher(hgvs); @@ -74,19 +77,24 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { } // 2. Add the HGVS with the Ensembl and gene name, e.g. ENSG00000135744:c.776T>C, AGT:c.776T>C - for (ConsequenceType conseqType : variantAnnotation.getConsequenceTypes()) { - if (conseqType != null && conseqType.getHgvs().contains(hgvs)) { - String[] fields = hgvs.split(":"); - xrefs.add(conseqType.getGeneId() + ":" + fields[1]); - xrefs.add(conseqType.getGeneName() + ":" + fields[1]); - break; + if (CollectionUtils.isNotEmpty(consequenceTypes)) { + for (ConsequenceType conseqType : consequenceTypes) { + if (conseqType != null && conseqType.getHgvs() != null && conseqType.getHgvs().contains(hgvs)) { + String[] fields = hgvs.split(":", 2); + if (conseqType.getGeneId() != null) { + xrefs.add(conseqType.getGeneId() + ":" + fields[1]); + } + if (conseqType.getGeneName() != null) { + xrefs.add(conseqType.getGeneName() + ":" + fields[1]); + } + break; + } } } } } } - List consequenceTypes = variantAnnotation.getConsequenceTypes(); if (CollectionUtils.isNotEmpty(consequenceTypes)) { for (ConsequenceType conseqType : consequenceTypes) { xrefs.add(conseqType.getGeneName()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index a538092ef4f..e57462b5561 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -467,6 +467,19 @@ public static boolean isVariantAccession(String value) { return value.startsWith("rs") || value.startsWith("VAR_"); } + /** + * Determines if the given value might be a known transcript or not. + * Ensembl transcripts start with `ENST` + * RefSeq transcripts start with `NM_` + * See ... + * + * @param value Value to check + * @return If is a known transcript + */ + public static boolean isTranscript(String value) { + return value.startsWith("ENST") || value.startsWith("NM_"); + } + /** * Determines if the given value is a HGVS. * diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtilsTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtilsTest.java new file mode 100644 index 00000000000..f1167213be9 --- /dev/null +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtilsTest.java @@ -0,0 +1,46 @@ +package org.opencb.opencga.storage.core.variant.annotation.converters; + +import junit.framework.TestCase; +import org.junit.experimental.categories.Category; +import org.opencb.biodata.models.variant.avro.ConsequenceType; +import org.opencb.biodata.models.variant.avro.VariantAnnotation; +import org.opencb.biodata.models.variant.avro.Xref; +import org.opencb.opencga.core.testclassification.duration.ShortTests; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Set; + +@Category(ShortTests.class) +public class VariantAnnotationModelUtilsTest extends TestCase { + + public void testXrefsHgvs() throws Exception { + VariantAnnotation variantAnnotation = new VariantAnnotation(); + variantAnnotation.setId("id"); + variantAnnotation.setXrefs(Collections.singletonList(new Xref("xref1", "source"))); + variantAnnotation.setHgvs(Arrays.asList( + "ENST00000680783.1(ENSG00000135744):c.776T>C", + "ENSP00000451720.1:p.Asn134Lys" + )); + ConsequenceType ct = new ConsequenceType(); + ct.setGeneName("GENE"); + ct.setHgvs(variantAnnotation.getHgvs()); + ct.setGeneId(null); + variantAnnotation.setConsequenceTypes(Arrays.asList(ct, new ConsequenceType())); + Set xrefs = new VariantAnnotationModelUtils().extractXRefs(variantAnnotation); + + assertEquals(7, xrefs.size()); + // Default fields + assertTrue(xrefs.contains("id")); + assertTrue(xrefs.contains("xref1")); + assertTrue(xrefs.contains("GENE")); + + // Untouched hgvs, not starting with ENST or NM_ + assertTrue(xrefs.contains("ENSP00000451720.1:p.Asn134Lys")); + + assertTrue(xrefs.contains("ENST00000680783.1(ENSG00000135744):c.776T>C")); + assertTrue(xrefs.contains("ENST00000680783.1:c.776T>C")); + assertTrue(xrefs.contains("GENE:c.776T>C")); + + } +} \ No newline at end of file diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java index c58328d4469..778257d5999 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -139,6 +139,12 @@ public void testXRefRs() throws StorageEngineException { with("Cosmic", EvidenceEntry::getId, is("COSV60260399")))))); matchers.put("ENST00000341832.11(ENSG00000248333):c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); + matchers.put("ENST00000341832.11:c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( + // The variant annotation may not have the "alternate" hgvs + is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); + matchers.put("ENSG00000248333:c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( + // The variant annotation may not have the "alternate" hgvs + is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); matchers.put("VSP_039324", hasAnnotation( with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem(with("ProteinVariantAnnotation", ConsequenceType::getProteinVariantAnnotation, From d969daff823e1d94ee42422b87b78078a1ee4350 Mon Sep 17 00:00:00 2001 From: imedina Date: Tue, 7 May 2024 17:14:09 +0100 Subject: [PATCH 291/354] storage: Add transcripts starting with 'XM_' to 'isTranscript()', #TASK-6172 --- .../converters/VariantAnnotationModelUtils.java | 10 +++------- .../storage/core/variant/query/VariantQueryUtils.java | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java index b6c8bfcf39d..a4d40cf3d56 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/annotation/converters/VariantAnnotationModelUtils.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.core.variant.annotation.converters; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.opencb.biodata.models.variant.avro.*; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; @@ -81,10 +82,10 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { for (ConsequenceType conseqType : consequenceTypes) { if (conseqType != null && conseqType.getHgvs() != null && conseqType.getHgvs().contains(hgvs)) { String[] fields = hgvs.split(":", 2); - if (conseqType.getGeneId() != null) { + if (StringUtils.isNotEmpty(conseqType.getGeneId())) { xrefs.add(conseqType.getGeneId() + ":" + fields[1]); } - if (conseqType.getGeneName() != null) { + if (StringUtils.isNotEmpty(conseqType.getGeneName())) { xrefs.add(conseqType.getGeneName() + ":" + fields[1]); } break; @@ -103,11 +104,6 @@ public Set extractXRefs(VariantAnnotation variantAnnotation) { xrefs.add(conseqType.getEnsemblGeneId()); xrefs.add(conseqType.getEnsemblTranscriptId()); - // This is already added in the variantAnnotation.getHgvs() section -// if (conseqType.getHgvs() != null) { -// xrefs.addAll(conseqType.getHgvs()); -// } - ProteinVariantAnnotation protVarAnnotation = conseqType.getProteinVariantAnnotation(); if (protVarAnnotation != null) { xrefs.add(protVarAnnotation.getProteinId()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java index e57462b5561..9cf773d001f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryUtils.java @@ -470,14 +470,14 @@ public static boolean isVariantAccession(String value) { /** * Determines if the given value might be a known transcript or not. * Ensembl transcripts start with `ENST` - * RefSeq transcripts start with `NM_` + * RefSeq transcripts start with `NM_` and `XM_` * See ... * * @param value Value to check * @return If is a known transcript */ public static boolean isTranscript(String value) { - return value.startsWith("ENST") || value.startsWith("NM_"); + return value.startsWith("ENST") || value.startsWith("NM_") || value.startsWith("XM_"); } /** From 45ca1533e49fbc2a283f3de5bd68510f7576dac5 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 7 May 2024 17:56:56 +0200 Subject: [PATCH 292/354] MailUtils: Refactor ssl and userId variables #TASK-1276 #TASK-464 --- .../auth/authentication/CatalogAuthenticationManager.java | 3 +-- .../java/org/opencb/opencga/core/common/MailUtils.java | 8 +++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java index d86d778a1e2..88b807edd3e 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/auth/authentication/CatalogAuthenticationManager.java @@ -133,8 +133,7 @@ public OpenCGAResult resetPassword(String userId) throws CatalogException { String mailHost = this.emailConfig.getHost(); String mailPort = this.emailConfig.getPort(); try { - MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, - "true", ((User) user.getResults().get(0)).getId()); + MailUtils.sendResetPasswordMail(email, newPassword, mailUser, mailPassword, mailHost, mailPort, userId); result = userDBAdaptor.resetPassword(userId, email, newPassword); } catch (Exception e) { throw new CatalogException("Email could not be sent.", e); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index ef5852befa8..1802d54a642 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -34,14 +34,16 @@ public class MailUtils { private static final Logger logger = LoggerFactory.getLogger(MailUtils.class); + + public static void sendResetPasswordMail(String to, String newPassword, final String mailUser, final String mailPassword, - String mailHost, String mailPort, String ssl, String userId) throws Exception { + String mailHost, String mailPort, String userId) throws Exception { Properties props = new Properties(); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.ssl.enable", ssl); props.put("mail.smtp.host", mailHost); props.put("mail.smtp.port", mailPort); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); From 390f7876000be97af119548838d8a9a064d0e99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 8 May 2024 10:41:35 +0100 Subject: [PATCH 293/354] server: Add server.rest.httpConfiguraiton to configuration.yml #TAKS-8888 --- .../config/AbstractServerConfiguration.java | 13 +- .../opencga/core/config/Configuration.java | 14 +- .../core/config/RestServerConfiguration.java | 122 +++++++++++++++--- .../src/main/resources/configuration.yml | 16 ++- .../core/config/ConfigurationTest.java | 78 ++--------- .../src/test/resources/configuration-test.yml | 2 +- .../opencga/server/AbstractStorageServer.java | 66 +--------- .../org/opencb/opencga/server/RestServer.java | 36 +++++- .../opencga/server/grpc/GrpcServer.java | 19 --- .../main/resources/storage-configuration.yml | 2 - .../server/rest/RestStorageServer.java | 34 ++++- 11 files changed, 209 insertions(+), 193 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java index 060c72ceacc..826fe6998c9 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java @@ -16,13 +16,13 @@ package org.opencb.opencga.core.config; + /** * Created by imedina on 25/04/16. */ public abstract class AbstractServerConfiguration { protected int port; - protected String logFile; public AbstractServerConfiguration() { } @@ -35,7 +35,6 @@ public AbstractServerConfiguration(int port) { public String toString() { final StringBuilder sb = new StringBuilder("ServerConfiguration{"); sb.append("port=").append(port); - sb.append(", logFile='").append(logFile).append('\''); sb.append('}'); return sb.toString(); } @@ -49,13 +48,9 @@ public AbstractServerConfiguration setPort(int port) { return this; } - public String getLogFile() { - return logFile; - } - - public AbstractServerConfiguration setLogFile(String logFile) { - this.logFile = logFile; - return this; + @Deprecated + protected void setLogFile(Object o) { + Configuration.reportUnusedField("configuration.yml#server.rest.maxLimit", o); } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java index bb5057a76e2..fed1d98170b 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java @@ -66,6 +66,8 @@ public class Configuration { private static Logger logger; + private static final Set reportedFields = new HashSet<>(); + private static final String DEFAULT_CONFIGURATION_FORMAT = "yaml"; static { @@ -200,6 +202,14 @@ private static void overwriteWithEnvironmentVariables(Configuration configuratio } } + public static void reportUnusedField(String field, Object value) { + if (value != null && !(value instanceof String && ((String) value).isEmpty())) { + if (reportedFields.add(field)) { + logger.warn("Ignored configuration option '{}' with value '{}'. The option was deprecated and removed.", field, value); + } + } + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("Configuration{"); @@ -246,9 +256,7 @@ public String getLogFile() { @Deprecated public Configuration setLogFile(String logFile) { - if (logFile != null) { - logger.warn("Deprecated option 'configuration.yml#logFile'"); - } + reportUnusedField("configuration.yml#logFile", logFile); return this; } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/RestServerConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/RestServerConfiguration.java index 99ea3ada10c..f87075e9a02 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/RestServerConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/RestServerConfiguration.java @@ -16,52 +16,132 @@ package org.opencb.opencga.core.config; +import java.util.Objects; + /** * Created by imedina on 22/05/16. */ public class RestServerConfiguration extends AbstractServerConfiguration { - private int defaultLimit; - private int maxLimit; - - + public HttpConfiguration httpConfiguration = new HttpConfiguration(); public RestServerConfiguration() { } public RestServerConfiguration(int port) { - this(port, 2000, 5000); - } - - public RestServerConfiguration(int port, int defaultLimit, int maxLimit) { super(port); - this.defaultLimit = defaultLimit; - this.maxLimit = maxLimit; } @Override public String toString() { final StringBuilder sb = new StringBuilder("RestServerConfiguration{"); - sb.append("defaultLimit=").append(defaultLimit); - sb.append(", maxLimit=").append(maxLimit); + sb.append("port=").append(port); + sb.append(", httpConfiguration=").append(httpConfiguration); sb.append('}'); return sb.toString(); } - public int getDefaultLimit() { - return defaultLimit; + @Deprecated + protected void setDefaultLimit(Object o) { + Configuration.reportUnusedField("configuration.yml#server.rest.defaultLimit", o); } - public RestServerConfiguration setDefaultLimit(int defaultLimit) { - this.defaultLimit = defaultLimit; - return this; + @Deprecated + protected void setMaxLimit(Object o) { + Configuration.reportUnusedField("configuration.yml#server.rest.maxLimit", o); } - public int getMaxLimit() { - return maxLimit; + public HttpConfiguration getHttpConfiguration() { + return httpConfiguration; } - public RestServerConfiguration setMaxLimit(int maxLimit) { - this.maxLimit = maxLimit; + public RestServerConfiguration setHttpConfiguration(HttpConfiguration httpConfiguration) { + this.httpConfiguration = httpConfiguration; return this; } + + public static class HttpConfiguration { + private int outputBufferSize = -1; + private int outputAggregationSize = -1; + private int requestHeaderSize = -1; + private int responseHeaderSize = -1; + private int headerCacheSize = -1; + + public int getOutputBufferSize() { + return outputBufferSize; + } + + public HttpConfiguration setOutputBufferSize(int outputBufferSize) { + this.outputBufferSize = outputBufferSize; + return this; + } + + public int getOutputAggregationSize() { + return outputAggregationSize; + } + + public HttpConfiguration setOutputAggregationSize(int outputAggregationSize) { + this.outputAggregationSize = outputAggregationSize; + return this; + } + + public int getRequestHeaderSize() { + return requestHeaderSize; + } + + public HttpConfiguration setRequestHeaderSize(int requestHeaderSize) { + this.requestHeaderSize = requestHeaderSize; + return this; + } + + public int getResponseHeaderSize() { + return responseHeaderSize; + } + + public HttpConfiguration setResponseHeaderSize(int responseHeaderSize) { + this.responseHeaderSize = responseHeaderSize; + return this; + } + + public int getHeaderCacheSize() { + return headerCacheSize; + } + + public HttpConfiguration setHeaderCacheSize(int headerCacheSize) { + this.headerCacheSize = headerCacheSize; + return this; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("HttpConfiguration{"); + sb.append("outputBufferSize=").append(outputBufferSize); + sb.append(", outputAggregationSize=").append(outputAggregationSize); + sb.append(", requestHeaderSize=").append(requestHeaderSize); + sb.append(", responseHeaderSize=").append(responseHeaderSize); + sb.append(", headerCacheSize=").append(headerCacheSize); + sb.append('}'); + return sb.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HttpConfiguration that = (HttpConfiguration) o; + return outputBufferSize == that.outputBufferSize && + outputAggregationSize == that.outputAggregationSize && + requestHeaderSize == that.requestHeaderSize && + responseHeaderSize == that.responseHeaderSize && + headerCacheSize == that.headerCacheSize; + } + + @Override + public int hashCode() { + return Objects.hash(outputBufferSize, outputAggregationSize, requestHeaderSize, responseHeaderSize, headerCacheSize); + } + } } diff --git a/opencga-core/src/main/resources/configuration.yml b/opencga-core/src/main/resources/configuration.yml index dfc1526ab57..ad99aa68f79 100644 --- a/opencga-core/src/main/resources/configuration.yml +++ b/opencga-core/src/main/resources/configuration.yml @@ -73,12 +73,20 @@ authentication: server: rest: port: ${OPENCGA.SERVER.REST.PORT} - logFile: null - defaultLimit: 2000 - maxLimit: 5000 + httpConfiguration: + # The size in bytes of the output buffer used to aggregate HTTP output + outputBufferSize: 32768 + # The maximum size in bytes for HTTP output to be aggregated + outputAggregationSize: 8192 + # The maximum allowed size in bytes for a HTTP request header + requestHeaderSize: 8192 + # The maximum allowed size in bytes for a HTTP response header + responseHeaderSize: 8192 + # The maximum allowed size in bytes for a HTTP header field cache + headerCacheSize: 4096 + grpc: port: ${OPENCGA.SERVER.GRPC.PORT} - logFile: null optimizations: simplifyPermissions: ${OPENCGA_OPTIMIZATIONS_SIMPLIFY_PERMISSIONS} diff --git a/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java b/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java index a617f0049b0..5a65e947bf8 100644 --- a/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java +++ b/opencga-core/src/test/java/org/opencb/opencga/core/config/ConfigurationTest.java @@ -16,15 +16,15 @@ package org.opencb.opencga.core.config; -import org.apache.commons.lang3.StringUtils; import org.junit.Test; import org.junit.experimental.categories.Category; import org.opencb.opencga.core.testclassification.duration.ShortTests; -import java.io.FileOutputStream; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -34,68 +34,7 @@ public class ConfigurationTest { @Test - public void test() { - String path1 = "a/b/c.txt"; - String path2 = "a/b/c/"; - String path3 = "p.txt"; - - System.out.println(path1 + " ---- " + getParentPath(path1)); - System.out.println(path2 + " ---- " + getParentPath(path2)); - System.out.println(path3 + " ---- " + getParentPath(path3)); - - System.out.println(path1 + " ---- " + calculateAllPossiblePaths(path1)); - System.out.println(path2 + " ---- " + calculateAllPossiblePaths(path2)); - System.out.println(path3 + " ---- " + calculateAllPossiblePaths(path3)); - System.out.println("'' ---- " + calculateAllPossiblePaths("")); - - System.out.println(path1 + " ---- " + getFileName(path1)); - System.out.println(path2 + " ---- " + getFileName(path2)); - System.out.println(path3 + " ---- " + getFileName(path3)); - System.out.println("'' ---- " + getFileName("")); - - } - - String getParentPath(String strPath) { - Path path = Paths.get(strPath); - Path parent = path.getParent(); - if (parent != null) { - return parent.toString() + "/"; - } else { - return ""; - } - } - - String getFileName(String strPath) { - if (StringUtils.isEmpty(strPath)) { - return "."; - } - return Paths.get(strPath).getFileName().toString(); - } - - public static List calculateAllPossiblePaths(String filePath) { - if (StringUtils.isEmpty(filePath) || "/".equals(filePath)) { - return Collections.singletonList(""); - } - StringBuilder pathBuilder = new StringBuilder(); - String[] split = filePath.split("/"); - List paths = new ArrayList<>(split.length + 1); - paths.add(""); //Add study root folder - //Add intermediate folders - //Do not add the last split, could be a file or a folder.. - //Depending on this, it could end with '/' or not. - for (int i = 0; i < split.length - 1; i++) { - String f = split[i]; - System.out.println(f); - pathBuilder = new StringBuilder(pathBuilder.toString()).append(f).append("/"); - paths.add(pathBuilder.toString()); - } - paths.add(filePath); //Add the file path - return paths; - } - - - @Test - public void testDefault() { + public void testDefault() throws IOException { Configuration configuration = new Configuration(); configuration.setLogLevel("INFO"); @@ -136,7 +75,7 @@ public void testDefault() { configuration.setAudit(audit); ServerConfiguration serverConfiguration = new ServerConfiguration(); - RestServerConfiguration rest = new RestServerConfiguration(1000, 100, 1000); + RestServerConfiguration rest = new RestServerConfiguration(1000); GrpcServerConfiguration grpc = new GrpcServerConfiguration(1001); serverConfiguration.setGrpc(grpc); serverConfiguration.setRest(rest); @@ -155,11 +94,10 @@ public void testDefault() { // catalogConfiguration.getStorageEngines().add(storageEngineConfiguration1); // catalogConfiguration.getStorageEngines().add(storageEngineConfiguration2); - try { - configuration.serialize(new FileOutputStream("/tmp/configuration-test.yml")); - } catch (IOException e) { - e.printStackTrace(); - } + Path outdir = Paths.get("target/test-data", "junit-opencga-" + + new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss.SSS").format(new Date())); + Files.createDirectories(outdir); + configuration.serialize(Files.newOutputStream(outdir.resolve("configuration-test.yml").toFile().toPath())); } @Test diff --git a/opencga-core/src/test/resources/configuration-test.yml b/opencga-core/src/test/resources/configuration-test.yml index 4d8d3c10f25..dad67f8c5dc 100644 --- a/opencga-core/src/test/resources/configuration-test.yml +++ b/opencga-core/src/test/resources/configuration-test.yml @@ -46,7 +46,7 @@ authentication: server: rest: port: 8080 - logFile: null + logFile: "some_file_but_this_field_is_deprecated" defaultLimit: 2000 maxLimit: 5000 diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/AbstractStorageServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/AbstractStorageServer.java index e1e880f2d47..d4bcb75d575 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/AbstractStorageServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/AbstractStorageServer.java @@ -16,58 +16,29 @@ package org.opencb.opencga.server; -import org.apache.commons.lang3.StringUtils; import org.opencb.opencga.core.config.Configuration; import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; +import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; /** * Created by imedina on 02/01/16. */ public abstract class AbstractStorageServer { - @Deprecated - protected Path configDir; protected Path opencgaHome; protected int port; protected Configuration configuration; protected StorageConfiguration storageConfiguration; - /** - * This is the default StorageEngine to use when it is not provided by the client. - */ - @Deprecated - protected String defaultStorageEngine; - protected Logger logger; - - @Deprecated - public AbstractStorageServer() { - initDefaultConfigurationFiles(); - } - - @Deprecated - public AbstractStorageServer(int port, String defaultStorageEngine) { - initDefaultConfigurationFiles(); - - this.port = port; - if (StringUtils.isNotEmpty(defaultStorageEngine)) { - this.defaultStorageEngine = defaultStorageEngine; - } else { - this.defaultStorageEngine = storageConfiguration.getVariant().getDefaultEngine(); - } - } - public AbstractStorageServer(Path opencgaHome) { this(opencgaHome, 0); } @@ -93,33 +64,15 @@ private void initConfigurationFiles(Path opencgaHome) { try { if (opencgaHome != null && Files.exists(opencgaHome) && Files.isDirectory(opencgaHome) && Files.exists(opencgaHome.resolve("conf"))) { - logger.info("Loading configuration files from '{}'", opencgaHome.toString()); -// generalConfiguration = GeneralConfiguration.load(GeneralConfiguration.class.getClassLoader().getResourceAsStream("configuration.yml")); - configuration = Configuration - .load(new FileInputStream(new File(opencgaHome.resolve("conf").toFile().getAbsolutePath() + "/configuration.yml"))); - storageConfiguration = StorageConfiguration - .load(new FileInputStream(new File(opencgaHome.resolve("conf").toFile().getAbsolutePath() + "/storage-configuration.yml"))); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Deprecated - private void initDefaultConfigurationFiles() { - try { - if (System.getenv("OPENCGA_HOME") != null) { - initConfigurationFiles(Paths.get(System.getenv("OPENCGA_HOME") + "/conf")); - } else { - logger.info("Loading configuration files from inside JAR file"); + logger.info("Loading configuration files from '{}'", opencgaHome); // generalConfiguration = GeneralConfiguration.load(GeneralConfiguration.class.getClassLoader().getResourceAsStream("configuration.yml")); configuration = Configuration - .load(Configuration.class.getClassLoader().getResourceAsStream("configuration.yml")); + .load(Files.newInputStream(opencgaHome.resolve("conf").resolve("configuration.yml").toFile().toPath())); storageConfiguration = StorageConfiguration - .load(StorageConfiguration.class.getClassLoader().getResourceAsStream("storage-configuration.yml")); + .load(Files.newInputStream(opencgaHome.resolve("conf").resolve("storage-configuration.yml").toFile().toPath())); } } catch (IOException e) { - e.printStackTrace(); + throw new UncheckedIOException(e); } } @@ -133,7 +86,6 @@ private void initDefaultConfigurationFiles() { public String toString() { final StringBuilder sb = new StringBuilder("StorageServer{"); sb.append("port=").append(port); - sb.append(", defaultStorageEngine='").append(defaultStorageEngine).append('\''); sb.append('}'); return sb.toString(); } @@ -146,12 +98,4 @@ public void setPort(int port) { this.port = port; } - public String getDefaultStorageEngine() { - return defaultStorageEngine; - } - - public void setDefaultStorageEngine(String defaultStorageEngine) { - this.defaultStorageEngine = defaultStorageEngine; - } - } diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java index 28bdffc8016..1e991053645 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java @@ -16,8 +16,12 @@ package org.opencb.opencga.server; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.webapp.WebAppContext; +import org.opencb.opencga.core.config.RestServerConfiguration; import java.io.IOException; import java.nio.file.Files; @@ -44,7 +48,14 @@ public RestServer(Path opencgaHome, int port) { @Override public void start() throws Exception { - server = new Server(port); + server = new Server(); + + HttpConfiguration httpConfig = getHttpConfiguration(); + + ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory(httpConfig)); + httpConnector.setPort(port); + + server.addConnector(httpConnector); WebAppContext webapp = new WebAppContext(); Optional warPath; @@ -56,7 +67,7 @@ public void start() throws Exception { throw new Exception("Error accessing OpenCGA Home: " + opencgaHome.toString(), e); } // Check is a war file has been found in opencgaHome - if (warPath == null || !warPath.isPresent()) { + if (!warPath.isPresent()) { throw new Exception("No war file found at " + opencgaHome.toString()); } @@ -105,6 +116,27 @@ public void run() { // AdminRestWebService.setServer(this); } + private HttpConfiguration getHttpConfiguration() { + HttpConfiguration httpConfig = new HttpConfiguration(); + RestServerConfiguration.HttpConfiguration restHttpConf = configuration.getServer().getRest().getHttpConfiguration(); + if (restHttpConf.getOutputBufferSize() > 0) { + httpConfig.setOutputBufferSize(restHttpConf.getOutputBufferSize()); + } + if (restHttpConf.getOutputAggregationSize() > 0) { + httpConfig.setOutputAggregationSize(restHttpConf.getOutputAggregationSize()); + } + if (restHttpConf.getRequestHeaderSize() > 0) { + httpConfig.setRequestHeaderSize(restHttpConf.getRequestHeaderSize()); + } + if (restHttpConf.getResponseHeaderSize() > 0) { + httpConfig.setResponseHeaderSize(restHttpConf.getResponseHeaderSize()); + } + if (restHttpConf.getHeaderCacheSize() > 0) { + httpConfig.setHeaderCacheSize(restHttpConf.getHeaderCacheSize()); + } + return httpConfig; + } + @Override public void stop() throws Exception { // By setting exit to true the monitor thread will close the Jetty server diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/grpc/GrpcServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/grpc/GrpcServer.java index 76b4c350a32..32ded068042 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/grpc/GrpcServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/grpc/GrpcServer.java @@ -19,7 +19,6 @@ import io.grpc.Server; import io.grpc.ServerBuilder; import org.opencb.opencga.server.AbstractStorageServer; -import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.slf4j.LoggerFactory; import java.nio.file.Path; @@ -31,29 +30,11 @@ public class GrpcServer extends AbstractStorageServer { private Server server; - public GrpcServer() { -// this(storageConfiguration.getServer().getGrpc(), storageConfiguration.getDefaultStorageEngineId()); - } - - public GrpcServer(int port, String defaultStorageEngine) { - super(port, defaultStorageEngine); - - logger = LoggerFactory.getLogger(this.getClass()); - } - public GrpcServer(Path configDir) { super(configDir); init(); } - @Deprecated - public GrpcServer(StorageConfiguration storageConfiguration) { -// super(storageConfiguration.getServer().getGrpc(), storageConfiguration.getDefaultStorageEngineId()); - this.storageConfiguration = storageConfiguration; - - logger = LoggerFactory.getLogger(this.getClass()); - } - private void init() { logger = LoggerFactory.getLogger(this.getClass()); if (configuration != null) { diff --git a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml index 226fc106783..4f64a3ad939 100644 --- a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml +++ b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml @@ -18,10 +18,8 @@ cellbase: server: rest: port: ${OPENCGA.SERVER.REST.PORT} - logFile: null grpc: port: ${OPENCGA.SERVER.GRPC.PORT} - logFile: null ## Solr Search Configuration search: diff --git a/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/RestStorageServer.java b/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/RestStorageServer.java index 226c8ab46ce..5343a17eb1d 100644 --- a/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/RestStorageServer.java +++ b/opencga-storage/opencga-storage-server/src/main/java/org/opencb/opencga/storage/server/rest/RestStorageServer.java @@ -16,11 +16,15 @@ package org.opencb.opencga.storage.server.rest; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.servlet.ServletContainer; +import org.opencb.opencga.core.config.RestServerConfiguration; import org.opencb.opencga.core.config.storage.StorageConfiguration; import org.opencb.opencga.storage.server.common.AbstractStorageServer; import org.slf4j.LoggerFactory; @@ -60,7 +64,14 @@ public void start() throws Exception { ServletHolder sh = new ServletHolder("opencga", sc); logger.info("Server in port : {}", port); - server = new Server(port); + server = new Server(); + + HttpConfiguration httpConfig = getHttpConfiguration(); + + ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory(httpConfig)); + httpConnector.setPort(port); + + server.addConnector(httpConnector); ServletContextHandler context = new ServletContextHandler(server, null, ServletContextHandler.SESSIONS); context.addServlet(sh, "/opencga/webservices/rest/*"); @@ -103,6 +114,27 @@ public void run() { AdminRestWebService.setServer(this); } + private HttpConfiguration getHttpConfiguration() { + HttpConfiguration httpConfig = new HttpConfiguration(); + RestServerConfiguration.HttpConfiguration restHttpConf = storageConfiguration.getServer().getRest().getHttpConfiguration(); + if (restHttpConf.getOutputBufferSize() > 0) { + httpConfig.setOutputBufferSize(restHttpConf.getOutputBufferSize()); + } + if (restHttpConf.getOutputAggregationSize() > 0) { + httpConfig.setOutputAggregationSize(restHttpConf.getOutputAggregationSize()); + } + if (restHttpConf.getRequestHeaderSize() > 0) { + httpConfig.setRequestHeaderSize(restHttpConf.getRequestHeaderSize()); + } + if (restHttpConf.getResponseHeaderSize() > 0) { + httpConfig.setResponseHeaderSize(restHttpConf.getResponseHeaderSize()); + } + if (restHttpConf.getHeaderCacheSize() > 0) { + httpConfig.setHeaderCacheSize(restHttpConf.getHeaderCacheSize()); + } + return httpConfig; + } + @Override public void stop() throws Exception { // By setting exit to true the monitor thread will close the Jetty server From f661aeba17975b13e77603da3ac69ca11df4e855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 8 May 2024 12:18:26 +0100 Subject: [PATCH 294/354] server: Extract individual init methods at RestServer #TASK-5888 --- .../org/opencb/opencga/server/RestServer.java | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java index 1e991053645..c3f87c68239 100644 --- a/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java +++ b/opencga-server/src/main/java/org/opencb/opencga/server/RestServer.java @@ -48,6 +48,22 @@ public RestServer(Path opencgaHome, int port) { @Override public void start() throws Exception { + initServer(); + + Path war = getOpencgaWar(); + + initWebApp(war); + + server.start(); + logger.info("REST server started, listening on {}", server.getURI()); + + initHooks(); + +// // AdminWSServer server needs a reference to this class to cll to .stop() +// AdminRestWebService.setServer(this); + } + + protected Server initServer() { server = new Server(); HttpConfiguration httpConfig = getHttpConfiguration(); @@ -56,8 +72,10 @@ public void start() throws Exception { httpConnector.setPort(port); server.addConnector(httpConnector); + return server; + } - WebAppContext webapp = new WebAppContext(); + protected Path getOpencgaWar() throws Exception { Optional warPath; try (Stream stream = Files.list(opencgaHome)) { warPath = stream @@ -70,32 +88,33 @@ public void start() throws Exception { if (!warPath.isPresent()) { throw new Exception("No war file found at " + opencgaHome.toString()); } + return warPath.get(); + } - String opencgaVersion = warPath.get().toFile().getName().replace(".war", ""); + protected WebAppContext initWebApp(Path war) throws Exception { + String opencgaVersion = war.toFile().getName().replace(".war", ""); + WebAppContext webapp = new WebAppContext(); webapp.setContextPath("/" + opencgaVersion); - webapp.setWar(warPath.get().toString()); + webapp.setWar(war.toString()); webapp.setClassLoader(this.getClass().getClassLoader()); webapp.setInitParameter("OPENCGA_HOME", opencgaHome.toFile().toString()); webapp.getServletContext().setAttribute("OPENCGA_HOME", opencgaHome.toFile().toString()); // webapp.setInitParameter("log4jConfiguration", opencgaHome.resolve("conf/log4j2.server.xml").toString()); server.setHandler(webapp); + return webapp; + } - server.start(); - logger.info("REST server started, listening on {}", port); - + protected void initHooks() { // A hook is added in case the JVM is shutting down - Runtime.getRuntime().addShutdownHook(new Thread() { - @Override - public void run() { - try { - if (server.isRunning()) { - stopJettyServer(); - } - } catch (Exception e) { - e.printStackTrace(); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + try { + if (server.isRunning()) { + stopJettyServer(); } + } catch (Exception e) { + logger.error("Error stopping Jetty server", e); } - }); + })); // A separated thread is launched to shut down the server new Thread(() -> { @@ -108,15 +127,12 @@ public void run() { Thread.sleep(500); } } catch (Exception e) { - e.printStackTrace(); + logger.error("Error stopping Jetty server", e); } }).start(); - -// // AdminWSServer server needs a reference to this class to cll to .stop() -// AdminRestWebService.setServer(this); } - private HttpConfiguration getHttpConfiguration() { + protected HttpConfiguration getHttpConfiguration() { HttpConfiguration httpConfig = new HttpConfiguration(); RestServerConfiguration.HttpConfiguration restHttpConf = configuration.getServer().getRest().getHttpConfiguration(); if (restHttpConf.getOutputBufferSize() > 0) { From 9aae8c1650cf034c0905c69ff9cd61e679cef247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 8 May 2024 12:28:53 +0100 Subject: [PATCH 295/354] core: Fix typo on unused configuration field. #TASK-5888 --- .../opencb/opencga/core/config/AbstractServerConfiguration.java | 2 +- .../main/java/org/opencb/opencga/core/config/Configuration.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java index 826fe6998c9..cffc7fe68b8 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/AbstractServerConfiguration.java @@ -50,7 +50,7 @@ public AbstractServerConfiguration setPort(int port) { @Deprecated protected void setLogFile(Object o) { - Configuration.reportUnusedField("configuration.yml#server.rest.maxLimit", o); + Configuration.reportUnusedField("configuration.yml#server.[rest|grpc].logFile", o); } } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java index fed1d98170b..be957b160a7 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/Configuration.java @@ -203,8 +203,10 @@ private static void overwriteWithEnvironmentVariables(Configuration configuratio } public static void reportUnusedField(String field, Object value) { + // Report only if the value is not null and not an empty string if (value != null && !(value instanceof String && ((String) value).isEmpty())) { if (reportedFields.add(field)) { + // Only log the first time a field is found logger.warn("Ignored configuration option '{}' with value '{}'. The option was deprecated and removed.", field, value); } } From faffa3f47486996c8cc30ded81baf21a70ead59b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 8 May 2024 16:39:15 +0100 Subject: [PATCH 296/354] storage: Include variant stats currently being updated in variant results. #TASK-6201 --- .../core/cellbase/CellBaseValidator.java | 19 ++++- .../VariantStorageMetadataManager.java | 9 ++- .../VariantQueryProjectionParser.java | 10 ++- .../DefaultVariantStatisticsManager.java | 1 + .../stats/VariantStatisticsManager.java | 1 + .../stats/VariantStatisticsManagerTest.java | 74 +++++++++++++++---- .../phoenix/VariantPhoenixSchemaManager.java | 2 +- ...condaryIndexPendingVariantsDescriptor.java | 2 +- 8 files changed, 96 insertions(+), 22 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 6d7eafd1503..5ed331143db 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -9,6 +9,7 @@ import org.opencb.cellbase.core.config.SpeciesProperties; import org.opencb.cellbase.core.models.DataRelease; import org.opencb.cellbase.core.result.CellBaseDataResponse; +import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.commons.utils.VersionUtils; @@ -307,9 +308,13 @@ private static String majorMinor(String version) { public String getVersionFromServer() throws IOException { if (serverVersion == null) { synchronized (this) { - String serverVersion = cellBaseClient.getMetaClient().about().firstResult().getString("Version"); + ObjectMap result = retryMetaAbout(3); + if (result == null) { + throw new IOException("Unable to get version from server for cellbase " + toString()); + } + String serverVersion = result.getString("Version"); if (StringUtils.isEmpty(serverVersion)) { - serverVersion = cellBaseClient.getMetaClient().about().firstResult().getString("Version: "); + serverVersion = result.getString("Version: "); } this.serverVersion = serverVersion; } @@ -317,6 +322,16 @@ public String getVersionFromServer() throws IOException { return serverVersion; } + private ObjectMap retryMetaAbout(int retries) throws IOException { + ObjectMap result = cellBaseClient.getMetaClient().about().firstResult(); + if (result == null && retries > 0) { + // Retry + logger.warn("Unable to get version from server for cellbase " + toString() + ". Retrying..."); + result = retryMetaAbout(retries - 1); + } + return result; + } + public boolean isMinVersion(String minVersion) throws IOException { String serverVersion = getVersionFromServer(); return VersionUtils.isMinVersion(minVersion, serverVersion); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index 65812bd7017..46872f47103 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -1135,9 +1135,14 @@ public Iterable getInvalidCohorts(int studyId) { return () -> Iterators.filter(cohortIterator(studyId), CohortMetadata::isInvalid); } - public Iterable getCalculatedOrInvalidCohorts(int studyId) { + public Iterable getCalculatedOrPartialCohorts(int studyId) { return () -> Iterators.filter(cohortIterator(studyId), - cohortMetadata -> cohortMetadata.isStatsReady() || cohortMetadata.isInvalid()); + cohortMetadata -> { + TaskMetadata.Status status = cohortMetadata.getStatsStatus(); + return status == TaskMetadata.Status.READY + || status == TaskMetadata.Status.RUNNING + || status == TaskMetadata.Status.ERROR; + }); } public CohortMetadata setSamplesToCohort(int studyId, String cohortName, Collection samples) throws StorageEngineException { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index 3ec0c32c08a..bdcd501ad88 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -8,6 +8,7 @@ import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; import org.opencb.opencga.storage.core.metadata.models.FileMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; @@ -134,9 +135,10 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti for (VariantQueryProjection.StudyVariantQueryProjection study : studies.values()) { int studyId = study.getId(); List cohorts = new LinkedList<>(); - for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrPartialCohorts(studyId)) { cohorts.add(cohort.getId()); - if (cohort.isInvalid()) { + TaskMetadata.Status status = cohort.getStatsStatus(); + if (status == TaskMetadata.Status.ERROR) { String message = "Please note that the Cohort Stats for " + "'" + study.getName() + ":" + cohort.getName() + "' are currently outdated."; int numSampmles = cohort.getSamples().size(); @@ -147,6 +149,10 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti } message += " To display updated statistics, please execute variant-stats-index."; events.add(new Event(Event.Type.WARNING, message)); + } else if (status == TaskMetadata.Status.RUNNING) { + String message = "Please note that the Cohort Stats for " + + "'" + study.getName() + ":" + cohort.getName() + "' are currently being calculated."; + events.add(new Event(Event.Type.WARNING, message)); } } study.setCohorts(cohorts); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/DefaultVariantStatisticsManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/DefaultVariantStatisticsManager.java index c85c63b1505..db6ead71f58 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/DefaultVariantStatisticsManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/DefaultVariantStatisticsManager.java @@ -474,6 +474,7 @@ protected VariantStatsDBWriter newVariantStatisticsDBWriter(VariantDBAdaptor dbA // // } + @Deprecated void checkAndUpdateCalculatedCohorts(StudyMetadata studyMetadata, URI uri, boolean updateStats) throws IOException, StorageEngineException { Set cohortNames = readCohortsFromStatsFile(uri); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManager.java index fe6765529fa..d4fdc948622 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManager.java @@ -112,6 +112,7 @@ public void postCalculateStats( } } + @Deprecated public static void checkAndUpdateCalculatedCohorts( VariantStorageMetadataManager metadataManager, StudyMetadata studyMetadata, Collection cohorts, boolean updateStats) throws StorageEngineException { diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java index baafe7d0ad6..e90b49cff4d 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/stats/VariantStatisticsManagerTest.java @@ -18,6 +18,7 @@ import org.junit.*; import org.junit.rules.ExpectedException; +import org.mockito.Mockito; import org.opencb.biodata.models.variant.Genotype; import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; @@ -33,7 +34,9 @@ import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; +import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.VariantStorageEngineTest; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; @@ -49,8 +52,7 @@ import java.util.*; import java.util.stream.Collectors; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * Created by hpccoll1 on 01/06/15. @@ -123,32 +125,76 @@ public void queryInvalidStats() throws Exception { Iterator iterator = metadataManager.sampleMetadataIterator(studyMetadata.getId()); /** Create cohorts **/ - HashSet cohort1 = new HashSet<>(); - cohort1.add(iterator.next().getName()); - cohort1.add(iterator.next().getName()); + HashSet cohort1Samples = new HashSet<>(); + cohort1Samples.add(iterator.next().getName()); + cohort1Samples.add(iterator.next().getName()); - HashSet cohort2 = new HashSet<>(); - cohort2.add(iterator.next().getName()); - cohort2.add(iterator.next().getName()); + HashSet cohort2Samples = new HashSet<>(); + cohort2Samples.add(iterator.next().getName()); + cohort2Samples.add(iterator.next().getName()); Map> cohorts = new HashMap<>(); - cohorts.put("cohort1", cohort1); - cohorts.put("cohort2", cohort2); + cohorts.put("cohort1", cohort1Samples); + cohorts.put("cohort2", cohort2Samples); + + // Just cohort ALL is expected + VariantQueryResult result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(1, result.first().getStudies().get(0).getStats().size()); + assertEquals(0, result.getEvents().size()); + + metadataManager.registerCohort(studyMetadata.getName(), "cohort1", cohort1Samples); + + // Still just cohort ALL is expected, as cohort1 is not ready nor partial + result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(1, result.first().getStudies().get(0).getStats().size()); + assertEquals(0, result.getEvents().size()); //Calculate stats stats(options, studyMetadata.getName(), cohorts, outputUri.resolve("cohort1.cohort2.stats")); checkCohorts(dbAdaptor, studyMetadata); - List cohort1Samples = metadataManager.getCohortMetadata(studyMetadata.getId(), "cohort1").getSamples(); - CohortMetadata cohort = metadataManager.addSamplesToCohort(studyMetadata.getId(), "cohort2", cohort1Samples); - assertTrue(cohort.isInvalid()); + // All 3 cohorts are ready and expected + result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(3, result.first().getStudies().get(0).getStats().size()); + assertEquals(0, result.getEvents().size()); - VariantQueryResult result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + List cohort1SampleIds = metadataManager.getCohortMetadata(studyMetadata.getId(), "cohort1").getSamples(); + CohortMetadata cohort2 = metadataManager.addSamplesToCohort(studyMetadata.getId(), "cohort2", cohort1SampleIds); + assertTrue(cohort2.isInvalid()); + + // Cohort2 is invalid, but still all cohorts are expected, but with a warning event + result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(3, result.first().getStudies().get(0).getStats().size()); assertEquals(1, result.getEvents().size()); assertEquals("Please note that the Cohort Stats for '1000g:cohort2' are currently outdated." + " The statistics have been calculated with 2 samples, while the total number of samples in the cohort is 4." + " To display updated statistics, please execute variant-stats-index.", result.getEvents().get(0).getMessage()); + + VariantStorageEngine engineMock = Mockito.spy(variantStorageEngine); + VariantStatisticsManager statsManagerMock = Mockito.spy(variantStorageEngine.newVariantStatisticsManager()); + Mockito.doReturn(statsManagerMock).when(engineMock).newVariantStatisticsManager(); + Mockito.doAnswer(invocation -> { + invocation.callRealMethod(); + throw new StorageEngineException("Mock error calculating stats"); + }).when(statsManagerMock).preCalculateStats(Mockito.any(), Mockito.any(), Mockito.anyList(), Mockito.anyBoolean(), Mockito.any()); + + options.put(DefaultVariantStatisticsManager.OUTPUT, outputUri.resolve("stats_mock_fail").toString()); + try { + engineMock.calculateStats(studyMetadata.getName(), Collections.singletonList(cohort2.getName()), options); + fail("Expected to fail mock"); + } catch (Exception e) { + assertEquals("Mock error calculating stats", e.getMessage()); + } + + cohort2 = metadataManager.getCohortMetadata(studyMetadata.getId(), cohort2.getName()); + assertEquals(TaskMetadata.Status.RUNNING, cohort2.getStatsStatus()); + + result = variantStorageEngine.get(new Query(), new QueryOptions(QueryOptions.LIMIT, 1)); + assertEquals(3, result.first().getStudies().get(0).getStats().size()); + assertEquals(1, result.getEvents().size()); + assertEquals("Please note that the Cohort Stats for '1000g:cohort2' are currently being calculated.", + result.getEvents().get(0).getMessage()); } @Test diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java index 4ffa3c7aa55..6f917dbabdd 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchemaManager.java @@ -79,7 +79,7 @@ public void registerStudyColumns(int studyId) throws StorageEngineException { registerNewFiles(studyId, new ArrayList<>(metadataManager.getIndexedFiles(studyId))); List cohortIds = new LinkedList<>(); - for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrPartialCohorts(studyId)) { cohortIds.add(cohort.getId()); } registerNewCohorts(studyId, cohortIds); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java index 604611ca93c..8b5134873ed 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java @@ -61,7 +61,7 @@ public Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManag scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, INDEX_STUDIES.bytes()); for (Integer studyId : metadataManager.getStudyIds()) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStudyColumn(studyId).bytes()); - for (CohortMetadata cohort : metadataManager.getCalculatedOrInvalidCohorts(studyId)) { + for (CohortMetadata cohort : metadataManager.getCalculatedOrPartialCohorts(studyId)) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStatsColumn(studyId, cohort.getId()).bytes()); } } From c1b419be45a35e7d3d25512e29c12ac5f5fa3b19 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 9 May 2024 11:39:41 +0200 Subject: [PATCH 297/354] Prepare release 2.12.4.1 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 6 +++--- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 36890fd8b65..e6ff1cdab39 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index cce6a1832f6..8338fed6637 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index fa4d079fca2..3c04b120d94 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index cf8bce68061..6bfc198dbd2 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 5e87374579c..091f182629c 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b896c8ef333..aa0b7536f33 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 0e14a74b9a2..7d734c21008 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 255d0d1709c..995f35ba347 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index f2834ff74ae..94bff4c00ef 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 81ae1525c3e..40cf18bfb8c 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 83ba931c476..ccf5ad0c257 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0cb400c03d3..ded68c578bf 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index be258210e4f..28d392a9ea7 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 7ce0441a47d..5c40b34b0b9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index cf4bb3c0833..ed33bf0043b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index a2124179531..bb718594f50 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 364447c5d26..510bd72eaac 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index d07a2556ef6..a3fe6497eb8 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 8af319c168b..3284f8c8670 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index fd776c8408b..6baa1797a71 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 ../pom.xml diff --git a/pom.xml b/pom.xml index bd0b2b56ab6..60f9eabe132 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1-SNAPSHOT + 2.12.4.1 pom OpenCGA @@ -43,8 +43,8 @@ - 2.12.4 - 2.12.4 + + 2.12.4.1 5.8.3 2.12.2 4.12.0 From 1bf4ec594f23f052186155cfcb5f99cbb17f68c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 10 May 2024 18:20:05 +0100 Subject: [PATCH 298/354] storage: Hash large ref/alt alleles. Add new column ALLELES. #TASK-6005 --- .../variant/VariantStorageEngineSVTest.java | 17 +++- .../test/resources/variant-test-sv-large.vcf | 52 ++++++++++ .../adaptors/VariantHBaseQueryParser.java | 9 +- .../phoenix/VariantPhoenixKeyFactory.java | 98 ++++++++++++++++--- .../phoenix/VariantPhoenixSchema.java | 1 + .../phoenix/VariantSqlQueryParser.java | 28 +++++- .../sample/HBaseVariantSampleDataManager.java | 2 + .../AnnotationPendingVariantsDescriptor.java | 18 +++- .../converters/HBaseToVariantConverter.java | 5 +- .../hadoop/variant/converters/VariantRow.java | 22 ++++- .../study/StudyEntryToHBaseConverter.java | 1 + .../gaps/PrepareFillMissingMapper.java | 2 +- .../VariantTableSampleIndexOrderMapper.java | 4 +- .../variant/index/sample/AlleleCodec.java | 8 +- .../sample/SampleIndexVariantBiConverter.java | 4 +- .../mr/SampleIndexTableRecordReader.java | 13 +-- .../pending/PendingVariantsDescriptor.java | 7 ++ .../pending/PendingVariantsReader.java | 2 +- .../variant/prune/VariantPruneDriver.java | 24 +++-- .../variant/prune/VariantPruneManager.java | 2 +- ...condaryIndexPendingVariantsDescriptor.java | 1 + .../stats/CheckVariantStatsDriver.java | 2 +- .../stats/VariantStatsFromResultMapper.java | 2 +- .../HadoopVariantStorageEngineSVTest.java | 37 ++++--- .../VariantHadoopStoragePipelineTest.java | 2 +- .../hadoop/variant/VariantHbaseTestUtils.java | 6 +- .../phoenix/VariantPhoenixKeyFactoryTest.java | 42 +++++++- .../hadoop/variant/gaps/FillGapsTest.java | 3 +- 28 files changed, 333 insertions(+), 81 deletions(-) create mode 100644 opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv-large.vcf diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java index fe7cebbd6a4..44ccd4f305a 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java @@ -16,6 +16,7 @@ import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.io.VariantWriterFactory; @@ -39,11 +40,14 @@ public abstract class VariantStorageEngineSVTest extends VariantStorageBaseTest { protected static StudyMetadata studyMetadata; + protected static StudyMetadata studyMetadata2; protected static boolean loaded = false; protected static StoragePipelineResult pipelineResult1; protected static StoragePipelineResult pipelineResult2; + protected static StoragePipelineResult pipelineResult3; protected static URI input1; protected static URI input2; + protected static URI input3; @Before public void before() throws Exception { @@ -72,6 +76,12 @@ protected void loadFiles() throws Exception { pipelineResult2 = runDefaultETL(input2, variantStorageEngine, studyMetadata, new QueryOptions() .append(VariantStorageOptions.ANNOTATE.key(), true) .append(VariantStorageOptions.ASSEMBLY.key(), "grch38")); + + input3 = getResourceUri("variant-test-sv-large.vcf"); + studyMetadata2 = new StudyMetadata(2, "s2"); + pipelineResult3 = runDefaultETL(input3, variantStorageEngine, studyMetadata2, new QueryOptions() + .append(VariantStorageOptions.ANNOTATE.key(), false) + .append(VariantStorageOptions.ASSEMBLY.key(), "grch38")); } @Test @@ -88,7 +98,7 @@ public void checkCount() throws Exception { + 1 + 1 // negative cipos ; - int count = variantStorageEngine.getDBAdaptor().count().first().intValue(); + int count = variantStorageEngine.count(new VariantQuery().study(studyMetadata.getName())).first().intValue(); assertEquals(expected, count); } @@ -146,7 +156,10 @@ protected void checkCorrectness(URI file) throws StorageEngineException, NonStan @Test public void exportVcf() throws Exception { - variantStorageEngine.exportData(null, VariantWriterFactory.VariantOutputFormat.VCF, null, new Query(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "./."), new QueryOptions(QueryOptions.SORT, true)); + variantStorageEngine.exportData(null, VariantWriterFactory.VariantOutputFormat.VCF, null, + new VariantQuery().unknownGenotype("./.").study(studyMetadata.getName()), new QueryOptions(QueryOptions.SORT, true)); + variantStorageEngine.exportData(null, VariantWriterFactory.VariantOutputFormat.VCF, null, + new VariantQuery().unknownGenotype("./.").study(studyMetadata2.getName()), new QueryOptions(QueryOptions.SORT, true)); } protected Map readVariants(URI input) throws StorageEngineException, NonStandardCompliantSampleField { diff --git a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv-large.vcf b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv-large.vcf new file mode 100644 index 00000000000..5e1de5845e2 --- /dev/null +++ b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv-large.vcf @@ -0,0 +1,52 @@ +##fileformat=VCFv4.2 +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +##ALT= +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE_3 SAMPLE_4 +20 500000 . C CCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG . PASS . GT 0/1 0/1 +20 600000 . CCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG G . PASS SVTYPE=DEL GT 0/1 0/1 +20 700010 . T C . PASS . GT 0/1 0/1 +20 800000 . A . PASS SVTYPE=INS;END=800000;SVLEN=6027;CIPOS=-16,22;RIGHT_SVINSSEQ=CCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG;LEFT_SVINSSEQ=ACCACACCCACACAACACACA GT 0/1 0/1 +20 850000 . A . PASS SVTYPE=INS;END=850000;SVINSSEQ=CCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG GT 0/1 0/1 +20 860000 . A . PASS SVTYPE=INS;END=860000;SVLEN=1000 GT 0/1 0/1 +20 900000 . C CACCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG . PASS SVTYPE=INS GT 0/1 0/1 +20 900000 . C CCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG . PASS SVTYPE=INS GT 0/1 0/1 +20 900000 . C CGCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG . PASS SVTYPE=INS GT 0/1 0/1 +20 900000 . C CTCCCGTTTATGAACTCAGCGCCGAACAGAAAAAATAGCCCCACTTTAAGTCCGCTTTAGCGACTCTAGGGTCCGAACGCGCTGTTTCGTACATGGCACGTCGGTAGGCAAGAACTCCCGTCCTCAGATGAAGATGCGTAATATCCTTACGTATTTTGGAACTCAGGCTGCCGAGCATCTTATTGGGAGACTCTTACCACTTTGCCCGTAAGCAGGGAAACGACATTTGATAAAGGATGGCAGGGAAGCTTTTATGCCCCTTTTCCTACTACAACGTCGAATGTTGACTTCCTGGTTAGCGTTGTGGCCTTGTACTGACCCTACTAGGGTTTCAGCTGCCTAGAGGACATTCGACCGACCCACGACCGCAGCTCGCGGTTCATACACGAGAAGCTACAATCCGCTTAAGTATTTGTTCTTTTCGTTCTAGGGCCCGCGGCACCAAGGAGGCTTCAGAAAGAGAATAATTACTCGATCGTCCCGTAAGTAGTGTATCGCTAACAGGGCCTGCGTCGTCCATACTAAGGCAAGGTGCTCCAGCAGGGCATAGGAATTGACCGGCGGGTAACATTGGAGACAACATGTGATTTGTTGCTTAATCTCGGTTAACCCGCCCCGCTGTAAAGGCGAGACGGCAATCATGAATTCTAGCACGCACCCCGCCCGTCTCTGTCTTCAAAATGTATTTTTGGCAACGAAGGATCAGCCTGTCCCGAATCGACACTGTGTTCCTATGGCGTAAAGAATTCTGTTCCTGAATCGCGGGCGCACCGTAATTCTTACTTTCACATCGAATTGTTAGATGCTGACGAGCAGAGCGCAGTGCGGCCGGGCGGAGATTGCAGGGCTGGCAGAGCCATTGGCCGTTGATGGTGTTTAGACGCTAAGCTAACCCTATGCCTCATGGATACTTGCTACACAACAGTGTCTGCGTAGGCTGAAATGGGGACGGCATGAGACCTCAGTGTCAACACAATTTGATGCACTGGGTTTTCTGCAACTACTTTACTACGGCTTTGTCCTTAACGCGTTAAGGGACTCCATCTCATCCGTATCATAAACTCCGTAGTGTATTGGGGCCAAATCTAGAATACGTACCGTCGACAATGCTCACGAGGGTTACTCAAAACTCGGCGGGGTGCCTCAATCCGCGTGCCGTGAAATGCCCGTATTCACGACGACTAAGCACTTAAGTCTCGGGAGCTCTGTTGCGTCTCGTCTAAGGGCAGTCTTGCTTCCTGTGTCTGCAAGTTCCTCTCTAGTGTTTAGGGTGCCTAATATACTCCACGTGTGTCTATGGACTCCATATGGTAAGTAATGGTGTTTGATAAACCCCTGGCCCTTTAGGTTCTACCTAGCCTAACTTCTTCCTTTGACTTTTACCCCCATTGATCCATGTTCGTCGAAGTGGCCGATTGAGGCTGCCGCATGGCCAAACCGCTAACCCGATCGAGAAGGTTGCAAGGGCGCATCCGCAAATAAACCATGGTTGCTAATTGGGGTGCAGGCGTAGAATTTGTCGGTTCAAAAGGCCCTCGACCTGCACAATGACTTGCGCTCGTAACTTATGATAGGGCCGGCATGGGATTATTCGAGGGACTCCTCACACTCAGAAGTTTACTCCCGGAGCACGACTTTACGAGGTGTGTTGCTTTATGATGGCATATAAAAAAGATGCACCAATCACCAAAACCCAACTATCCTTGACACGATCAGTGCGCGACCTACGACTACTCTAGTGGTACGACTATCGCGATGGAGGGGATATTCGTATATTTGAAGTTCATGTATTGATTCGGTTATGGCGTCTCCCTTAGTGTTTATGGACTTCATGCGTGCCCCTTATCCGCCCGCAGGCACCAATCACATTGTGGAGTTAGTTGGAGCGAAATTGGGTGGCTGTACGGTCAAACTAGAAGCATACCTTCACAAGGGCGTGGCGCTATGGGAAGTGGACCTGAGGGACACGATGGGTGAGATTCGGACACTCTGTCTACAAAATTAGGAGGTACCTACTGCTAGCGAGCTTCAAAATTCGGGAAGAGATCCTCGTACCACGTATTAATGAAGAGCCAGTGGAGCGAAGAAATTATCGCAAGACCGACCCTGTGCCGGCAGATGGACGTGTTAAACATGGTACATTGAGCAGTCCGACTCGTTGTATAGTTACCACGTGTGAGAAGACTTAGCTCGCAGCTAGTGGACAAGAACTCGGCCGAAGTTTCGTTCCTGTATTGCGCGTGTCCAGGATGTGAACAGTCCAACTTCATTATTTTATTCTGACTTGACACTGGACGTAAGTCAGCTGCTCAGAAACCGGAGTTCCCTGCCTTGGCCTGGGGGCCCCATTTGCGGATGAGCCCACAGGTCTCGTAGACTTAGGTGACGCCGGGATCTGCTGGCCTTATGTCCCTAGAAGCTTGGATGACCGGCCCACGGCAATGCGTAGTCAGGGAGGTATCCATGACGTGCGTGAGTCGGGCGAAGAGGGCCCCACATGCACCTAGAATAGCTATGTGTGTTTCTCGGGCGGAGCCCGACGTCGTCCCGCTCATATCCAAGTGCTTTTTCCGGGGGTTAAGCGGTGGCTTGGGCACAAACGGTCGCCTCCGCCCGCTTGGTCTCTCAGGTATTTCCGGGGGCACTCATAAACTACGAACGCGATCTCCGATAGCCTTCAGTTGTGGGGATGCGGCTAAATCCAAGCAATTGCGACGCTTTGGGTGTGGTGGGGGTTACTGATCCGGACTGCAAATTACTAACTCCGTCACCTATCAACACGTCTCCCTAATCTGTTGGAACCTCGCTCTATGACATCAGAATGCGAGCGCGGACATGGGACATGTCGGGACAATCTATTCTGCCTCTCCGGTACTGGGTACGATAAGCGCGACACAAGATTGTGCTCTTACTTCGCCGTGTTACCGGGTAAATCGCCGGGATGCTACTCTTATATGTGCCTTCTCACCTGAAGCCTTGCGACCTCGAATGATTTGGGTGTGAGTAAGCACCCGGGATCGAAGCTGGTAAGCACGTCACCATGTTAGAGATACTTGACCGACGATGCCCTTCTACGGCTCGGTTCACGGTGCCCAGCGGGATCCTCTTATCCCAGCCGGTGCCTAGCCGATAAAAGCTCACAAGCTTAAGGCTCTGTCAGGGGAGATGTGGGAGAGGCTCGATGAGAAGTCCTAACGACACCAGAACCCCAATTAGCACACATGGCTCTTCCGGGGACTTGGCTCTCGTAACTGCCTGCAATGTACTACGTCGCATGCTCATGTACCAGACATTATGTCCGTCCTTAACAGTCGTATTGGAGCAAGTTGTGAGTACAAACAGTACACAAGCTGTAGGTCACTCCCCCCACGTCTACCCTATATACTATAAGTCCTTGTAGCCAGGATGAGTAGGCCCCGTGTACCTTATTTGAATGCGCACCCGTGACTTCTGGTGGAGAACTTGGTCACGTCGGGTGGACCGTGTACGATACCCCACAGTGCCCCAGGAGGTATGGAACGATGCTGCCCTGAAAGGTGGAAGGCCGGAGTTTTTGTAGTTACAAACAGTACTCAGCGCTATCAGCAAGTGGACACGGAGAAGTAATTGAATGACCGCCTAGCAGTGCTCCGCCTCCGGGCGGCAGCCCGCGTGCCTCAGTCAGAGATCTCGAGCACGCACCCTTGCTGCTTCCGACTAATGGGAAGAAGTGGAGATGGCGACCCCCACGCGTTATAGTCCCAAGGTTGCTTCCAGGAGCTATACCCGAACCTTTAGGTCTAGACTTGTCGAGTTTGCGACCGTACTCGCTTTGTATGTCGACTTTTTTGAAAAGACAACCGTGGCCCGGTCACTGTGTCTCCAGTTTGGCGAGCCGTAGTCAGTGATCGCGCTGCTCGGGATCAATTATCTCCAACGGTCAGCAGATCTACGGAGTCGGTGGCCGGTATAATGCTGGAGGCCGGTGTATGCAGGAACCTAATAGTCCCCGAGTGTCGATCTGTACGGGAGTCACTAAGATAAGGCAGAACTGACTATCTCTCCACCGCTACGTAGTCCAGTGCCAAGGTGTGGTCATGGCCCACATAAATCAAGGATTTGTATGCTAGAATTACGCGATCGAGTGACACTCAGAGTGCACTGGCTAAGGACTCTAGCTTTGTAAAGACAGCATTACATCAACACTCGTTGCATTCCTAGACTGCGGTTCCTTCGGGATCTCCCCTTGGTACTTCCTATATTTCCTGAGATGTGGGCGCAAACAAATGCCAGATCCCGCCTGTAGGCATTCGGGACGGGTACTACGCGATGACCATATCGAGATTGAATCTTACGTATCTCCCTACAAGTGTGGCTTAAGGGGTTAGCACCGACAACTCATATAAAAACCAAGTAAAGAGAGTAAACACAGTGCGGAGTAGCCGTACTTGCGAAGCGCCATTTGGGCGCGACCTTCCGAATTTGCATCCGACGTCGGTCGTATAGCAAAGAGCGATTCTGAGCCTCCAGTCGCGGCCACGTCGCCGCTTGGCCAATGTATACCAGTTGTGAATAGGTCGCGGAACGCTAATGGAAGTAACCCCTCCTATTACCAACACGCCTCAATCGTACCACCGGTACCCACGGCATATAGAGACTATACGGCGTCGCGGCGGGCCTCCTCATGCTCGTATGGACTACACACCATGTCCTAATAACCTTGGTAACATTACGCCTTTGAGGGGTTCTTTATCTCCGATTTCGCGGTAGATAAGGCCACATGACATTTTCCGTTCGAGCGGACACGTGTCGCCTCAGTAGCCTATTGCCGTCGCCCAACCTACGCCACTGGCTCATGCCATGCCATCTCATACAATTAACTCCCGACGTTCGTACCAGGTGTACCAGGGGGTCCATACTAAGAGAGTGTGACCTCCAGATTCTAAAATACTATGTGAGGAAGTCATGATTTCCTCTAGTCATTGTGGCACCGCTCGTACCGTGAATCATATCAGATAAGAACGATCAGTTTGCGACTGTTATTCCGAGGGTACAGTCTTTAAGACACCATTCGGAAACGAAAAGGGACTAATGGATGCCGCGAAAAACCTAAAAAGGAAACAAGCTATCGATCTGTGGCGCCAAGGAGGGCGGGGCCCCGCATGACTCGTCAACTCCCATAGGCACCGCTCCGGGCCGGTAGCGACCGGAAGGCAATTGCTACCCTATCATATAAATGATCCTGGTCATTAGTTGTGCCCCGTATACTTGAGTCAAGTATTCCGTCGCAGAGACTACTGCTCATCCGAGACAACTTCTTCTCTAAGCGACCCGGGCGGACAAATTCACACGCAGATGGGAATTACACTAGGGGTATACTCACCCGGGCCTAAGGAAGGCACATGAGTGGGGCGGGCTGATTAGCAATTGTATCAAACTAGGGTCAGGCACACATAATGAAGGAGCAAATACATTGCACGGATATAGCCTAGTCGAGTTCGACGCGGAAGAGGTAGGCGAAATAAACTGTGAAAATGGGCAACACCTCACGAATGGTCATGAGTCAATGTAAAATCTTCGCGGCTTACTCGGCCTATTGCTATCGTGACTCCCAGGCCCTCAGTCCACCTCTCGTCAGATACTAGTTCGGGAGGCTCGAGATAATTGACCCTCCCTAATTCAAACTCAAACGAACTCACGTACGGGTAGGGCACCTAATTCGAGATGAAACATGCCTAAACGCCTCGAGAATATGTCTGTTTTGTACATAGTCTGTCGCTTATTCCACCACTTCAATCTGAAAATAGCGGACTAGTCCCGAGGGCCCCGATTTGACAGGTGGTTGAGAAGATCAAGTTGCACGCTAGCACCAGACCCTAACTCGCAACTGCTCTGCCTGATAAAAAACACATGAATCTGCGAACCATAACCTTCTTTGCCATTCTTTGTCTGCGGTTAGCGATGGGGGGTGTAAAACCACCTGCAGCGCGTCCCGATGATAAGCTATATGGGTTCACGTGCAATCCCAGAATCCTTTGGGGGGTGGATCAAATTGAAGCGAACGCAGCGTTGTATCGACGGTGAGCCCGCACATTTGAACTCGTTCCTCGGGTTCTTCGATGAATGTGGACTACGCTAGTTGACAATGCCTGCAAGTCTCCTCTCTCCCCCACGTGTAATATTGTACATAGTCAAGAAAGCTACATGCACGCCGACGTATCTTCTGTGCTTATGGATCGTTATAAAATTTTGTACTTACAGTGAAAATATGAAGGATGAAGCCTTAGAACTCGCTGCGTGAGAGAGAAACCCACCTATAACAAGACGCACGTGGCGCACATCCGTCCCCAGTGTTCAGCGACAGTTTGTCTAGCCAGTGAATCGGATCAGGCGGTCCTAGAGGTCTAGGCGACTTATGATCTTAGTCAGTAACCCCAGTAATTACCGTGATTACCATTTACAACGGTTAATTGGGTTGGTCTATGGTAACGCACAAATTACTCGTCATACCTGCTTAACATGCCTTCGGGAGTTAACGCTGTCGGGCGGGGTCAGCTTACATTACAGTAATCCGGCAAAAGACAAACCAATGCATCTCAAGAACCAACATAATAAAAAGCCTTATCAAATCTGGATCACAACTAAACGTATCACAGTAATATGTATCGCGAGTCTAGGAACTTGAGCACCCAATCATCATCCGTGGCGTCTCCGCGGGCTCTGAACGAGAAAACTGGGCACTCCCGGCTACTTTGAAATCAGGAAAAGGTCATCTGTTAAATGTCTGTTCACGATAATAGGCTATTCCACTTCAATACATGAATGACTTAGGATAGATATTCCCCTGGGCACGATGTTCTTATGGAGTGCGGGATTTAGTGGATATTCACGCTTGTATTCAGTCCCCTGTCCCATCACCTTTTTATTTGTCCTCCGCCCGGATTCGTTTCGTGCACGGCCAACGAGGAGCTGTTCATCAAATCTACCGACATTAATAAGTCTGGCCTATATGTCGTCCAACTAGGGACCCCTTTCAGAGTAGGTGGAGCTATCGTAGTCATCAAGTCACAAAATGAGTTCCTTTAAGGTGGCGATGTGTTGGGTGCAGACAGTATAGATAACACTCGGCATGGCTTTAGTCCCTCTATCTCGGATGCGCGCATCACAGATACCGCACAGGGTCCCACCTTACATGTTCGGTTGGGACTGAGTGGAAAAGTTGGACCCTAATGGTTGCTTCCGCGAGAACAGAGACTTGAAGCAGTCAGTCAGGGATTCAGTCCGTCAGATAGGGGTGGAAGTATGGCCGGCGGCCATTTGAAGTCGGCTAGCAGCAAATAAATTGCGTAAATATGTTGGTGTTTGGGACAAGGAGGCACGGATCCAGACGTTACTGAGTCCCCGAAAGCGTTACTCACGGATACACGCCATACGCTCTACTAAGAAGAACCATGCACGGACCATTCGATACAGTCTTTCAAACGCCAATGAACCAGGAGCCGGGGGGATGAAGGTGGGTTGGAGGCATCGGAGTGGTTGGGAACTGGTAAACGAGAAGGCCTAAGAGTACTCCCAACGCGGTGGGTAGTATGTAGGTTGGTTTAAGTCGCGTTATCTGGAGCCCGATACAGAAGACCATCAGCTAAGAGTGGTCGTAAGACAACAGATAATCCAGGCATACTAACACCGTTTTATTAACACCTAACCCGTGCGCGGGCAATGATCTGTGATTTCGGCGGAACCCTTTAGCAATCACTCGAATGCTCCCCTCAAATTTGAAAGGCATGACCTCCGTTGTACGCCCTGGATTTCTTAGGGATCGATTAAATTGGAGGCGAATCGTGTGTCTGATCTATTGGCCAATTTGATAAATCGGGACAGAAAACCCTGGGCAGCTGTATCCCGGCCAACTTGACTTTCACCTTTATGCTATCAGAAAAATCGGTGAAACTGAAAGTCTCTGAAGTTCTCTGCAGTCATGCGGGTACACGAATGTGAATATGAGCTGTCGCGAGTTAATAGGACAGGCAGAAGCGCAGGTTGCGTCCTAACAGGAATACTCTTAAAGTAGGTGCGAATCGAGCAACGTCATCGCGTCAAGCGCGACCGCTTCAGTTGGTTGGAGGCTGTCGGCAGGTTCATCTTGCCAAATCGAACTAGCAGTGGCTTCGTTACGGGCCAATACCACCTCGAGGAACCCGGGTAATGAGGTACAGCTTACACAGGCAACCTGACAGAATGGATGTTTGACCTTCTATGCTGTACGTGTTAGCCCAACACAATTAGCAAGATTGCACCGGCGCTAACAATGTTAATGAGGTGTACTAAAGAGGTCGTACAGACAGGTCATGGGGGTAGGCGTATTTTCGCGCAGAACACGGGTCTATCCCATGAACGTACAGGCAAAATATTCGTTCTAGGAGCTGTGGGTCGGTTCCGTGGAGAAAAGTCGCAAGGCTATGTAAGCATTCATGCCTAATCCTCGCAAAAAGTGTGTGGGATTAGAAGCGTGTCTGAGCAGATGTGGTGCGGGATCGAAATAAGTAGGTAACTACCACAGCACACTATTCCAAGCAATAGTTCGAAAAAGGAAGACAAACCGATTCGGTTAAACTTGTGGCGGTCCTTTATTGCGCTAGCGTGCACATACTTATAACCGTTCCTTGCTAGATGCCAATACACGATATTGGCACATCAGGTGCTTTCACCCGAGACAAACGGCCTCTGCTAGCAATCCCGGGTCGGTAAAAATAGAAGACGAGAGGACGGCGATCATATCGTGCGAATAGTATCAGGCTTCATATGGGCAGTTCGCCTCGAGGACTACCCTCGTCGAAAAGCTTTACCGGAAGATGCCAAACCCGGGCAGCGGCACCAGGCTGTTACCCGTACTCCTAATAGCTCGGCTAAAACACGGAGAATGAAATACCTGTACCAAACGCACGTTGAGCTTCATCCACCTCTGGCGTGTGTACTATCCTATAGCGGATTTCGCCGGAGTTGCCTTTTCTCCTTGAGTGTTGATGCTGCCTTCTAACAAGCGCCTTTGCACCCAACATCGACATTTAAACTTTATTATGGGGTTGGTCCTGCTCCGTGCAACTGTCCTCTCTGTCACCACTATATTAAACATAGTCTGACCTAATGCAAGTTAGTAAGGAACAAGAGCAGCCTCATAAAGACTTGGCGACGCGTTGAGACACATATTGGGTACTTTAGGGATAATAAGTGTGAGGTACGAGGTGCGCGGACATTATCTTGATGCCCTTCTTGGAAATGTCGTATTTCAGGCCCCTGGTGCGGAAGAACTTTGGCCGGGTTTACATAGTTTAGATAGTCCTAGGTACATCAAGACGCCAGTATGAGTCCGCGAGCCGGTATGAGTCATATACAAGCCAAAGGGCCGCCTCCAACTTCTGTATCCGTAATTTTCTCCATAGGGCTCTGACCAGTATTGACCCCAAAATGTGGGCTGCAGATCCAAAGAGTTAACGGTACTACCCGAGGGATCAGTCATTCACTACGGTGCGCCTTGGATGGGATCCTACCGTTGAATTCGTAGCCTCCTGCGCTCCGCTAACCCTGACAATATGTGCACTTCGCCTGGACGTATTGACACCTGAAACGAGCACTGAGCGTAAAGCTAGTTGTTATACGTCACTGCACCATGTGGCGGGTTATAGCATCCTCCCATTTAGGTAATGCGAATCTTCACAGACATGACGGGGCATGTGGACTTACCGGTTACTTCGGGAAAACTGGCAGACAAAGGTTGGTTATAACCTACCAGCAAGTCATAATCTGTTTCAGGAATTACGCAGTTCTGCCGCTCATCCTAAAAATCCACCGACCCTCGCACGTGCCGAGTTAATCTACGGAACGCATAAGAGAACGGAAGCCCAACTGGAAGTTGGACAATGCCATGAGCGCCCTCGGACCACCCTCAGAGAGGTAATTTAGGGGAGCTAGGTAATGATCACGCTTTTCAGTGGTCCTGTATCGTGCATAGGGAAACCACTCTGGATAGTGCTTCTAGCGAATCGTCTAAGTACCCCATCCTTATAGCCCTGCCAAAGTGCTGGTAGTAGCTATCCGGATCACCACGTTCGGGGGACGGGGCGTGGCTCGTCCGTATGCTGGCTTCGCCGTAGCGCAGTCCGAAAACTGACAGACATAGTGCATTAGCATTTAAACCACCTCGAATAAGATTTGGGCAGATAATAGCGCCATCGTGTGCACTTGTTGCTCGGTGCCACCTAACCCCGAAGCTCCTAAGGCGCGGGCCTATAATCGTTATCCCCTACGAAATGCAAGTGCGTCCTTGCTAGAATCATTTGACTCTCCAGGGCCGGGAGTGATAGACCTTTTCAGATGTGTACCCAACGATGGGTTCCTACTCACGTAGATACCAGTTCAACCGCATAACCGTGAATTTTGGTCCGTGTCGTGGACGCCCGGAATGATAAGCCTCAACAGATTGCCTGTTTAGCTGGTCGATTGTGCCGATCAAGTTGACGTGCTAGGCCGGCGCTAAGCGTAGAGGAGAAATCTCGCAGCTTCGATACACGCGAGAACTTGGGCGTCACTTACATAGTCGGAGGTGTCATGGTTGAGCCGGTATCTCCGATTGATCACTCGGGACCAAACTCTATCTTCCTTCTAGAATCATCACGCCGACTTGAACACTGTCGTCGTTTATCACTGATAACGCTTATCAGGTTACGTGGAATCGAAGGTTCAAGACGGTCATGGAGCTGTTTTCTATTATTTCACTGTTAGTTCTTGGATACTGGCGAAGGACGCGCCACTTAGACTGTGCAGTCCCCAATTGGCTCGAGATTCCATCGGCGCGTCTACCTGACTCAATGCGTTACAGTCTTGGCCTGGCGCTCCTACCCCTGCGGCCTATAACGAGGTGGCTGTCCCGCGTGCAACACTCGCGAGCAACATGCCAAGACTTAGGTATAATAGCTTAAAGGTGTTCGCTTCTTGGTAGATAATTCTGGATCCGCGTGCCCACCTCCCTGTGCTACGAAGTTCCGTGAACAATGTCTAGATGTATAGCAGTGTGCAAGCCACCAGGTTCTATGGTGAGCAGCAATACAAGCCGTAGGTGACGTTCGGAATGACCCGCAATTTGTCGCGCCCCAGAGTAAAGCGAAGGCTTGACACTCCCGACTAGTAATCCCATGTGTAGGCCCCAGCACTAAAACATCTCGTTCCTCCTCACTTCCTGTGCTCAAGCCGCCTGGGGTCGAGGCGTAAGTACGGTCTTGATTGGTTGATTTTTGGACAATATGATGTCTCTACCAGCAACGCCGCCACCGGTTATGTCAGTCTCTGAGTTATAGCTACAATCTCAAGAATGTCGTGCGGCTCCCGTGGATGGCAGACGAGTCAAGACCAATAACAGACGTGTGGCACCTCTGGTCGTATCGTCACCCCCAATTGATGAAAATGTGGCTAGAGTTCCGAGGAGGACTTGCAAAACGAGTATCATTGATCCAGCCCATTACTCCAGTGTCCAAGCCCGAAACTGTAAGAGGGCCATTGAAATAATACCGGCTAAGGAATGTCTCGGGCGTGCGGGAATCATAAGGATCCCTCAGTTGACGATTGGGCGCCTCTTTTGCGAGCGGCATCCGCTGCATCGAGGTAAATATGTGTTGGGGACACAAGCCGGATTGGCATTGCCGGAACTTATGTGCGGCAATTGCAAAAGTCGAGTACTAGAAGGATGATCAATTGCCGATGCGCCAATTGAAGATGATCGCCTAAATTGGCTTGTTCATCCTTCGCTCCTGTACGAAGAACTCTATCCAACAGTTGATGGTTGGCAGTAGTTCCGCACGAACAACAACGGGATGGAATTCACGGACATGTTGGTGCCTAAACTAGCGCCGGTTTACCGGACGTGTCCGTACTCATTCCCGCCGCGCCAGCCAGAAAGGGTCGATAATTGCAACCTCTCTCGCAGTATCCTTTGGTCGGCAGAACGCCATGGAGCGATCTCCTATCTCTCAAGGTCAGTTTAAGAATTATGAAGTACTTCTCGACGTGTTGAACTTCCGGTCTCGGCCGTTAGGCTCGCTCGATTGAAGTACAACAGAATTCAGTTTAACCTACTACTCGCCCCAGAGTACTTCCTATGAATGGCTGAACTCTGACACCGAGTAGACAAGTGGTGGATATACTCTTTACGGGAGTCACGTATATCGTACTATTATGTTTCAACGGTGCTTGCCATCCACCACAACACCGGTAAGATTATCAACGCTTACTCTCAATATTGCCCGCGAGGAGGTCTTATCCAAGGTGTAACAATAGTAGTCTGTAGCGTTGAGATTAGTCTTAGAAACGGTGAAGGGCGTTCTCGTGCGCTCGATACCGCTCCCCCCCAATCGTGTTCGGCATCACTAGGACATACAGCGGTCGCCAAAGCCTTTCACCGGTATCGCTTCTCGGGACTGATGCTGCAATACACGCGTAGTCGAAGCAAATTTATGGTGCCCAGCATCTGAAGCAACTCCATAACTTTTACCGTCGATAACAGGATTTGGTAGTCCGCTCGGTACTAATGCCGCAAAATGAAGCCCTATAATGAGATATCCTAAGGACGTAGGGCGCCATTGTTGGTTAATTCCCCCTACGGATTGACGGGCCGCGCCGTCGGGCTGGGGTTCGTATGAACCTAGCTCCACGCCAAGACCTGTCCCTTGTCATAGCCAACAGGACACCTTTCATTATGGCGCTACGCATATGCGACTGTTCCCACAGTACAATGATGTGCTTAACCATCGTCGCTCGGCGATAGGGTATCTTTTAACTATCTTAGACTGATAACGTGTGGGCCGATAGTATCTAAGAGCTGTGAGGCTTGTGGACCACTTAAGCTATCGACTCCCATTGGGGCAAGTGATTACCCGGGTGCTATCCACAAGACCGCACTTGTGTCCTTGCGTCGAATTAAGAAAGCTATAGGGACCAGCTGATATTAGGTGCTGAGGAGTGCTACCGGCCTGTTTCACATATATCAGAACGCGTGCCCTGAACTAAGACTCAGCCAATCAATACTGCGTTGTGGGTGAGGCAAGTATTCTGTCCGGGGATGCTGTGGGGGACAGTATTGATCTATCATACTAACCATAGTCGACATCTCAGGTTTTCGAGCGCTGACGGTACAGACAAATTTAGGGCGCTACGAGAACAGCATGTCGCTTGAACCGACTCAGGCGCCGTAATTAAAGGGAGTGTGCCATGAACTCGAACGCACTCCGTATCAACGCAGAAACCGCCTTACAACACTGAGCGGCGTAAGAATACTCACTCGATATTGATTACCGTAAGGCTATATTTGTATGGGAAGCAAACGAATGACATTTCCTGGATATACAACAGTTAGCTGAAGGCATATGTGATCTGCCAGATTCCAGAAGCTGATGGGGGATCAGGATGAACCTTGTCAAGGATTCGTATCTGCGCTATACAGGGAGAACTGTGCGATTGTTGAGGCTACGCCGCGTAGCCGAGCCGTTGGAATAAGCAGCCCCGTATGTGGACATTGGTAGGAGCATATTCAACGGGCCACTAAAGGTCGCAATTGCCTACATCAGATGAAAGGTTGTTACCGGGCTAATATCATATAGAGCCCTCTAATATCCACCTGTTGTATGAATACTGTCGCAGTTTCATCACGGTTGCCCCTAAAACACTGACAATTAGGTAGCGGTATCGTTTCTCATCTACTCAAGGCGTATCTTGGGTCGCAGGGGCACGCCGTGGTTGCTCGCCAGTTACTTACTGACGGTACCTCTCATTCTTTGCAATGCGGGTACTTGTGTCGTTGAAAGTAGTGGTACTCGCACCAACTCAATCTATCGCCGCTGCGAGACAGTCCCCGAAAGCCTCCGCAGGAGCAGCGCTACCTCATATCCTGCACGATTAGAATTAACTGCCTCTCTAGAAACGAGTCTTACTAGTAGTTGACCTTGATTCTACGGCCACTCGCATCGCGATGATTGAGAGAGTTCCCCCACTCACGAATTAGGAATCATGTTGTAACAGCGGTCCCACTTGAAGGTGAGTCTCCATACAACGAGTACATACTTGAGCAAGCAACTAGATTATCAAGAACACGCATTTGTCCTAGCCTGAACCACTTTTGGTCTCACATAAGACAGCGGGAGAAGCGATTCGGGCGACGAGGCTGTTAAGTCGCACGGGTTGCTATTCATATAACACCTCGCCGTCGTGTTAATGATGTTTATGAGCCCTGGCGGTATGCAGAGCTAATTGGTTTGCATGGGTGAGGTAACTTGATTCCGTGTTTGGTAACGAGCGGCGGTCTACACCTAGTCTCGGCCATTGGAGACTGTTCGCGGGGGTAAAAAATCAATTATACAGACACTCTAGCCTGATATTGCCCAATTTGAAAGAGTTCAACCTTTCGCAGTTTAGTGAAAACTGAGCGGTTTGTGAATATTACCGGCCTTATATATCAAATGGTCCGGTACCAAGCCTAGACATGTTCGGACTTTGTTCCGTTAAAACCGAAGATTACGCATTTCACGACTCTAATTTTTAGAGACTGCTAGACAGGATATCAGCCACGGTGCGTCCTTCCTGTATCGCTACGTACTTGCTCCTCGCCTTCTATATAACGGTACTGGCGAATTCGACAATACCCTAATAGGAGCTGCGACTCTCTAGACGACCAGCATGCAGCTTATTTAAGTCACACAGATCGTAAGAGAGCCTCGCAATGCTCAGGATATCGGCTGCCCTAGAGGATTAGCGGGAGTTGGCTGGCGCTATTGAATGTGTCAGCAATGGCAGCTCCAGGATCGTCCAAGGAGCCGCTGGCCCGTCCCATATGGTCTTCGTATCAGTACTGATCAAAAGGCGCAGCGTGAATACGTTTTCCTCCATAACATCCAGTCAGTAGCTGATAACGTTCTCACCCACTGACTTCCAACAGGGGCGATGGACCTCCAGGCGAGCCATGGAGTTCGACCCCCTTGAGGTATAGTGTAGGAACGGGATAGGGATTAAAAGCGTTGTGGTTTACTCTAAGCAGGCTAAGAGGCATAATGTCAGCCCATCAGCGCGCGGTTAGACCTAGCCGATTGGCGCGTACCAGGAAGCCGTCCGTCAATTTACAATTGGTCGTAGTCGGGATACCATCTTGAAATGCGTAGTCCGTCGCGCTTCGGGGCGGGCTTGAAGTGATCATGTGCACCCTTTAAAGCCATAGCCATACAACGTACCTCGGCTGAGTAGGTTCATTCTCTTGGAAAAATACCGCTAAGATAGAGACACCTAAAGTAGGCTTCTTAATAGGGCATGTGTTTCCGCCTAGCGTTGACAGCATGTGATTAACCACTTGACCATCTGTCACGCGTCATGCTGAAGCTTACCCTTGATACACGGGCCGTTATCCAGACGCCTGGAAACTCGAATTCATCAAAATTCCTCCATTTCTCTGGCCCGACAATCCACTGTAGAGTGGGATCGGTGTAATACCCTGAGTTTTCTAAACGGCGACACCGATGCTATTTAGTATGCCACGCGCTTCGTACTGTTGAAAAGCAATTGGAACTGGATGTCTATCCCGTACTTTTAAGTCGTAGATCCGCATCATCCATGCTAATCGTCGTCATTAACCAATCACAGTCTTGCAAAACTCACACTGGCTGATTCTGTCCAGCGTTACCGCGGTCCTGTCCGATTAAGAGCTCTCTCTGCCTATTTTCAGTTCCCTCCAGGCGTAAGGGACTTGATGTACACGCTCGACGAGTGCGGCTCTCTGTGACTAGAAGTCACTCGGGCTAAAGACGACTAGAGGTTTTTTCTGCGATCTAATATTAACCATACCCTACACAAACGCCCACCGGTTTTTATCACAACCACAGTAGCGGAGACGTAAATCGTTGTGCACAGAAAGTTAGGTAAGTTATCAAAGGGCAAAAGAATTACAGGCCATATTCTTTCAGTGTGACCTTCGAGTGCGGATTAAGTCCGCGGCAAAAGCCTAGGGACGACATCTTAGTAGGCTATCTCCACCCAGTATCTGGCGCGACGTCAGGTGTCAGTACCATGCTCTTATGCCCCCCTTTAGGTCCACCTAAACCTCGAGGTCAGCGATTGACCCATGTAGATACTGGTAGACGTCGGTGCCACTATGATCGGTTTTGTCGTAATTCACGAGCATTTGTCATACTGTTAAAAACAAACTTTGACGACAGTTTGGTGCTAATTTGAGAACCCACGTGGGGCCTGCCGCCGGATGTACGGTATGATCTCACCGGGTCTCCATGATACCCCCATCAGCCTCATGTTCTGGCCCGTCCTCAGAAGCGAGCCCTCAGTCCTTTCTTAATCTCCAGTTACTTATCAGGGAGTCCAGAAGCTCCGGGTCTTCCAAATCCTCCGCGATGTCTTAGTCGACCCTAGGGACACCTAGAGGATAGTCGCATTTGTAGTGTAGCTGTCCGAGAGCAGAACGCTGCGGCAGGCGGACATTGAAGTTACGGCTATGTTATCAGTCATCCTCGGCTTATAAGAGGCTTTGGGAAAGTTGGGTTAGTGGCCCAAACGATGATATGCACCAACCAAACTCTTTCACAGCAATCCCGCAGAATAATTGCGGCGCGGACGGGCGATGGGCCAGCTGCTAGGGTAGCGACAAAAGGACCACCAGCTTCTGTCTGAAGACAGGGGCCACCAAACCACCCTTGTCCAACTCGTATGCCCGAACAAGAATCGAGATCGAATTGTCACTTATCATCCCGTACACAGTAGGTCCCGTCTACGTATTCCATGCGTTGCCGCAGGATTTACACCAAGTTTGGTCGCCGGTCCTCACTCGCTAACTACAGCTGTGTAAAGCGCGGGCGAGGGCGATGGATACGTACCCGAGGTTATCAGGCTGAATTGCTGGTGAACACTTAGGTACGACTCATACGCGGGAACCCGGCAGAACTGTACATTCGCGGTTTTTGTCCTCTAGCTATTTCCAAGAGCTGATCACGAGAAGTCTCTCCACGCACATCGCTGAAGCGAGACCCTCGCCAAGTGTTACTTATAGACTTCTATGCGGCGCCGCAGTTTATACAAGTCCTCGCTCATTTTAGTTCGTGCCTACACTGTCACTCCTACGGTACGCCACGGCGCGTGGTGATGAAAAGGTTTCAAGTTCGTATGCGAAAATACAGGCCATTTAACACGGACTCCGCGTCCGGGCGGGGCCGTAACGTTGCCCGTACCCGGACAGTTCCATTGTGAAGCACTACAGCTTCAATGTTACCAGTGTAACGCCAGCATCAAGAGTTGCAATGGTCTAAGCGTCACCTGAATTTGCTATATCCTGACGAGACAGGCGTGCCCCATCGGAATGGCAGAGGTAATAGGCAGCATCCCCGCGGATCTTCATCTGCCGTCAACAGCGCCGGATTTGTAGGCGGGGCGATAAGCACTCGGGGGTCATCGTTTAACCACCAAATGGGCAGTACAGGTGTTCTCCTGTCGGGCCGTGTAGTTAGTCCGACAGGTGAAACAATCTGTCAACGAATTGGCGCCTACTTGGTCCGCCAAGTGAGATCTTGAAATTACAAGTCTTTCCGGCGCAATCAGGCCACGATACTGGGGCAACACCCCGTTGGGACGACTGGTAGAAGCTGGACTCCGGGACGGGGCACAAGGCGGTGGCGGCATTGAACAAGCACGCACGCTCCTCCCTATACCTACGACAACTTAATCTTGTACCAGACAACCTAGGAACCCTCACTTGACTGCTCAAGCCGAAGGGAACAACCCCCTCCTTGGACAAAGCTTACTGCCAAGGCTTGGTACGTTCGCGTGTCCGTTCTGTATCGGGACCTGAATTGCGTGTGCAAGCGTCATTCGCCATGGCCACTACGGCCTGGTCGGGCACCCAGTGTGATAGTCTTTCATGCGAATGGCCCAGTGCTATCTTGTTCGCAACGTTCTGTAGATAGAAGGCCGTGGAAACTGCGACTATCCGCCGCACAACCTTCACGGGCCCCGCCTCTCTATGGAATACGTGTCTCATGTGCGATATGAAGGTTGCCCTCCATAAAGCAGATAGTGCTGATGTGCACTACTTGGTACTTTGAAACGTATTAGTCTCACCTGCTGATGATTCCTTTAAAGCGGTGCAAACAGCCTTCGGCAACCGGCCACTTAGGCTCGACGGACACCATGCCTTTCTGACTTACAAAATGACCACGCCCCTACGACAGCTGTCGTTACCAGGCATGCCTTAGCTGTCAATGGCCTCATCCTGCCTCCTAAGGGGGTATGTTCTCCTAGTAGCCATGTCATAAAACCCCTGCGCGAACCGGGTTATCTACGAACAGTACGAACCCGGCGCGTTTTGGCTAAAGTGGGGTTTATTCAGGGAGCCCGACATACCACAACAGTAACAATAACACACTAGCCGTTAGCAGGGTCGACGTGCTCCCGTTCGCGGAATTCTGGCTGAACGTAAATACGCACCTGAGCGAATTTTCCACGAACACTTTTACATTTAACCTCGCAAGAACCCTCCCCATTAACGAGCTGAAACGCTTATAAGAGAGACGTAATGGATCAGAGACCATCTCCTCCGAGAAAAGTCTGGGTGAATCTACGATGGGTATCTGGAACCATGCTCCCTCTTCCGGAGGACAAGCCCTTAATATGGAATCCAGACTAAAGCCATAGCGATAGCAGCTTAAAACTAAGGCACGTCGTCCAGCCAATTCGGCCGATTCCGTTTGGAACAAATAGCTGTCTGTCGCAAACACGACCCTGGGAAATGATCCAGTTCTACCGCACCAGAAGCGACCCACCCCGTATTCGCGTGGTGTTCCTTCAAAAACGCCCCCTTGGGACTCAAGACGTCGAACTTCTTTACCCCAACCGTTGCGGGGTGTGTGAGAAACCGCAGACTTGAGAGCCCGAGTATCTAATGCAATCTTCTCGGGTAACAAGTGTGTGTACATCGTGACAAGTCCTTGGGGTCTGCAACAGTATGTCCGACCAATTGACCGACCGCAGCATAGTCACAGTCGGAACTTTCGGAGTAAATCCAGGAGGGACGCCTATAAACTGTTCATAGGTGTCAAAACGGGCAAGGAACCAGAGAATGATTCAGTGCATTCGAAGAGTGGACGCGGTAACGACGTATAAATTTCGCGCTTCCAAGTAACACCGGACCGCGATGTGTGTCGCATACCGAGTTCTATGACGATGCTCAGAACCTTTGTCCACTAGCTTGCAGTTGCTCGACCCTAAGCGTTGATCCGATCTGTGTACAGAGAATCCACTTCTTATCTCCGTTGGCCATTAAAGCGTTTGTGTCCAGATCGGACTTGGTGTGTATGTAAGGCCTGATACCGCACAATAGGAAATATATCGGCTAAATTAAATTGGCTCGGGATAGCCGATCTCGAATACGTCCATTACTGAAGCAATTGGTTACGCGCGAGCCCCCGATATTGACTTTGATAGTATGTCCAAACGAGTACAAACTCGTTGCACTTAAGTTCGACTTGCTATGAAACATAGCCGTAGGAGGATTTAACCGAGCCACAGGCGGCTCCCTCTATCTTAGCGGATCGAAGTAATATTCTGTTGTCATGGCTTTAATTGGGAAATGGCTGCCGAAATTTGGCGAAAGATAACAAGTTAATAAGGACAATTCCTACTTACCAAGGGTACTGTTTCGCAGCGGCCGGTACCCCTTCGAGACTCTGTTGATTTTCCGTGTACACAGGCAAAATGCATTGTATATCCCGGATTGCTTGCTGCTCATTAGGACTTTACGACATTAAAAGCAGACCAATTTGACCCTGCTAACCATTAATCAAGGTAAGCTGCTCTTTCACGGAGAAAGCGCGTGTCTGACTGAGTATATCTAATAGAGTTAGCGTACAGTAGTGATTGGCATGCCATCGAGAGGCGACGTCCGTAGTCAACCTACACCGTTAGAGAACCCTTGTCCGTTGCGCTTCTTAATCTTTTGTCGAAGAGGAAGTACATGAAACAATCAGATTAGTCATTATGATACACATCGGTTGGGACACATAATCTTTGCGCTGCAATACCCTACAGTGGCTGAAAGAGTGGCGTTGCACGCGGACTAGGATTACAGCGTATGCCCAGGTTCTTCGTACGTTCCTATGGGGCTGTAACTTAGTATCAGACAAGCTTGCAGACCCGCGCCCGGGCACCGTGCTATCTGAGTGCATGCCGTCGGCGTAAATCGTGCAGTGATTCTCCTCCGCCAACGGCCCTGAACAGGGTTCGGTGCTACTACTGTGGCAGGGGGGCGGGGTGTATGTTACCACAGAAACTCCTCACGCGGCAGGGTTGACGGCCAGTATACGCTATGAAAGCCAACAATTGGAGTATGAATCCCTCACGAGGCTTAGCGATGCAGAAGCTCGCCTGTAGACTAGTCTTACTAAGTGAAGAAACGGCGGACGAAATCGAACGTGGGTTATGCTTCGATAGTCAACCATGAGTGCATTCAGTAGAAGGTCGGAGAATCCACTAGTGTGCGGAATTATGGGTTCCATCTAAGGCGAGAAGGGTCCGGGTTAAGTCCAGCTTCTACACTCAGCAGGCAAACATACGTGGCCAGGCTCCTTTTAATCCCCGGAACAACCCACTCCGGGGGGTGATCCCGAAAGATAGATTTATGTTGAACAGGCAGTAGCGATTAAGGCAGCGGGAGTGGACATATATAGCAGCAAATTGTCTCCCTCGGGCCTTAGCTCTAGCTCCGGATAACATAACATACCTGTGCATTTGGCAGCAATGATGATCTTGTGCTAGGTTGACACTGGTTGGCGGACAACGCCCAGTAATGGGACTAGCCTGTGGCAGTTTGAGTTTATGCGTGAGCACAGAAGCGCGCCCGTCTTAGGTTGCTTCACACGGCCGATGTCACGGCAAATTGGTTTCCAGGGAGAGATTGACGTGTCTTGAGTCTACGCTCCGCGTTAAATACACCCCCCCTGACCACGTTATTGTGCGTTTAGACCTATTCAGTTCAAGGCGTATGGGAAGACAGCCCGGTAACGTCGCGGTCGATGTCGAGATCCGCTGCGCCCGTTCATAGACGACAGCATGAGAATCGACGGTCTTGAACGTTAACAGATCTCAAAGTCGTTAGCATAAAGCTCCTAGACCAGTCCGTATTGCCGAATGTCCTTAGACTGATAGGCTATGGCTGCAGACTCACGCATCAGCCCGGCGGGGCTTCAGCGATCTAAAGCTCGCTCCGAAGAAGCTCGGGATACTCATGAAGGGAACTTGAAGAGTTATATCGAGCACGGAGAGACCACACATAGCCCTCTATAGATTTGTAAAATTAATGGGATTGTCATACATGCCAATGGTATGGGCTAGAGGCGCCTGTCAGTCAAGGAGATAATTCGTACTCCCTTACTTCAGGGTAGATCATGACAGTTCAGGTGAGGTCATCTAAGGAAGGTCGCTCGGCTGTAGGGGTCTCGTACTATTAGCCCACCTCAGCCCATCCGCCTTCACTCACATATTGTCCCCCTGGCCTAATGGAATGGAAGGTGATCACTCTGGTCGGGTACTACCACCATATAAACACTGTCGCTGTAATTGTGTTCACTAAATACGCAGTCGAACGTCCCCAGTCCACGTCCGGGTGATGCCGCGCTCCCAAGTGGAAGGTATCGATTTAGGAACCATCGATGCTAAAGACTGTATCCTCGTACGCAAGCTACCGGGAGACACCTCCGGGAGCAGTGTCGGTACGCTTGTATAACATCCTGACAAACGCGTTAGTTGAACATTAGGCGTGGTTCGCAAGGTCGGCACTCGCTGAGACAGTGTAAAGTTTGGCGGCTCGTTACCATGAGGCCTTTTCTTCTTGGGAGGTGTTAACCCAGGGCGTGTGCGTATACGCCATAGGACTTACTAAGTTGTGGACACCCGCCCGCCTTTTTAGTTTTAATAATGCCCGGCACCTTTGCTTATGCGATTGCAACATCGCTGCAATAAGCTCGCTGGACGTATCAGGCCGGAGAGATGCTATCGCGAAAGGATTCTTCCCTCGCAGCGCGTTCGCATTCTCATTTCGATAGAGCTCGATTAAATCACGGAACGCTATGGAACAAGTGTGCGGGACCGAGAGCAAAACGCACGTGTTAGCACCTTGACCTAAGAATTGGGGATAAGGATAGCCGAATGAATGCACTTAGATGCGTTTCGCCGCCTGCTACCACATGAGCTGAGACAATTAAGCGCAGAGATCATTGGTGCTGTCAGTGCAATACCTATGTGGGCCGCCTTACACTAATTAGACATCCGCAGCCGCCCATTTGCGGCACGAAGGGAAATCCGTTAAACACGGGCCGTCCGAAGTCCACAAGCACAGGTCCGTGACCCGTGATGGTTCTGTTTTAAGCCATCTTTTGGCGTTCTGTCGATGAAATGCTGAGGTTAAGTGCGCGAAGTTGCTTTCCGACGAGACTGCTCCCTGCCGGCGGGTACGCGTACAGACCCTGCGGTCCGCGGGCGTGATCTAGATTACAATCGACTTCCACGGCTATCATCCGCTCGTTTGCCATGGAGTCGTGACAACCAGTCTAATTGGGCTATATCCCCTGCGCGAGTACTCCGCGGCCATAGGTATGCGTTACAGCGTTCCGGAGCAAAGCGTGCACTAGTATCTTCATCCATGAGGTAGACGATAGGGGTGGGATCGACTCCGATGCTAATGTCTAAAGTCCCCACGCATCTATGTCCCATAACACATGACCTACAGACCTTCTGTTGTTAAGATGGTGTTTGTCCGATGAATCGTAAAGACTAGCTGACTGTACGCAAAACTAGGTAGTTTGCTATCTGACCATGGGGTTTGTCTCTGTCGCTTTCGAGGGAATAATTAAAATCCGGGATGCGGGTTTCAGGCCCACGTAAGGCATCCGACTATCTACCAGCATACACGAAATTCTAATGAGTTCAGATGCCGTCTAAACAGCTGATAGTGACTGCCATCCTAGAGGACTCGCTCTCTTCTTACCCATGAGGTACTGCGTCGGAGTTTACTGACCACCCCCGATCCAGCTAGAGCGATGAAAATTAAGTTTTACGGACCATAGATGGGGTGTATACATTTACAGCAAACAATCGCCCTTGCTCCTAGAGTTACATACACGCCTCTACGACCTGCCAGCCAGATCTCGTTATCGCCCAAGGCAAAACTTACCGCAACGCGAGGCGCCTTTGGGACGGCTGCCTCATATAGCCGCCATACACATGACTACCCAGCGACGTTTGTAGAAGCAATGGGCGAAGAAGGACGATTCGAACACTATCAGGGGTGCTTCAGTTTACCTGGAAACGACTTTCTCTGCGATCCTATTCACGTCCTAAAGCATCTCCGCTAACTCGACGTTGAGATGAGCCATTGGGCTGGAACAACAGTCAGCCCCTAATGAGGCTACCTCGACCAGTTTTGGTTGCAAAAATCCGCCCCCGGCTCTCCTTACAATTTGCGGTCGCTTAGAGACATCATTATTCACGGTCGCCAGGATACTATCCGTACGAGACCTATGCGTAGATTTAAGACCCGGCATTCGTTTTTCCGGTGTATAATGATTCAGTTATTACCATCCACATCTAACATCAAGAAAACCAGCAGGCGTGATCATGCTTTAGGTGGGTCCAGAGGATGACGACAGGCTCTTGCTTATATCCGTTCACTACTGAGGTCCCGGGGACCCACATAAGGAGCATTGGGCAAAATACGATTGCAGAAGGCCGCAGCTGTGCTACCAATTCTTGCCTTCCGTGTTTCCCTATCACTAAGACACCGCAAAGTCCATCAGGTCGAGTCATCCCCAGCCGGCAAGCAGATTCAGGTAACTACACAACCTCACTGAGCAGCGACGGCTTATAAAAGTGCGTTTGTTAACTTAGGTCTTTAGCTATAACACGTGGCTGATCACACTCATTCATGTATCATCGGCGCTAATGCGGCAAGTGGGAAGACATCTAACCGAGGGTAAGAGTTCTATCTTAGATCCGGTATCGTCAATACTGACGCGAAGTTGCGGACCATTGGAGTGCGCGCCCTCTGGCTGTTTGGGGTATTTCATCTCTGAACATTTAAACATGTAAGAGGTTGAACGATCATGACTCCAACCACCTTCGCCCAATTCGAACAAGTTGACGGCTGTGTGAGACCCGCTCATAATACCAATAAAGAAGGTCACAAAGCTTAGTGCACGTTTGATGTGAGCCCAGCCCGCTAGAGGCCTGCTAAAACCTGCAGCTGACAGGGGCGCCAAGACGCGAATCTGTTGTATTACAAATCAAAGAAACCGACACATTTTAGACTACGAGCCAATTACGATATCGGGCCCCCTTCCCGCCGAAGAGTTTGTCAGTCACATAATGATCGTATGTCACCGATACCCCTGGAGGGTCCAAATATAAAGAACAGTCATTTGTAATCTGGGAAGTCACAACATTTATGACAGGAGATAAGGTTATACAGCCTTGTAAGACTCGGATGATAATATTCGCTCTATTGACTGGCAAGTATTGCACTATTTGCGAATTAAGAAACACCCGCGTCCCAGCTCGACATTCCCGAGTGTTCATTCCTGGTCCCATCTTGACCGGGTATGGACTGGGTCCCTCGATGAGCACCTGTTCGCTATCATGTGGGCCGATACATCACACACCCTGATCAGGGGAGTGCCGAATTTGCACCGTCCCTGTGGCATGAAGTCTGGTGCACCGGTTACAGGGATAGCCATTGAATTCAGGGCCTCAATGTAACCAGTAAGAGCAGTGGGAAAATGCTGATGAGTTCGGATGTGGTTGTAGTCGACAGAGTACCGCGCATACTGCTTCTTGAAACGTCCGCGAGGGGATATTCGGCTTGTCGGATTATGGAATGGGATCTCATAAATCTTGAACAACGAAACACTACATGCGTCCCGACCGTGCCAAGTCATCTATTTAGAGTGCGCTTAATATATCGTAAGTAAGTCTGCAACTGTTCCGGCCGTACTTCTTTGTGGTTCCTCACAAGTATGAACCTTGTGCTCTATTCCACCGGAAGCTGGTGACTGCAATCAGAAATCGACCTGTTCTCGTTGACTGCACCGGCTGACGCTTTCATACTCTTATACGGACGAATGAATTTCTAGTTAAAGCCGCGACTTTTTAGGAACAGAGGCACCGGTTGTATCTTCGCCCGGAAATATTGGCAGCTTTTGTTGCGTAGTTATGGCCATACTAATACCGCCTCATTAGTCTATATTGTTTGGGCACATATATCATCACGCGTACCCGCCCAGTACTAACCATCAATGGCCTCTACGAGACAGTAACATTTTAAGACCCTTAGGCGACTCAAGAACTTCTCAGCAGGGTTCTCGCGAGATCATAATCTATTGCGGTTTCGTTAGCCATAGCAGCATCTTGTATTGTTATCATGTCAGGTATGCGCTCTTGTGAGTCTGACGAGTGGTCTTGTTAGTCGTTTCCACCGCTCGATGCGAGTGAGTGCAGACCGCTTCATGTTCTTCGGTTGCTCGGAATGGAATGGGGCACGCAGGCGACAGCCTACCGTCCTGCCTGGCGAGGGAAGATTTCAAAGTCGCTACCCGATCTGGGTTGTTTCTTAGTCGGCATATTGGAGGCGACTCATAGAACGTTACTTCAAACATGGGATTTCATAGTTGTTTTAGAGCCGCAAGTCTTACCACACGATTGCATAACTTGATCGTATTGCGAAGTTTGAGTCCGGGAAAAACAAACCTCTAATGATAACACATGTCTGCCGGACCGCCTTGCAGTTATCACCGATCCGGTTCATAGGGTAGCCAGCTTCGTATGACCTTAGCCGATTACTGTAGAGGCAATTGCAAAGTCAAAGCGAAATTCAGGCGTACCTCAGACATAAACGGGAACCTCGTCAGCAAGATCGGTAGACCTAGGCTACTCACGCAACGCGGTATATGCCCGGTTACTACGCGACCACGTGATGTAACCTGCTGTGTTTTACCTGGATTGCCATCGCTGGCAGATAAGTATACTAGTGATCGTGTATTCAGCATTAGGTTATTTAGAGAGAACCATCCACGTCAGGTTATTGTTGTTAACATCGTGTCGGGCTCCATCAGAGATATCCGATCTACCCTGTCAAACAACGCGAACACGAGACAACTTTTTGCGGCGCCATTTGGCCGCCAGCCGCAGGCCCCCAACGTGGTCTTACCATGAAGGGGAAGCACTTGGACGTGAAAACTGAGGTCGATTTAAGTTTGACATACAGGACTCTACGATGACCGTCGGGTGACCAATAAGGATCTACATCTCTATTCTTCGTAAGCACTGATGGTAGTATTCCAGTAATGGGAAGCTCGCAGCCACTTTGATGCTCGTTTGATAAACCCATATCGACCAAGAGCCGGCGGAGTGGCGGTTTGCTTATCAAATTCATACAGCCTGAATTTGGTTATCAGATGCCTAGCCCCTGAAACTGCAGCTCAAGCCACTGACTACAGAACTGCCCGTTTCGCCGACATCAACCCAATCGAAAGCACGATGAATCTATCGGTAAACTCATCTGTGGATCCAAACAGCATCGTTGGCCAGTACGATTTTTGCATCCCCTAGGACAGGCGGGTCCCTAGTCCGCTTGGGGCCACAGCTTGAAGGATTAGAACAAGTCGTGAGGATAGTGTTCTGTACTTTACTATAAGTATTTCGAAACTATCCATCCGTTGAGTTGACTCACGTTCGCCATGGGTTGAAGATGGACCTTCAATGGTCCAGTGTGCGCAAACAACCAGTAAACGTATTATCGTATCGAGGCAAGCGACTCATCACGAGCGCCTCGTTGGGATCGCAGAAGGGACGTAGCTGGTCACCCCAGCTATTAGGCCTGCATTGACTGCCCGCGTCATAATTCGTGCGACAGTCTATCCCGGTACTCAGCTCTACGTTATGTCTACTAGATACTCGGCTCTTGAACACCTTCCGGGCAGGACCGGAATCCCTGTTCCAGTGCACGATAAGAAGAGTTTTCGCTTCACTGCAATAAGCCGTCGATTACACAGTGAATGTAAAAAGAATGCTGGCCATGAAAGCATTGTACAACCATGCCCAGGAGGGTCTCGGACTCTCTTTCGGACAACCGCACTGGCCTTTAGAGCTGGAGCGCGGGTAAATTTCGAGGGGGTCGACTTTTTCGGGTGATTCCATATAGGCGATGTGAGACACGGAACATAATCTGTCACGATGGATGTGCCCCATGACGACCGTTGACGTACGACAACTCGAATTCAAGGAGAGTAACGAAGCGTCCGATATAAAGTCCCAACGTCTTCCGAGATCAGACCCAACTAGAGGATAATATTGTGCCAATAAAGACAGGCAAGCACTGTGGGGTCGTCAGTTTTGAGCCTAGCGTATCGGCAGAAGCTCGCAAATAAAGTCACTGACGCACATCGGGTAACGTGGTGTCCCACTGGATTTAGCATTGCAAACGGCTCAGAGCGCGGGATATCGGTGTTCTCGACTCCGAATGTATTGAGTGCGCCGAGTCGCCTCGTTATTCCGGCTTGAGTCGCTCTCTTCTGGGATATGAGAGAATGCTTTCAGCCTCTGACATCCGCCGCGCATGAGAGAGAGATGGAGATAATAGGGTGTTGGCATTCGGGAAGGGCGCTCAATGCCTACCTCGTTCCCCTCATGGTTCCCGCCTTAACTTGAGGAAAGATGGCCAGTGTACTCGGACCCCCATGGAAGATTGGTTTCCATAGATTCCAGCAGACCTAAACGCTATCTGTTCTAGCACGTAGGTCGGAAAAATAACGGCCGTAATTGGTTTTTTTCCCAATATTACAGCCCTTCCAGAATTACATATCGTCACCAACTAGGAATACAAAATCGAGCCAGATTCCCAAGCGCTCCCATATCTTTATGGTGCATTGATATAGCCAAACCCTGGTAGAGAAAGGGTGGGCGTACATCGTCAACTCTTCTGAGTAAAGTCTCAATTGAAGTGTCTTACAAAACGATCCGATATCGACTAGCTGTCTCTGTTCCTTCGGTGCCCAATAGACATTGACAAGCTGTGAAATGTTGGTTGCACTAACTTTGGGAAGCTGCTACAAATGGCATAACGATTACGACCGACGGGCTCTATTCCCTTTTGCCCCATCCTACTCTGTTATCTCGCAAATCCCAGATGTGCGACCTCCTAAACAGACAGAGTGGTGTTCCCGCGATCTGCTAGAAGCAGAGTGGTCTGGGTACGACGTACCTTCCTCGCGGAAAGTTAACGGGAGGGTTACCCTCCTGATTAAGCTCCGCGCCCTCCATCACGACTCCGATGGCCCGTTCAAACGACCCACTCGATATAACAGGACTAAGCCACCGCGCAGGGACCGCTTGACCTATCGCCAGCCCGTTGCTGGGGGAGCCTTGCTTTGCAAAATTAAGCCCCGAACCGGACATTTGCGGTCATTGCAAGGGCAGATCTACTCGTAAAGTTTCCCAGTATCGAATAGCTACGAGTAAACGGAAGCATAAACGCATCAGTTATTCCGGGAAGCTCTCTTTAACGTTGCTATCTCGGTATTAAACTCATTTTTGCCTCCGTCACTTGACCCCACCGGAGACAAAAGGAAGCGCGCTCTAGGCGAGGTATCTACTCGTAACCGCATCCACCCGAGCGTGGGTATTTGGCCTTGGTAAGGAATCTATCGATCATCTGACACGCTACTCCGGCTCTAAATAGCTTCGTTACGGGGACTATTCACAAATCACTGGAACCCATCTTTGTAAAATTGGGGGGCTGGGGCCATACTCAGTAACTAGGCGGTTTCGTTATCCACAGTAAGCTAGCTTGCCCCTTCAGTACAAGATTCAGCACTCTATGTCTCATTGCGGGTGCGGTCCTGAATGACTGTATTTCTCCAAAAGTCCTCTGAAGCGTCATCATCGTCAAGCTCCTTATCCTCTCTAATTGTCAATATTCAGATGTTGCGTCCATCGGAGCTCGGTATGGCGTGATAATACCAGAAACGTGTTAAATGAATGCTGACGGAAGCCGTTCGACCATTCCCCGAGAGTGCATGGTCGTGTGGCGACAGATCCTTCATTTACGCTACACTTTTGGCGGTTAGACCTCACCTTCCAGGTGTGTCGTGCGCATCATTCGGCGCAAATGACAGGTTTTGCCGACTTGACGCCCTATCCGTGGCACCCCCCTACCTTCGTGAGCGTTGGCCCTGCGGCACTTCCCCAAACCCTGTACATCGTGGGAGATCAGAGACACTCATAAGTACTAGCGTTGGAAGAACCGGTGTTGGCGGGTGTCAGCTCTCTCTGTATCACATACTCTGAAGTCCTACCAAGAGGGACGCTGCCTACGCTACGCCCAGGTAAAGGCATTGGACTGCTTGTTTTGTTCGGCGTCGCCCATTCACTACATCGTACCCAACGGTCTAAATTGTTGGACCAATTTGTTCCACGGATGGGCGAGCTGCATCACCTCACAGCGGAACCCCTTCATAATTCGCGACCTTCCCGCAAGGTGAGGTATAAGGAAAAAACGGCATCCCGTGCAGTCGCGGACCGCCACTGGACAGGTTCTGAGTACTAGATGGGTGTGGCCGAGAAGATCCGGACTAAAAGTCGCCTCAATCATCCGTTACCAGTTTCTAAGTGTATACGTGAGCGACACATTAGCTCTGGGTTTCACCACCAGTCGAATGCGTCAATTCAAAATTGGCGTCCTCGAACACGCTTTACGAGCGATGCTCATCGCGACACTCCAGTCACTGTTAAAGGTGTTCCGTTAAGGCAAGAGCAGCTCCACATATAACGTCCATGACATGTTGCAAGCCTGCACCATACGTCCTTTTGGAGCCGTAACCTTTTCCGGAAAGAGGATTCAGGTCAGCATTTTAGGTCTCTATTAGTGACATTGCGGATTCGCTCCGTTAACTCAAGGCCATCATTTTGGGCACTCCTCGGAGGGACCTAATTTTACTCCTACTTGCGCGATATCGATTGACAAAAGGAATTGCGTCGTATTTTCCATTGATATAAAGTGTACTTACGGCCCTGACATATCCTCACGGACACGCCAACACCACCCCGCCGTTCACGTGCCCCCCCTCGGGCTACCAACTGCACAAGGGCACCACAGCTTGACATCCATCAGCATGTTTTTTCGACTATTCGGCCGGCACCAAGTTGACACCGCCGACTGACGCGTGGTCAGCCGATCAGAGGCACCAAAACGGGGTCGCATGCCTTAGACGAATAAGGGTGCCATCGATGTTGGGTATTATTACCGAAACATTCGGATTAATAGTTGAAATAAACCTCCTATTCCAGAGTACTTACCCTAGACCTCAAATAAGACCTGCGAGTGGATGGTCTTAACAATCGGGTGGTCGTGGTCCCGGTTTGGGATAGCGAAGGATAGGGCAAGAGGACGTCCAAGTCCAGTAAACTCCAAACAGCACGCTCACTCTAACAGGGCGGTGATAATGGGGTAGTTAGACGAGCACTCATCGAGCAGTACTTGCAACTGTCTTTCTCCAAGCGACGCTTGTCCCAATGGCATCCGTAGACGACGATGTGTCGGTCCGCCGTCAGGGGAATTATTCGTATGATGCCTCGAGTCGGTCTCGGGAACTTTTCTCGGTTTCCGGTTCCTAGGGTTGCATCCCTAGGTCCAATAATCATCTGTCGTGAAGGGGCGAGTCCTTCGGGGAGATGCTAATTTCTATTGGCCCCAACCAATTTTATGAAGTGTCGGGCGGCGATGTAGTAAAATTTATTTCTATACCATGAAGAGTGCTCAAAGACTGATCCAGGTTCTGTCAAGCTTTTTCTACTATCTATGAGACCCTAGCCCACTATGCACTGGATACGATAACGATGCTAAGGACTACGATGATGCGTGCGGGTATTTACGCTTTGTTGGTTACCATAACACCCACAACGGATCTCTTATGGTTCTTTGATACTTTAAGATCCTTACAATATATCAGACATGTCTACAAGCCCATTCGGTGAATTCTTTTCTCTCTGAAGAGGGTTTTGGCGTTCAACCGGGTATGCTGAAAAGCGACTAAAGTTAGCGCGAGAAACATTATAACACAAGCTCGCTGTCTTAGCAGGTCGGGCTATGCCCAGGAGGGGAACGATGATGGACACGTGTACTTGTGCGACCGGTCATGGACATATCTCTCCGTTGGAGCGTCCGTTCCCAAATGGAGAGAGACTGTGACAGTTATCTACAACTGCCGGTAGCCGTGCCCACTCCTACGGTACCGCTAGTCACAGGGATAGCAGGAAGTTAGTCCCAGTTAGCCATCACGCGGAAGTTATTGACCGTCTGAGTTATTGTTCCCATTATGAGCCTAGCTGAGATGAGTCTCAGCGCGGCTCCGCCTGTTGATTAAAATGTTTCCAGATTAGGTACTTCCATGAACTGATTTGCTCATACATTGACGGCGGGCGAGATGACTACGCTTGCCGACTACGTGGGCTCGGCTCACAAGCTGCGCGGAGTGATCGAAATCAAGTCAGTTGCACATAGCCTCACCCAGCACCCTTGACCGGAGCAAAAGTGCTGAATGACTGCCCGCGCAACAGCTCATGTCTAACTATAGGTCCAAGGAGACAACTTGGAGAACGTTCCTGCGCAATGCTCCCAAGGTAGCCATGTGCCAGGTAAACGCCTGCTAATCTAGTTAAGGTTACACACTAGAGGGGTCCCATTATTGCTCACGTGGGCCACGTGCTACACTTCGCCCATAGCGTACGGTCTTTCACTAGTTCCGGGTACCCACATTACGTACGTTCGTTCACTACTCGCTCAGTAGCTAAGATCGGGCTCTGGGGAGTTCCAATAGAGCCAGGTCCGAGCCATCAATTGTCTGACATATTTTAACTCTAGAACTAAAGCAGCCCAGGTGGGAAGGCCACAAAGGAGCAGCCGGAGACTATCAGATAAATACATACGCACCACTAGTCGTCATAAATAAAGGAGTTGTCCCCATGCTACTTAGGATTCAACGGCTGGTAACGGGACGACAAATAGGATTACGGTTCTGTCTTAGTAAGGCTTATTCTATGGAATGGGGACGTTGGGCCTTCAAGAACGTAAGGGAATGTCAAGTCCGGCTTGGTTTTTTCCTGATAGGCGTGATACGCGAGCTTTTGAGTGTAATAGCGGGAGTGTCTGTTGTTAGATTACTTTTTCCGTAGTATCTCACTCAAACTAAATTAACACCAGTAGGTATTATACGCGGAATCTTCCGCTTTTGACGTAGAGCATCCCGTGTCCAAACCGAATTGTCCTTTTTGGATCGCATGACATAAGGTTAAGAATTTACCACCACTCGTAGGGAAAGACCAAAGCGGGACAGACAACTGCCAGCGGGGCATAGCCTACTTCCTGTTATATCAAGCTCCAGCTGACTCAGAACCAGAGTCAGTAACGCCTATCTCTGACCTTTGGGTACTCCCACGCGGTATCATTGGCGACCAGCTTGTGGAGGATCCATTTAGCCACTCAACTTGTTTCTAGTAGAATTGAATAGACACTGGAGAGATGGCCAGCGACTGATCTTGTCATACACTTGTAGGTACTGTACCTAAGGTGGTTCAATCCTGGCTACGGGTAACAGTTGGTGAGGTGGGCCCTTCCTTGCGTTTGATGGGGGCAGCCTCGTTGGGACCGACTACCTAACCAGGTATGGTTTCCTCGCAAAGCATGGGCCGCCAGTATCAACTTGAATTCCCGGATTACGTAGCAGATTACTCCTGTAGTTCTTACACGCCCTCCTCTAGAGAGGAGCCGCCACATAGGGTACGCTCGTCCTGGGGATATTCACTATACGACTGTGTACTCCCTGGCACTGCGCAATAACCGGAAATAGGAACATGATAGCAAATCACAGGCATTGACCCCAGTGAACAATACCAACCTCAGAAAATGGGGGAACACCCTGCACCTCCGTGCTGCCTATAATACCTCATATCGTCGGCTCTCCATATGAGGGATAAAGATTCTTGTGCTTCGAATTTCAGACAGTCGACCAGTAGAGCAGAATAATAATCGTCGACCTGGTCAGTAAGGGGGCCGGCTAACGTAGACGTTCCCTCACGACCGCTCAACGTGTCTAGACAAGCACACAGCATATTCCGTCCGGATCCACCAGTGTATATTGGTAAGTTGCTCCCAACTGGTCAGGATGATCCTCGAAATTATTTTGGATAAATAGATACAATGCCTATCCACCCAGGTAACACCACTGGTACGCTATTTAACGCCTTCTCCCGGGTCGCTTAACTAAGTATGCTACACCCACATGCTTCAAATATGGTCGTTTCACCCTGTCGGTAGACTCGTCAGACCTTGTCTCATACCCAGTGATTTCAACCGACCAGTGGTGATATAGTAGACCCTGGCGGTAACGATGTATCCTTATTGACTCACCTCAACCCCCTGTTCACACACATTACGCCCCGTCCGGGGCGAGTAGTGCTGCCAGGATTTTGGGGATACAAAAGGTCTCTTCCTTAGCGGTGTAGGGGCGGATTTACCTGTTTCTCAGGTTAGAGTCACATAAGCTCTGAGATAGATATGAGGGCGTCATAGGTTCGCACCGGACATACCTCGCATGTCCCCCTGGCGTAGCCACAAGGTGACTAGAGCCCACCCTGTCCGCGACCTTATGGCCCACATCTCGCTACTCACACCATTGATGTAATAGGGGAGTTATCCTTCGTTCAAGTCCGTTACCAGGTTCATCAAACAAGCTTTACGGATTGAAGCATCCCGGTAAAGACAGTAGCATGACTCCAAGGGCATTTTATAGCCTTAAAGGGCGTCCATGCGGGCCGGCAAGCCACTAAACCTTCATCTCGGACTGTTGGTCCTCTTTGCAAATTCATGAATGCTTTATGCTGGGAGACTAAGAACTTTTGAGGTTTCTATAGTTCAGCGGTGCGACGAAGTGGTCAGGCGCTGTAAATGAATGGAATACTCCTAGCGGGTTACCCCAGGCTTGAGGTTTTCCTAATAAACCCACAGCGTGGATCTCACCCAAGGCGCTAAGCCATAAATCAAGTCCCTAAATGTCCTTTTTAGAGCAAATGATCAGATCTCTGCGCGAAATTTGATCAATGTAGGACCGCAAAACCGCGAAGTCCCGCTGCAATCAAAAGGCGTTATACCGCCACCATTCCCGTGTGCAAATATATAGGCGACACCGCTGCAAAGCTCGGCTCATGCGATCATAACCCCACGCATAGCTTCCTCAATGTTATTTGCACTTCCCCCATCACACTGATATGCCCGGATGAACACCATTCGGGGTTTAATAGCCAGAAGATCCGCCTGCCTAAGATAGATTGTGGTTTCACCGAAGTAATGCCAAGCCAGTAGGTGACAAGACTGTTATCCATTCACGGGTGTAATATTTGGCGGTTCTCCTACAGGGTCGTTCCATGTGCAATGGGCCCTCTTACGACCCCGAGCAGCCTGAAGTCTGTCGAATTAATCTTATTCCTCAGCCCGCGGTCAGGAGGGCCGTAGGTCATACAATCAAGTGAACTCTGGCAGCGTGACGGCAGAAATGCGTAAGAACAGGGCTGTAACGATCCATGCCGGGTCAAGAGAAGGCAAACGGGGCTCTAACGTCCGATCTCGACGAAAATCGGAGGAACCGTCGCTAAATCGCTGTGCGCATTATTTACTCGGCTCTCTCTTGCCCATAAGTTTCTAGGTACGTACGCACCAATAGACAGGGGTATGTACTTTCGGGTAAGCACTGATCGTGGTGTTGTCAATCGGCTTCACTAGTGCTAGTGCTGAGAGTTCACTGTCCTTCTTCCGTGCTAGTTAATGAACCGCTTTCTATCCGGAGCGGTCTTCTTTCGCTCACTTGTAACATGCGCTAGTGGCACTACCGACAAGCAAAGCTAAGGTGCCTCCTCATCGACCGGAGGTCCCTCCGAGTTTAGACGAGCTTTGTTCACTCAAAACGAACACGCTGCGCATAGAGCAGGAATCAGTAAAGGGAACAACCTAACTGCAAACACGTGGCGGCTTGTCGTGTCTGACTACCGGGCAGTTCGGGTCCTAGGCGGTTAGTGAGCGGAACGCGTCGCCGGGCGTATCCGTAAGGATTGAAATAATTCTCTAAACGCCCCGCGTCGAATCTATGTCCCTTAGGCTGTGCCCGTCATTTCCGAAGCGCCCACAGGTAAGAAAAGATGGGTTTTGCAAGGCAAGGTTGCCGATTGGCGTTCGCAGCTGTTTAACAGCACATGCCGCGTGCTATACGGCAAGGAGAGCCTCTACTCATGACCGTCATCACACGCCATATGCCGTGAACCCCCCCGAGGAGTAAAGCGATGTTCTGCTGTACTTACTTCACAATTGTTAGCCGTGGAATTCGCATTCATTCCAACCGTTTCAATGATTCGAGCAGGCGAGGCTCCTGGGTGTTTCGTAGCAGGGCCCAACCACGAACATCTCCTTAAGCATCCACCCACGTGTAGTATGCACACCATAGATGGCATATGATTGTTCGAATGCTACCGTGATGCGCCTGTCTGACCAAATACCCTGAAGTTGCGGGCGCTTGTCCAAAATATGTAGGCGGGACACAGGGCCAACGTATTCCCTACGTCCGTGTACCTAGCTCAGGGCAAGTTTCTTCAGATTCCATTGGGACCCTGTAATAAGCAGCTTTTAAATTACGCTCCCTTCAACGAGACGGAAGCGATTCCGAAGCACCGAACCCTCAGAAATGGACATAGCTGGTGTTGTGGTGAAGCCTGAAATCCGACTCGGTACTATTTGTCATGGGGCTCCGGATATTTGTTGATCTTCGCTGCATTTGCGTCAAACTACGACACAAGTAGGATGGGCGTACCGCGAATTCATGACATGCGCCCCGACTATCATGAGCCAGAATGTAGAATCCAGGCAGTACCATTGGGAATGATTCCGTTGATTTGCAGACGGCGCATTCACTCTAAAGACACATATTGCAAGATTAACCTTCACTTTAACTCATGTCTCATACGGGTTGTACCAGCTGCTAACAACTTGACGTGGATGGCCGGGAAAAGACAGTAGTGGGTAAGAGGCATCTATCAGCGATACCACTTTGAATATGAATTATCCTATTAGAACCGTTCGCGTCGGCTTCTTAAAGTTAAAGGTCAAGAAGCGCCGGCCATCGTTAGGGCACATAGTGGCTATGAGTTGCGAACGTCATAAAACTCGTATTTAGCGAGGTCTCGGGACAGGATAGGGTTGCTGCGTAATTGTACGCGGCAGACAGTACAAACGTGCGCGCGGCGACTCCTATCTCTCCCGCTTAAGCTTTATATCAGCCTGCGCCGGGTGTGCGCGCGAAGCGAGTCTGAGTCCCGGTCGCTAGTGATAAGAAGGCACGTGCTCCCGAATTGCCCCCCTCTAAGGTGTGGTCCTGACGAGACTTTGGATCACGCCTCTGCACAACCAGGGGTTAGCAAGAAAAGCCCAACCTCCTTGACGGCCGTTCGCCCAATTGTAATGTCCGATATTAGGCGAGCTCAAAGTTATCGGGTGCTAAAGCTTCCACTTATCTTTAGAGGGCGCACAGTTGAGGTACGGGCCCGAGAATCGGTTCTGCCACGTAGACTCTTATGTGGTGTCGTATGTGGCGTAGTTCAACCGCGTCACGACGAATCGTCATAAAGGGTAAACTATCCCTAAGGGTTTTGGAATCTTGCGCAATAGTCGCCTTTGAACGGAAGAAGCCTTACCCCTCTGCGTTCACAGGGTAGCACAAGCTGCGACGAGAGTTACTGGTTGTTTGAGGGGTGCCCTAGTAGGACCTCCGCCGTATTATGTACTATCATCCGAGTGGGCCACCGCGCCCGCCTTAAACACATGCTACCAGTCTGTGCGAGTTGCAGGTGGATCGGCAAGGGGGGGTCCGCTACGCATGTAACCATAGGGGAGGGGTAGCAAAGGTGCGAGGACCACATGCCGGCGTAAAAACGAACTCTCACATGTCAGGCTTTGCATTCTGCGCCCCATAATCATCTAGGCTTTGCCCCACCGTAGCGAAACAGTTAATGCTTTGTCGCTCGTGGCTTAACTTCCTACGCGTTCTAGTTGCTACCCGAAGCGGCGTGTGGAGTCTGCGTTTTTAAGACCGGTGTAGTTCGCATGCAGACGTGAGACCCGAGTTGTGCTTGTGCCTTGTGGTACAACTCCACATATAGTCGCAGTGCGCACGCAAGGCGCACTTCGTCGCTGGCCGGGTCGGGTCGTACGTGCGTTACGAAGCAAAGAGTTGTTTATTAGAACGCTGTGATCCGCACGTAAGACCCGTTACTAGCTGCTCCTCTGTTCTTGCAAGGAGTGGTCAGCACGTATACCAGAACAATATCCTGTTAGAACTGTTAGACATACGACACTTCTCCACCTGGGATACGTAGGAAGGTGCCCCCTCACAACTGATGTCTTCCGCATCGCAAGACAACGTTGCAAAATATTACCCAGCGCCGCGCGTAGTGTGCACGTGCTGGTCCCTCGCAGTACCGACGGTAGATTTAACTCCTAAGTCGTTAAAAAAATTGTGATTCTACGAGGAGAGGCCTACGGGTTCTTTCACCAATTCGATAACTTTCCGACCGTCATATTCCCAATGAATGGAATTGAACTGGACAACATATTACTGACATAGAATCATGCGAGTGATCAAGAGTTCAGGAGTAACAGGTGATAACCTCGGTCGTGGGCCCGCGATTAAACAGACCTTAATGCACTGGATCAACGTTATAACTTCTCTGTAATTGGACATATCTTGTATCCTACCCAGACACTGAGGCACGCGGCTGGCAAGCCCCCAGGACAAGTTCATGCTGCGATGGGCTTTATTCGGACTGCCGGGCCTGACCAAGGCCGATCTATGAGTAGGGCGCGGTAAGAGCGAGCCCCGTTGTCCCAGCCGTGCTGAGGGCCATCTGCCTGGTAAGATACACAAGAAATACGCCTAAATGTTCGAAGAAGGCCTTAGATGATGAAACGTTCTAAACATGCGCGCTAACAGGCCACACTGTATGACATTGCCAGTCTCAATGGGGGATACACTTGAATTAGCCAATGTCTTGCCTCGCCTGACACCACTCGACTTCGCTGCACGGAGCAGCGCTTTTCCTTCAGTAAGCCTATAAGGGGATCTCTCTAGTCACGAACTGCGGTTTAACCCGAGAAGACGTTCCTAGTGAGAGCGCGAGCTCCGAGTACGTTCGGCTAGACTCCGTGAATGGGAGACTTAGGAACTAAGCAGCGCGGGGTTTCGTTTATTGGTACTTGTGCTTGAGCGGACGGGAGCACTTCCTGAGGCACATGCCGGGCGGGGTCGCAGGTAGGCTTAGCAGAGACCAGTAGCTCGTCCGCCTTTCCTCCCGAGCGTGAAAGCGGTAGCCATACACGGGGCTAATAGGGAGCGCACCATGCCCACAGTAGGCCAGCCCGGGCCTCACTCCCCCCATTTTCAGGCTACCTGCAGAGCCATTCGGGTTCCGTGGCGTTTCAGAGAGACCTGACTATCGGTTTGTGTCAGCCGATAGTCTTGCGATGTAACACACGAAGGGATAAAAAAGCGGCCGCAGTGTAGTACCAGAGGTATTTAAACGTTAGACCGAAATTGAGTTTTCGAGCCTATCGAATAATTTCGCTAGGGCTAGGTGATCCATTGGTTGAATTTGCACGCTTGCAAATACAGGCAGTGTGTCATCCAGCTCGCCATAAATGTTCAGGCGACTGACAAGAATTCGAAACTCACACGCACTAGTATTAAGCTTGGGTCACCCTGAGGCACGGGCGATTGTTCCGGGATTGATATCGGACGCCGCTTTTTAAACGATGTACAATTATCATATTTAGCCCATAGGCTCGATCATTCAGCCTTATGCGAACCTCGAAGGCAGGCGGAGTTAGTCGCAGTCCTCAAGGTGCCTCGTAACAAATAATGGGCAGCGCCTGACAAGGGTTGATGTACACTCTCACAACACTCTTAATTCAAAGGAGCCCGCTTATGGATAAAACTAATCCCAGCATTATCTCTCTAGGCTTTTTTTGGGAAGCTTAATCTCACACCTTAATTCCTCGTTCGCGGCCCCGTTGACAAACCTCGACGCCCAGCCTTATAGGAACATTAGATACTCGAAATATGGCAGCGAGAAAGTCCGAAGTGGCTACAAAATGACAATTGTCTACATCGGGAGTATTGCCTCGGTCTTTGGTTGATTGGAACGGGGTTGCATAAAGTACGCGTACATATCGTTGCCGGATAGATAATCTCAGTATTATTCTATTTCATGTGTGTGTAACGGCTACTCCGAAGTCCTGTCAATCAAGACGGGGGCAAGCACAACAGTTCACTCACGGATAGCAGATTATTTACGGCTGAGTTCAATATCGGCAGGAGGAATTAATTTGAACGAAAATACACGCCCCCGGGCTACTGTTTAGCAAGACTATCATACGCAAATACTATGCCATTGCTCGGTGGAATTTCGTTTCCGGACCATGATAAACCGTGTTGTTATTCCAAAAGCGAAAATTTTGATTTAGATCGGACCCTAGCATCCAATGCAGGATCTAAAATAATAATGCGGATAAAATGATAAATTCCCTGCGATCGACGGACGCTAAGTATTGAAGAGCATATAAGAATTGAACGGGTGGCTCCTTCGGTTATGTGGCACTGTTTGCTTGCCTGGCAGAGTATATCAACAGTGATCAACGCGGGAAACTCGGCCGCGGTCCGATGCTGTCTGCTTGGTTACCTCCGGTTTACCATCTGGTTCTACGTCCACTTCGTGCATTTTTGTTGGGTAGGCGCACCTGATGAATTGAGCTGCCCCCGATTTCGCACGTCTGACATCCGAATTTTTTGTCTCAACTTGTCAATTCCGGATCGTCCTAGCTCAGAACCCACGGATCAGCTCGGATAATTTGTTTGGTTGTTTTTACACGTTTATCATACGAGCACAATGGATGGGGCTCATACCCCGGCCCTGCCGGCGTGTGACGAGTGGAGATATTCCTTCTCTAGCTGTTCCTTGTGTAGGAGCACGCTTGGTCCTAACCGTAGCCACTTCGCGATATTGAATGGTTATGTTGCAGCTACAACCAGAACTGGTTGAGGGAGCCCCGAGCCTCGATCGTCTTCACGTCCATACGCATTCGCCACCCTAGCTGGGCTTAGACGTTAAACTGCGACCGGGTAATTACCTAATTCAGTCAAGCGTCCCGTTCCACATTAATATTCCAGATTTGCTTAATGGCCCAGTTAAATCTATCATTACGTAATAGCTGTTACTCCCTAAAGCGCCAAACTTTTGACCCCTTGTTACTTACAAATAAACGGGTTGCGTCTTTCTTTCCACGGACCTCCATGCTCGAATATTGTCTCTTTCCGTATTGTACTGTACAACTCGGTGACAGTTCGTAACTACCTTCAATAGCAACCAACCCCTGTTACACCCGTCGGGCTACTAGTTTCTCTTTACAGCCAGCGTCTGCAGGTAGCTCAGCCCTCAGATTCAGACACAATATGAGGCTCAACTTTGCACTGAGTCCGTGGCCGGAGGGCTCTGGCTAACGGTTACGTTAGCATGAAGTACTGGCTTCATAGAGCCGGGCCTAGTCACACTGGTTGGACACTACCCGGATAGAACGCAAGTTATAAGATATAGGGCAGGTTCTGGGGTGTGCCTGGATATTTTTTGTCCCAGGTTCCTTGCGGCATTGCGTTCAAGGTCTCTCTTACCCAGTCGTCATATACAAGATAATACTATCGACAATCTTGACAACGTCTGTTGAGAGCTCGCGTCATAGGGACGGCAGCGCTAGGGAGGTATGCCCAACCGGGAATGTGGGGTTCTCCACACCGTATGTCCGATGGGCACAACTAGACCGTGTCATTATAAGAAGCTACAACCGAGATGCCGCACCTCTTTAATGTTGATCCTGTATTGTGAACTATCACTCAGCTAATTCGGGGCCATAGGATATAGGCTTCTAAGTCGACTTTTCCGATGAAAGATCACTATCCAGCGTGTCAAGGGTAAATGACATCAGGACGCTGACAATTTGGCTGAATCCTTGGCGACGCGGCAAGAATAAAGGCATAGCACGGGCGTTTGAGGGGACGCTGATTGGCTCGGGTCCAGGTCTGACCTCCACGGAGTCCGGATTCGAACTCGGTCAGTCACACGGGAGGCTTAGGAGCCTTCGAACGGACGATAATATCCCGTTACTCGCCACTGTGCCTGCCTATAATGGAAAAGACAACTTTTTGGAAGGAGCTCGCATTGTCCGCGGCCGAGCGATTTCATGTGGCTTTGTGAAAGAACTCGAGTTGGACATAATGTCTGTATATGTATCGCCGACGCGACATATCCTGTACGTGTTGTCGATGATATGAAATTGACCTACTTACATGATACCAAAAGGAGGCGGCCCCCGGAAGGTTGGCCCGAAACACGAGCTCCTCGCAAATGATGTCATGACGATGGCAGAAGCCGAGCTCACGTCTCATTCGGTCGCAAATCCTTGATTCGTGCCGTAAGGAACTTGGGAGGGTAATAGCAGGTGCCACGTTCTCCTATTGTCGGACGCAGTGCTTATGTAACTGATTCCCTGAAACGTAAGCTATTTCGTCCGGAGATAGAACATTATGTCCACAAGGCAAGATATGTTTCCTATGAGAAGAAAACGACGCTTAATGACTTGGTGTTCTTTCTCCAGGCAAGATACGCGAGCGCCTACGGAACAAATGACGTCGTCTACGACGTCCAGATCCCAGCTTTTCGTTCGCTGCGGCCCCCAACTTTGCCAGTAGTGCCGATTGTGCGTTGCGGCAGGGGTCCTTCATACTAGTGCTTCATGCATTTGCCAGGTACCATGGATCTGCACTACTATCAACCGGGGACCGCGCCATCGCTTATGGGGTAGATGATCGCGCCACATCGTTAAGCGCGGATTATCGGAAGCAATCGTCCCACGTATCCTAGGTATAAGATATAAGTTGCAACCGCCACTAATCCCTCACACTTTCCACGGTGGAATCAGATGTCAAGCACTACAAACTTGGTCCACAGATGGGCAAATATATGTGCTCATCTCATAAAAGGTGTGACCGCTCGTTCCGGAACCTCAACTTTTGCTCGTAGCGGGTATTCCTGACGCGATTCACCAATCGGGGCCAACGGCTGACTTAGACCCGGCAAATAACACAGTCCAGCGTAGCTTGCGCATTTACGGCTTTTTGAGCTGGCGTTCCCGCCAGATTTGCACAATAACATCGATGAACCTGTGCTGCGGCTAAATGATAACGGAATGGACAGTTCGCAGTGCTTCTGATTGAGTTCGTGACCAAAGTCATCCGTAGGCAGGGCACTCTATACCTCACGTATGTAGCCTGTGTATCCTTGCCCAAAGGCGCGCGCAGCTCGAGGAGGCGGGATTGACCGGGACACATGTATTCGCCTCCGAGCGAACGCAGTAAATATTCATACGCAACGAAAGAGCTTCTTACGGTATTAACAATTTCATCCGGGGGTTATCGAGGATCCGCGCCACGGGTCTGCGCGAGACTCACGTGGCGGCGGATGAACCCGGCAACAGTCGGTGCCCCTGCTCAGCAGAGCGTTATTGCGAAGTCCATGAAAACCTTATTCACTAACCCGGAACAGCCCCTTTAATACCAAGTGTGAGTAGAATATTCACGCATGGGCAGGGTGTGGCGAAGAGGCGGCCACACATCGACCGGAAATCTCTGTCCTGCGTTCCATACCCCGACGAATTTCATTTCCCCACGGACTAACTTTCAGGGGGAATAAGCGAGGTACCCCTGGCAGAAAAGGCGCAATGTCTGATGAAATTTCTCGTGATGCTCGTGTGGACGATGGCAAAGCTCATGGAATTAGCTAGCAGCAGTGAAGTAAAAGCCGCTTCGGCGGCGACGGAGTGTATCACATCGGGTCGGATGTGGTCGCGGAGTGACGAGATCGAGGATGTGAGAGATAAGGCCCGTAGATCGGCAGGTGTGTGCCCTACGGCTCACTCGTGGTCAGCCAACTGAACTCGTGACCCTCGTTATGGATCTTAAGCTCTAGTAGGACAGCCCAACTACCACGTCTTAGAAGCCAACGATAAGCCCATAGGGCAATGTTTTTAAAGGAGCCCCCGTTCGTTTCGGCCACAATTAAGAATTGAGTTGATCATGAGGACTATGTGATTTAAAAAGTACACGAAAGGCGCTCAACGGAGTGTACTAGGCATTAATCATCCGAGTACATGCTATAGCTTGTCCAACACTGTGCGATGCGGCGAGCGCGGGTCTGAAACGCACCCGATATTGGTTATGTGTTGGGGTGCCCATCGCGCTGTGTCCCCGGTGGGAAAGTGATGTGCCATCATACAAACGATCGTAAATCTGCTGATAAGGACAGACGGAAGGCTAAAATGGAAAGATTGAGAATTGGGCGACTTTCTTTATTCTCAGAAGCAGGAATAGTCATCCGTAGTGCCGTCAGTTAGTAACAAATAGTTGCACGCTGCGGGGAAATCCCCCCACTCCCGGAGTACCCAGCAAGTTAGGAGGGTGAATCCCGGTTGGGCTCAGCGGACACATGGTGCCGACCAGTATTTCCGCATTTTACGGGACCCATACAACGCGTAACGCTTGACACTGGAAACAATAATAGATGTGTCATGAACTTCTAAAGGTCAGTTCTGTCGTCGATCAGTGCTCTCCGCGATACCCGAATGCGATTCTAAGAGTGCAGCTTTCCCTAATTTGCTACGCGACGTATAAATTGGCCTAGATTGATGGGTGGCGTAATGAAAAGTTATGCTGTTGGTTCGTATCCTGTGTATTTCGGTTCTTCAATTCGCACAGTGATTAACGGCCCATGACTGATGGACGTGGGCGTGTAGTATGGGTATACCCCCCTCAATCACCCCGAGTGCACCTTCGTGCGAGAAGCACATCGCCTACATGATTGGGTACCCCCTAGCTAATGACACCTCCGGCCGGTGCGGCGGAGTCGTAGAATGGGCCAATGATTCATCCCCTTGTTTCGTCAGTTCAGGTCCTGTGATGCACCGTACCTGCCTTATCATTCTCGAAGCCTGTTTAAGTTTCGTTTGCGAATTCTGCGGCCTGCTCTGATCCGGGGAGACCTTCGAACATGTGGTACCGAGACTGAGGTGAGTAGTTCAACCATTTAACTGGAACAGCTAAATGTCGCTTTCGCCCCTTACTTCTTGTATCTTTCGTGGCGTTACCATGAGGAGGGCATTTCTGACTGTCGCTTGGATGGAGGAGTAGAATAACCAGTACCCTATTCTGGCCCTGTCAGCGGCACCGGAAACCGGGCCGCACGTGTGTTCGCAGTCATTTGTTGACGAAGCATGCGTCCAGTGAAACGTATCAGGCATAACTTGCAGGGTAGGAAAATAGGCACTCGTAGCCTAGGTGCAAGGCGTTTTATGGCGCTAGAACTTAGAAACGAAAGATCCGGAGCTGTCCGATAACTAGTTTAAAGAATCACCATCGGGGGATTGCCAAACGATACTACCATTCCTTACACCAGTGAGGGGGCGCTTAGTGGGCATGGAGTTGACGCGGGATGCGCGGGCCAACAGATTCCAAAAAGTGACGCTATTTAAAGAGGTGGGCTATGGAATCGGCATGCTTACAGCTGCTCTTCCTCCTGTAGTAAGTATATGCGACCGATGGAGGTCAAAAGGTCTTGATTCGTCGGTGGCCGATGTTATGCGGTGAGATACCTCCCAACGGCGTTGATAAAGGAGGAGGCTTACCATTACGCCCATGTTCGAGCCCCCAGCCAGACATCGGTACCAAGAAGGGTAGTTGGATACACCCCGTTGCCACCAACGAGTGTCTTGTGATTGGCCGATTTCACCAAGGGCAGATCGACCTGGCGTGGAATTCCCTTATGCAACAGAGTCGACAGTTTGGGGTGTAACAATTGTGCGTAGGCCCAGCCGTCGAGTGGTCCAGGGCTGGTACTATACAGCTAGCCGTACAGAATACTCGAACATTGATCACCATGTGACACATCCGAATAAAGGCTAGCTACTTCCGCACAAGCAGATATATTGCCCCGAGTGGATTCCCTGGGGTCTCTGAGGTATGGGGATAACATACTTTTTAGGACTACAGATAAAAGTCTTACATGGAAACCAGCTACGCGTGGTAAACGGATAACGCCACCGGATGTTAATTGGCCTCGCGAGAAGTTTCATATGCACTTAGGGGTCTTAAGCCGTAGCGCTCGGTTTATGCGGCATTGCGAAGTCTGACGAGGCCATTCGACAAGTCCAACAACTTATCACACTTGGTTTGTGCTGGGCTGTGAAGTCTGCAATTGCAGGTAACTTAGCACTCCGTGATCTACACCCAACCGGCCGTACCTCTTGGGTAAAGAGACTGACCCGGGTGTGATATCTGTGGTAGCCAGGTGTTCATTCAAATAAAAATTGTCCTAGCATTCCGACTCTAATTTTCAAACCGTTGCAAAATTCATCGTTCTAAAAGCAATAGCTTGAGAGGTCCTTTTTTACGGGTCACTGCATCAATATTCTTTCCTCTACCACTCAGTTGATCTTAGTCACGGGTATAAAATATCCCTACTGTACTGTTTGCCGGGCGCGACGGTATATTACCCGTGGGGCGGCGCCATCCGATAGACTCGTATATATCAATCACTTCCGCGGAAATTTTCAGCGTGAGCCAATCGATTGACACAGAGTCCGGCACCGGGGTGACGCATTGAGGTCCATGACACTCGAAACTTGGGCTACGACAGGCGCGGGACGGCCGGCTCGTTACTGAACTGTCAATGGGGATCGCGTGCTTACGGTGCGCGAAGGATTTATTTGAACGAAGGCATCTTCTTAATTGTCTTCATTAAAATGGCCTGGTATATAGTTCGCTAGGCGTTTCTACAGTACGGGTAACTTTCTCTCAAGCAGGAACCGCAAACGTCGATGCTGCAGTGGCATTACGGGGTGATCTTAACATCAAGGAATATCTCCGGTGATTCGACACGTCTCCCCACTTAGCGCGTGACCTCTGACAGGTACCGACTGTAAAAGATCTACGTGTTATATTCAACATTATCCAGCAAGTCGTGGAGTGCGTACATGTTATTGTTTGTGTACTAGAACACTACTATGACGGGTGGAGCCATCATGGTTGACACGGAAGGATAAGGATTGCGCACCCATCAGGAACATGTACTAGACACTGCGCGTTACCACCATAAGCCAGTGCCAAGGATATTGGAACGCTAGGCTTACAGTAAGGCCACAAAGATGAGACTCCTAGATCGTCTGCCGTAATATAACAACTGTACTGCTACAACGACCGATATGCGCATGGCATGGATGCGTAGTTTTCAGGGCATTCGGTATACCGGAGCTGTGCCGAAATCACCGTTTCGGCCACGACGCTCACACGATGGTCTGTGAGACAGGGGGGCTCGCAATCTTCCCCATGAACATGGCGTGATTCAAGAGGAAGCGGTGGCGTGTTCGTAGGCGGGGCGCTTTTCATTTCACGAGAGTAAGACAATAGCAAAGTGACGGCCACGATAAGGGAACTAGAGAAACGAAATTATATTACACGTGCAGTCCGGATGGCCTTGCTGATGTAGCTACATGTCCCACTATTCGCGTTGCTACAGGGGGTCTAGGCGTCTGTCGGAGATTCTATTCAGAACATATGTACAACAATCGGCTAGGACCCACTGGCTAAACGCCTGTGGCAGAGTCTCGCTTTCTGTCAAGTCTACACTAGTAATAATGGTCGCGACTGTGTGCTTAAGCGATCCCGGGCGTATCCGATATGAGAGGTAAAGGTATATTGCTCGTCCCGCCCCCATCTAGGTGCGCGTTTTTCTAGATGATTCAGACCCTCTAAGCACCGACGATACTAGTACAAGAACTCTCCATGGTACCCTCATGCAGCTGTGACGTACCGTGTAAGTATCACTGTATAACTACGATTGGGTAATGCTCGTGTACCTGGTCTATAGTTTACGTATGGCACGTGCCAACCGCGCACCTTTTAGGATTCGAAAAGGCTGCGATCGCGGATGTGCTGGCTCGCTTCACAAAGAATAGGGCGCCGTATTAGCTCGCGGCCGGGTTGCGTTCCCGCTAAGTTACTCTATGCACGCTGGTATAAACTCTAGAGATATAAAATCATGAGCCCAGGGCGGGTTGTAAATATCAGCAACGTAACAATTGTGTGCGTTCCTTGGTATCTGCGCAATCGCGATTCTGGGTTACCGCGAGAGCCCCAGGTTCCGGTTTTACAAGTACAGGGCACAAGAGAGATACAGATGAGTGCACGCAAGATGCATTATCGCCATAACTGAAATGGAAGTTCCTTCCGCTAAAGTTGTACCGCACCGAGAGAAACCATTACTCCAAGGACGCTACAACGGGCTCATCTTCCCGTCAGCGGGTATGCAGTATACTTTACGCGGCCGTCCAACATCCCAGTCTATACCTAACCTTAGACATCGTCTTACAACAGCCGGTATCCCTGTGACCGCCCTACGTACGTTGTGGGTGGAAATCAAAAGACTAAATCAATGGATTTCGATGTCGGAGTGACTTTACTCCATGTGAATAAGACCGGACGAACGCCAACTCGAATTGTACCCGGCTCTCCTTTATCGACAGATGCGTCAATACACAGCGAGATCTATGCCTCGAGCAAATCCGGACACTTGACGTCTGCGATCGTAGAAGGACGGTTTTGTTAATCGTACAAACTACCTCCAATATAGCCCCTCGTACTGTTGACAGCGATACGGTGCTATGGCACTAATCTTCACTGGCGTTTATGGGTATGACAGCTTGGATCATTTACCCCTGACCACTCTTACATACGGAAGACAAATTCCAACCAAGCGCTGGATCTTCGCCAGTGACACCAGAATAGTAACCGGGACCACACATTCCTCAGCTGAAGGAAAAGGTAGCAAGTCACTGGAAGGCCTGGGCACAGGAACGATTGCCAAAATTCTTAAACGAGGCACGAGTAGTGATCCTAAGGCACGGAAACAGCGCGTGGCCGATCTGTCGTGCACCTTGTGGTACTTTTCTGGACGAAGAGCAACGTGTATTAACTCTTAACGCTCTTCTGACATGGCTCACAACGCAACAACGTACCGTTTAAGACTCACGGACACCTAACGCTTCCAACCCCCAAGTATTCACGATGCTCCCTCCGTCGTATACCACTCGTTAACTTGATAGGCTTGCTGAAAACAGTGCTCAGGCCCGGTCGGTCGCCTGTGGTAGCTACCTTACTTTACAGCGAATCTAGCGATAAGTTACGTTCAAACAAGACTGACTTTAACGCCGACGGAGAGTTAACCAATGGACCTTCCAGCGGCGCTGACTGTTAGGTGTGCAACTCCCCATGCCAATTAAAACCAATGGGCCTTACAAAATATGATCTGAATGTCCACATTAGTCTGGGAAGAGTCATATTGTGTCCATAGACCAACTTATCAATAGCCCCAGATACTCCCTTGCGGTATGGAGCTAGCATAGTTGCTTTAGTTATTTGAGAACGTGAACTTCCTATTTGTTGTTTACAATTCTAATCGTCTCCTATGCGAACACATAGAGTCCTGACCTAATTCGTTACGTGGCTTGGAAGGTTGCACAGGTCTATAAAGCCGTAGACAGTGGTCCAGATCGTCTTTGCGTTAATTCGGGACAAATCCCTTCCAGTTAACGTTACCACACGGGAGCTCCTACACGAAAATGCTCTTGGGTGTCCTATAACCTGTACATCTACCCAGGCTCGTCGCACCCCCAGGGAAAGGCCACATCTGCGAGGGCTCTGGCGGACCGTGAGTCTTTATTCTTACTCCAACTCCCCCGAAGTAGGCACTGAAGGCCGTTCGTGTGACAGTTCGACCCAGCAGCTCCGCCGTAAAATGCTACAGAATGAGTGACCCCCCCAGTACGGACACAATAGATTGTCCCTCGTCCACCGATATGCGACGCAATTATGCTCGAGCACAGTTTGCATACGATGCCTACAGATGGGTACCACTTGGGCCGGGGCGACTTTCGCCGGGATTGCCGAATATACGTAATGCCGTCATCGGGCCATTTAAAACGGGGAGACTGGGTGGGGAACAGTGAACCCTGAGGCTAGGCGCAAACATTGAGGGGATCGGACCGTTCAAGCCACGAATCCCACGGCGAAGATATCTAGGAACATGTAATCTGACGGATCTCTTACGAAAATCAGAGAACTGGTGCATCAGTGTCATGCCTTTTTAGACATCATATACATGTCTTAGCACATGGCAATTGGGTGCACAACATCCTTGAGTCGAATTCCCTACCGGTTAAGGGGACGTACAGAACACAACATAGGAAGTCTAGTTCGATGACGATCGAAAGCTCGTGCAACATTTACATTTCACGACGGACTCATTAACGTTGCCCCGGCGTGATATACGTCTGCCACTCGGCCCGTCGTACTAAGGTAATCCACTTGAAAGAGCAAGGTCTCTTGCAGGTGACAACACGTGCCTTTTCCGGTACTCAGGTGAATATATCTCGTCCAATGGGCCTCGCCGCAACTATCACCCTCGTTATCGACGCTAGGACGGTTGGGGATTTCTGCATTGGCTCGTAACTACCATATAAACTTTGCAAACCGGATTCCTTGCGTAGGGACCTTCATTGATATGGAAAGCTGCTCATCGTAGGGTATTTGCGCCGCGCAGTTTAAATGTCTTAATGCTGCGCCTCTAACGCTGTCATAAAACGTTTTTGTGAATAATAGAGACTAACTTCCGCTATTTCAAGTGAGTCTTGCTGGTCAGAAACAG . PASS SVTYPE=INS GT 0/1 0/1 \ No newline at end of file diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHBaseQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHBaseQueryParser.java index 1de83e96382..9c838765146 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHBaseQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/VariantHBaseQueryParser.java @@ -577,9 +577,12 @@ public Scan parseQuery(VariantQueryProjection selectElements, Query query, Query //// filters.addFilter(keyOnlyFilter); // scan.addColumn(genomeHelper.getColumnFamily(), VariantPhoenixHelper.VariantColumn.TYPE.bytes()); // } - if (selectElements.getFields().contains(VariantField.TYPE) || !scan.hasFamilies()) { - scan.addColumn(family, VariantColumn.TYPE.bytes()); - } + + // Alleles must always be included. + scan.addColumn(family, VariantColumn.ALLELES.bytes()); + // Because alleles column may be empty, we must still ensure that we get, at least, one result per row. + // Include "type" column, which is never empty. + scan.addColumn(family, VariantColumn.TYPE.bytes()); // if (!columnPrefixes.isEmpty()) { // MultipleColumnPrefixFilter columnPrefixFilter = new MultipleColumnPrefixFilter( diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java index eedeeb3c9ed..1d78af0d860 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java @@ -19,6 +19,8 @@ import htsjdk.variant.variantcontext.Allele; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; import org.apache.phoenix.query.QueryConstants; @@ -28,6 +30,7 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.VariantBuilder; import org.opencb.biodata.models.variant.avro.*; +import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; import java.sql.ResultSet; import java.sql.SQLException; @@ -43,12 +46,15 @@ */ public class VariantPhoenixKeyFactory { + public static final Integer UINT_SIZE = PUnsignedInt.INSTANCE.getByteSize(); protected static final String SV_ALTERNATE_SEPARATOR = "|"; protected static final String SV_ALTERNATE_SEPARATOR_SPLIT = "\\" + SV_ALTERNATE_SEPARATOR; public static final Comparator HBASE_KEY_CHROMOSOME_COMPARATOR = (c1, c2) -> Bytes.compareTo( VariantPhoenixKeyFactory.generateSimpleVariantRowKey(c1, 1, "N", "N"), VariantPhoenixKeyFactory.generateSimpleVariantRowKey(c2, 1, "N", "N")); + public static final String HASH_PREFIX = "#"; + public static final byte[] HASH_PREFIX_BYTES = Bytes.toBytes(HASH_PREFIX); public static byte[] generateVariantRowKey(String chrom, int position) { return generateSimpleVariantRowKey(chrom, position, "", ""); @@ -97,6 +103,12 @@ public static byte[] generateSimpleVariantRowKey(String chrom, int position, Str return generateVariantRowKey(chrom, position, null, ref, alt, null); } + public static boolean mightHashAlleles(Variant variant) { + String alt = buildSymbolicAlternate(variant.getReference(), variant.getAlternate(), variant.getEnd(), variant.getSv()); + int size = getSize(variant.getChromosome(), variant.getReference(), variant.getAlternate()); + return size > HConstants.MAX_ROW_LENGTH; + } + /** * Generates a Row key based on Chromosome, start, end (optional), ref and alt.
*
    @@ -114,16 +126,16 @@ public static byte[] generateSimpleVariantRowKey(String chrom, int position, Str */ public static byte[] generateVariantRowKey(String chrom, int start, Integer end, String ref, String alt, StructuralVariation sv) { chrom = Region.normalizeChromosome(chrom); - int size = PVarchar.INSTANCE.estimateByteSizeFromLength(chrom.length()) - + QueryConstants.SEPARATOR_BYTE_ARRAY.length - + PUnsignedInt.INSTANCE.getByteSize() - + PVarchar.INSTANCE.estimateByteSizeFromLength(ref.length()); alt = buildSymbolicAlternate(ref, alt, end, sv); - if (!alt.isEmpty()) { - size += QueryConstants.SEPARATOR_BYTE_ARRAY.length - + PVarchar.INSTANCE.estimateByteSizeFromLength(alt.length()); + int size = getSize(chrom, ref, alt); + + if (size > HConstants.MAX_ROW_LENGTH) { + // This is a problem. The row key is too long. + // Use hashCode for reference/alternate/SV fields + ref = hashAllele(ref); + alt = hashAllele(alt); + size = getSize(chrom, ref, alt); } - byte[] rk = new byte[size]; int offset = 0; @@ -143,6 +155,26 @@ public static byte[] generateVariantRowKey(String chrom, int start, Integer end, return rk; } + private static int getSize(String chrom, String ref, String alt) { + int size = PVarchar.INSTANCE.estimateByteSizeFromLength(chrom.length()) + + QueryConstants.SEPARATOR_BYTE_ARRAY.length + + PUnsignedInt.INSTANCE.getByteSize() + + PVarchar.INSTANCE.estimateByteSizeFromLength(ref.length()); + if (!alt.isEmpty()) { + size += QueryConstants.SEPARATOR_BYTE_ARRAY.length + + PVarchar.INSTANCE.estimateByteSizeFromLength(alt.length()); + } + return size; + } + + public static String hashAllele(String ref) { + return HASH_PREFIX + Integer.toString(ref.hashCode()); + } + + public static String buildAlleles(Variant v) { + return v.getReference() + SV_ALTERNATE_SEPARATOR + buildSymbolicAlternate(v); + } + public static String buildSymbolicAlternate(Variant v) { return buildSymbolicAlternate(v.getReference(), v.getAlternate(), v.getEnd(), v.getSv()); } @@ -215,6 +247,24 @@ public static String extractChrFromVariantRowKey(byte[] variantRowKey, int offse return (String) PVarchar.INSTANCE.toObject(variantRowKey, offset, chrPosSeparator, PVarchar.INSTANCE); } + public static Variant extractVariantFromResult(Result result) { + byte[] variantRowKey = result.getRow(); + + int chrPosSeparator = ArrayUtils.indexOf(variantRowKey, (byte) 0); + int referenceOffset = chrPosSeparator + 1 + UINT_SIZE; + if (Bytes.equals(variantRowKey, referenceOffset, HASH_PREFIX_BYTES.length, HASH_PREFIX_BYTES, 0, HASH_PREFIX_BYTES.length)) { + // The reference and alternate are hashed. + // The type and alleles are stored in the result + byte[] type = result.getValue(GenomeHelper.COLUMN_FAMILY_BYTES, + VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + byte[] alleles = result.getValue(GenomeHelper.COLUMN_FAMILY_BYTES, + VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + return extractVariantFromVariantRowKey(variantRowKey, type, alleles); + } else { + return extractVariantFromVariantRowKey(variantRowKey, null, null); + } + } + public static Variant extractVariantFromResultSet(ResultSet resultSet) { String chromosome = null; Integer start = null; @@ -226,9 +276,10 @@ public static Variant extractVariantFromResultSet(ResultSet resultSet) { reference = resultSet.getString(VariantPhoenixSchema.VariantColumn.REFERENCE.column()); alternate = resultSet.getString(VariantPhoenixSchema.VariantColumn.ALTERNATE.column()); + String alleles = resultSet.getString(VariantPhoenixSchema.VariantColumn.ALLELES.column()); String type = resultSet.getString(VariantPhoenixSchema.VariantColumn.TYPE.column()); - return buildVariant(chromosome, start, reference, alternate, type); + return buildVariant(chromosome, start, reference, alternate, type, alleles); } catch (RuntimeException | SQLException e) { throw new IllegalStateException("Fail to parse variant: " + chromosome + ':' + start @@ -237,13 +288,12 @@ public static Variant extractVariantFromResultSet(ResultSet resultSet) { } } - public static Variant extractVariantFromVariantRowKey(byte[] variantRowKey) { + public static Variant extractVariantFromVariantRowKey(byte[] variantRowKey, byte[] type, byte[] alleles) { int chrPosSeparator = ArrayUtils.indexOf(variantRowKey, (byte) 0); String chromosome = (String) PVarchar.INSTANCE.toObject(variantRowKey, 0, chrPosSeparator, PVarchar.INSTANCE); - Integer intSize = PUnsignedInt.INSTANCE.getByteSize(); - int position = (Integer) PUnsignedInt.INSTANCE.toObject(variantRowKey, chrPosSeparator + 1, intSize, PUnsignedInt.INSTANCE); - int referenceOffset = chrPosSeparator + 1 + intSize; + int position = (Integer) PUnsignedInt.INSTANCE.toObject(variantRowKey, chrPosSeparator + 1, UINT_SIZE, PUnsignedInt.INSTANCE); + int referenceOffset = chrPosSeparator + 1 + UINT_SIZE; int refAltSeparator = ArrayUtils.indexOf(variantRowKey, (byte) 0, referenceOffset); String reference; String alternate; @@ -257,8 +307,16 @@ public static Variant extractVariantFromVariantRowKey(byte[] variantRowKey) { alternate = (String) PVarchar.INSTANCE.toObject(variantRowKey, refAltSeparator + 1, variantRowKey.length - (refAltSeparator + 1), PVarchar.INSTANCE); } + String typeStr = null; + String alleleStr = null; + if (type != null) { + typeStr = (String) PVarchar.INSTANCE.toObject(type); + } + if (alleles != null) { + alleleStr = (String) PVarchar.INSTANCE.toObject(alleles); + } try { - return buildVariant(chromosome, position, reference, alternate, null); + return buildVariant(chromosome, position, reference, alternate, typeStr, alleleStr); } catch (RuntimeException e) { throw new IllegalStateException("Fail to parse variant: " + chromosome + ':' + position @@ -268,7 +326,17 @@ public static Variant extractVariantFromVariantRowKey(byte[] variantRowKey) { } } - public static Variant buildVariant(String chromosome, int start, String reference, String alternate, String type) { + public static Variant buildVariant(String chromosome, int start, String reference, String alternate, String type, String alleles) { + if ((reference != null && reference.startsWith(HASH_PREFIX)) || (alternate != null && alternate.startsWith(HASH_PREFIX))) { + if (StringUtils.isNotEmpty(alleles)) { + int i1 = alleles.indexOf(SV_ALTERNATE_SEPARATOR); + reference = alleles.substring(0, i1); + alternate = alleles.substring(i1 + SV_ALTERNATE_SEPARATOR.length()); + } else { + throw new IllegalStateException("Reference and alternate are hashed, but alleles is empty!" + + " '" + chromosome + "' '" + start + "' '" + reference + "' '" + alternate + "'"); + } + } if (alternate != null && alternate.length() > 5 && alternate.contains(SV_ALTERNATE_SEPARATOR)) { Integer end = null; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchema.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchema.java index 1d408da09b4..eb627dcaeda 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchema.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixSchema.java @@ -105,6 +105,7 @@ public enum VariantColumn implements Column { CI_END_R("CI_END_R", PUnsignedInt.INSTANCE), TYPE("TYPE", PVarchar.INSTANCE), + ALLELES("ALLELES", PVarchar.INSTANCE), ANNOTATION_ID(ANNOTATION_PREFIX + "ID", PInteger.INSTANCE), diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java index 7cc9dd77bf4..6a7d9fe5518 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantSqlQueryParser.java @@ -221,7 +221,8 @@ protected StringBuilder appendProjectedColumns(StringBuilder sb, VariantQueryPro .append(VariantColumn.POSITION).append(',') .append(VariantColumn.REFERENCE).append(',') .append(VariantColumn.ALTERNATE).append(',') - .append(VariantColumn.TYPE); + .append(VariantColumn.TYPE).append(',') + .append(VariantColumn.ALLELES); for (VariantQueryProjection.StudyVariantQueryProjection study : projection.getStudies().values()) { int studyId = study.getId(); @@ -599,10 +600,17 @@ private String getVariantFilter(List variants) { Iterator iterator = variants.iterator(); while (iterator.hasNext()) { Variant variant = iterator.next(); + + String reference = variant.getReference(); + String alternate = VariantPhoenixKeyFactory.buildSymbolicAlternate(variant); + if (VariantPhoenixKeyFactory.mightHashAlleles(variant)) { + reference = VariantPhoenixKeyFactory.hashAllele(reference); + alternate = VariantPhoenixKeyFactory.hashAllele(alternate); + } sb.append("('").append(checkStringValue(variant.getChromosome())).append("', ") .append(variant.getStart()).append(", ") - .append('\'').append(checkStringValue(variant.getReference())).append("', ") - .append('\'').append(checkStringValue(VariantPhoenixKeyFactory.buildSymbolicAlternate(variant))).append("') "); + .append('\'').append(checkStringValue(reference)).append("', ") + .append('\'').append(checkStringValue(alternate)).append("') "); if (iterator.hasNext()) { sb.append(','); } @@ -709,9 +717,9 @@ protected List getOtherFilters(ParsedVariantQuery variantQuery, QueryOpt protected void addVariantFilters(ParsedVariantQuery variantQuery, QueryOptions options, List filters) { Query query = variantQuery.getQuery(); - addQueryFilter(query, REFERENCE, VariantColumn.REFERENCE, filters); + addQueryFilter(query, REFERENCE, VariantColumn.REFERENCE, filters, VariantSqlQueryParser::hashAlleles); - addQueryFilter(query, ALTERNATE, VariantColumn.ALTERNATE, filters); + addQueryFilter(query, ALTERNATE, VariantColumn.ALTERNATE, filters, VariantSqlQueryParser::hashAlleles); addQueryFilter(query, TYPE, VariantColumn.TYPE, filters); @@ -1081,6 +1089,16 @@ protected void addVariantFilters(ParsedVariantQuery variantQuery, QueryOptions o } } + private static List hashAlleles(String r) { + String[] split = r.split(","); + List list = new ArrayList<>(split.length * 2); + for (String s : split) { + list.add(s); + list.add(VariantPhoenixKeyFactory.hashAllele(s)); + } + return list; + } + private void addFileFilterFieldFilter(QueryOperation filtersOperation, List filterValues, StringBuilder sb, Pair fileIdPair) { sb.append(" ( "); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index a96c57e9a45..6f426b59c43 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -138,6 +138,8 @@ protected DataResult getSampleData(Variant variant, String study, Query List stats = new LinkedList<>(); dbAdaptor.getHBaseManager().act(dbAdaptor.getVariantTable(), table -> { Get get = new Get(VariantPhoenixKeyFactory.generateVariantRowKey(variant)); + get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); // Add file columns for (Integer fileId : fileIdsFromSampleIds) { get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.buildFileColumnKey(studyId, fileId)); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/pending/AnnotationPendingVariantsDescriptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/pending/AnnotationPendingVariantsDescriptor.java index c5ba3d73e83..c606a42043f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/pending/AnnotationPendingVariantsDescriptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/pending/AnnotationPendingVariantsDescriptor.java @@ -1,6 +1,7 @@ package org.opencb.opencga.storage.hadoop.variant.annotation.pending; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.io.compress.Compression; import org.apache.hadoop.hbase.util.Bytes; @@ -16,8 +17,7 @@ import java.io.IOException; import java.util.function.Function; -import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema.VariantColumn.SO; -import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema.VariantColumn.TYPE; +import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema.VariantColumn.*; public class AnnotationPendingVariantsDescriptor implements PendingVariantsDescriptor { @@ -50,6 +50,7 @@ public boolean createTableIfNeeded(String tableName, HBaseManager hBaseManager) public Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManager) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, ALLELES.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, SO.bytes()); return scan; } @@ -57,9 +58,22 @@ public Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManag public Function getPendingEvaluatorMapper(VariantStorageMetadataManager metadataManager, boolean overwrite) { return value -> { + byte[] alleles = null; if (overwrite || isPending(value)) { + for (Cell cell : value.rawCells()) { + if (cell.getValueLength() > 0) { + if (Bytes.equals( + cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength(), + ALLELES.bytes(), 0, ALLELES.bytes().length)) { + alleles = CellUtil.cloneValue(cell); + } + } + } Put put = new Put(value.getRow()); put.addColumn(FAMILY, COLUMN, VALUE); + if (alleles != null) { + put.addColumn(FAMILY, ALLELES.bytes(), alleles); + } return put; } else { return new Delete(value.getRow()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/HBaseToVariantConverter.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/HBaseToVariantConverter.java index 026a6a5e122..4bfcb0011e1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/HBaseToVariantConverter.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/HBaseToVariantConverter.java @@ -48,8 +48,7 @@ import java.util.stream.Collectors; import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.SEARCH_INDEX_LAST_TIMESTAMP; -import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory.extractVariantFromResultSet; -import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory.extractVariantFromVariantRowKey; +import static org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory.*; /** * Created on 20/11/15. @@ -210,7 +209,7 @@ private static class ResultToVariantConverter extends HBaseToVariantConverter 0) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java index 4b0b6ef9584..f3700d24d15 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java @@ -66,7 +66,7 @@ public Variant getVariant() { if (result != null) { byte[] row = result.getRow(); Objects.requireNonNull(row, "Empty result. Missing variant rowkey."); - variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(row); + variant = VariantPhoenixKeyFactory.extractVariantFromResult(result); } else { variant = VariantPhoenixKeyFactory.extractVariantFromResultSet(resultSet); } @@ -136,6 +136,10 @@ protected void walk(VariantRowWalker walker, boolean file, boolean sample, boole walker.fillMissing(studyId, resultSet.getInt(i)); } else if (annotation && columnName.equals(VariantColumn.FULL_ANNOTATION.column())) { walker.variantAnnotation(new BytesVariantAnnotationColumn(bytes)); + } else if (columnName.equals(VariantColumn.TYPE.column())) { + walker.type(VariantType.valueOf(Bytes.toString(bytes))); + } else if (columnName.equals(VariantColumn.ALLELES.column())) { + walker.alleles(Bytes.toString(bytes)); } } } catch (SQLException e) { @@ -164,6 +168,8 @@ protected void walk(VariantRowWalker walker, boolean file, boolean sample, boole walker.variantAnnotation(new BytesVariantAnnotationColumn(cell)); } else if (columnName.equals(VariantColumn.TYPE.column())) { walker.type(VariantType.valueOf(Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()))); + } else if (columnName.equals(VariantColumn.ALLELES.column())) { + walker.alleles(Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())); } } } @@ -177,6 +183,9 @@ protected void variant(Variant variant) { protected void type(VariantType type) { } + protected void alleles(String alleles) { + } + protected void study(int studyId) { } @@ -202,6 +211,7 @@ protected void variantAnnotation(VariantAnnotationColumn column) { public class VariantRowWalkerBuilder extends VariantRowWalker { private IntConsumer studyConsumer = r -> { }; + private Consumer allelesConsumer = r -> { }; private Consumer fileConsumer = r -> { }; private boolean hasFileConsumer = false; private Consumer sampleConsumer = r -> { }; @@ -229,6 +239,11 @@ protected void study(int studyId) { studyConsumer.accept(studyId); } + @Override + protected void alleles(String alleles) { + allelesConsumer.accept(alleles); + } + @Override protected void file(FileColumn fileColumn) { fileConsumer.accept(fileColumn); @@ -274,6 +289,11 @@ public VariantRowWalkerBuilder onStudy(IntConsumer consumer) { return this; } + public VariantRowWalkerBuilder onAlleles(Consumer consumer) { + allelesConsumer = consumer; + return this; + } + public VariantRowWalkerBuilder onFile(Consumer consumer) { fileConsumer = consumer; hasFileConsumer = true; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/study/StudyEntryToHBaseConverter.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/study/StudyEntryToHBaseConverter.java index e3188e15716..4a4bafa1be8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/study/StudyEntryToHBaseConverter.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/study/StudyEntryToHBaseConverter.java @@ -119,6 +119,7 @@ public Put convert(Variant variant) { add(put, VariantPhoenixSchema.VariantColumn.CI_END_R, Math.max(0, variant.getSv().getCiEndRight())); } } + add(put, VariantPhoenixSchema.VariantColumn.ALLELES, VariantPhoenixKeyFactory.buildAlleles(variant)); add(put, studyColumn, 0); if (releaseColumn != null) { add(put, releaseColumn, true); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingMapper.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingMapper.java index 080a1a66a7a..10feadf2cc8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingMapper.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingMapper.java @@ -57,7 +57,7 @@ protected void setup(Context context) throws IOException, InterruptedException { @Override protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(value.getRow()); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(value); byte[] column = FillMissingFromArchiveTask.getArchiveVariantColumn(variant); long sliceId = rowKeyFactory.getSliceId(variant.getStart()); String chromosome = variant.getChromosome(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java index 0d1e45f40be..cbf0952a876 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java @@ -52,8 +52,8 @@ public void run(Context context) throws IOException, InterruptedException { // Sort buffer if (buffer.size() > 1) { buffer.sort((o1, o2) -> { - Variant v1 = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(o1.getSecond().getRow()); - Variant v2 = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(o2.getSecond().getRow()); + Variant v1 = VariantPhoenixKeyFactory.extractVariantFromResult(o1.getSecond()); + Variant v2 = VariantPhoenixKeyFactory.extractVariantFromResult(o2.getSecond()); return SampleIndexSchema.INTRA_CHROMOSOME_VARIANT_COMPARATOR.compare(v1, v2); }); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/AlleleCodec.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/AlleleCodec.java index 62f2443a947..587c8fbfac1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/AlleleCodec.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/AlleleCodec.java @@ -26,8 +26,8 @@ public static boolean validAllele(String allele) { } public static byte encode(String ref, String alt) { - byte refCode = encode(ref); - byte altCode = encode(alt); + byte refCode = encode(ref.charAt(0)); + byte altCode = encode(alt.charAt(0)); return join(refCode, altCode); } @@ -38,8 +38,8 @@ public static String[] decode(byte refAltCode) { }; } - public static byte encode(String allele) { - switch (allele.charAt(0)) { + public static byte encode(char allele) { + switch (allele) { case 'A': return 0b00; // 0 case 'C': diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java index d8961251205..83e9dec3900 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java @@ -645,7 +645,7 @@ private Variant toVariantEncodedAlleles(String chromosome, int batchStart, byte[ String[] refAlt = AlleleCodec.decode(bytes[offset]); int start = batchStart + (read24bitInteger(bytes, offset) & 0x0F_FF_FF); - return VariantPhoenixKeyFactory.buildVariant(chromosome, start, refAlt[0], refAlt[1], null); + return VariantPhoenixKeyFactory.buildVariant(chromosome, start, refAlt[0], refAlt[1], null, null); } private Variant toVariant(String chromosome, int batchStart, byte[] bytes, int offset, int referenceLength, int alternateLength) { @@ -655,7 +655,7 @@ private Variant toVariant(String chromosome, int batchStart, byte[] bytes, int o offset += referenceLength + SEPARATOR_LENGTH; // add reference, and separator String alternate = readString(bytes, offset, alternateLength); - return VariantPhoenixKeyFactory.buildVariant(chromosome, start, reference, alternate, null); + return VariantPhoenixKeyFactory.buildVariant(chromosome, start, reference, alternate, null, null); } private int readNextSeparator(byte[] bytes, int offset) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java index 2efd1115846..9790f5b99b1 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java @@ -7,6 +7,7 @@ import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.mapreduce.TableRecordReader; +import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.opencb.biodata.models.core.Region; @@ -186,9 +187,9 @@ public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws startChr = null; start = 0; } else { - Variant startVariant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(firstRow); - startChr = startVariant.getChromosome(); - start = startVariant.getStart(); + Pair startLocus = VariantPhoenixKeyFactory.extractChrPosFromVariantRowKey(firstRow); + startChr = startLocus.getFirst(); + start = startLocus.getSecond(); } String stopChr; Integer end; @@ -197,9 +198,9 @@ public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws stopChr = null; end = Integer.MAX_VALUE; } else { - Variant stopVariant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(lastRow); - stopChr = stopVariant.getChromosome(); - end = stopVariant.getStart(); + Pair stopLocus = VariantPhoenixKeyFactory.extractChrPosFromVariantRowKey(firstRow); + stopChr = stopLocus.getFirst(); + end = stopLocus.getSecond(); } List regions = new ArrayList<>(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsDescriptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsDescriptor.java index 152c0a86c3c..972f1aeecfe 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsDescriptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsDescriptor.java @@ -35,6 +35,13 @@ default boolean createTableIfNeeded(HBaseVariantTableNameGenerator generator, HB boolean createTableIfNeeded(String tableName, HBaseManager hBaseManager) throws IOException; + /** + * Configure the scan to read from the variants table. + * + * @param scan Scan to configure + * @param metadataManager Metadata manager + * @return The same scan object + */ Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManager); Function getPendingEvaluatorMapper(VariantStorageMetadataManager metadataManager, boolean overwrite); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsReader.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsReader.java index 3a58ebdb1bd..54d93c5c6ba 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsReader.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/pending/PendingVariantsReader.java @@ -52,7 +52,7 @@ public boolean pre() { protected List convert(List results) { List variants = new ArrayList<>(results.size()); for (Result result : results) { - variants.add(VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(result.getRow())); + variants.add(VariantPhoenixKeyFactory.extractVariantFromResult(result)); } return variants; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java index a2ff5f08b4a..cf404e1daf5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java @@ -23,7 +23,6 @@ import org.opencb.opencga.storage.core.metadata.models.VariantScoreMetadata; import org.opencb.opencga.storage.hadoop.variant.AbstractVariantsTableDriver; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.PhoenixHelper; -import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixKeyFactory; import org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix.VariantPhoenixSchema; import org.opencb.opencga.storage.hadoop.variant.converters.VariantRow; import org.opencb.opencga.storage.hadoop.variant.mr.VariantMapReduceUtil; @@ -37,6 +36,7 @@ import java.lang.invoke.MethodHandles; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static org.opencb.biodata.models.variant.StudyEntry.DEFAULT_COHORT; @@ -45,6 +45,7 @@ public class VariantPruneDriver extends AbstractVariantsTableDriver { private Logger logger = LoggerFactory.getLogger(VariantPruneManager.class); + public static final String ATTRIBUTE_DELETION_VARIANT = "d_variant"; public static final String ATTRIBUTE_DELETION_STUDIES = "d_studies"; public static final String ATTRIBUTE_DELETION_TYPE = "d_type"; public static final byte[] ATTRIBUTE_DELETION_TYPE_FULL = Bytes.toBytes(VariantPruneReportRecord.Type.FULL.toString()); @@ -210,7 +211,7 @@ protected void map(ImmutableBytesWritable key, Result value, Context context) List emptyStudies = new ArrayList<>(); List studies = new ArrayList<>(); List studiesWithStats = new ArrayList<>(); - + AtomicReference alleles = new AtomicReference<>(); Variant variant = variantRow.walker() .onStudy(studies::add) .onCohortStats(c -> { @@ -220,6 +221,7 @@ protected void map(ImmutableBytesWritable key, Result value, Context context) emptyStudies.add(c.getStudyId()); } }) + .onAlleles(alleles::set) .walk(); for (Integer studyWithStats : studiesWithStats) { @@ -253,13 +255,18 @@ protected void map(ImmutableBytesWritable key, Result value, Context context) // Drop variant && add to deleted variants list context.getCounter(COUNTER_GROUP_NAME, "variants_deleted").increment(1); - context.write(pendingDeletionVariantsTable, - new Put(value.getRow()).addColumn(COLUMN_FAMILY_BYTES, COLUMN, VALUE)); + Put put = new Put(value.getRow()) + .addColumn(COLUMN_FAMILY_BYTES, COLUMN, VALUE); + if (alleles.get() != null) { + put.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes(), Bytes.toBytes(alleles.get())); + } + context.write(pendingDeletionVariantsTable, put); context.write(pendingAnnotationVariantsTable, new Delete(value.getRow())); Delete delete = new Delete(value.getRow()); delete.addFamily(COLUMN_FAMILY_BYTES); + delete.setAttribute(ATTRIBUTE_DELETION_VARIANT, Bytes.toBytes(variant.toString())); delete.setAttribute(ATTRIBUTE_DELETION_TYPE, ATTRIBUTE_DELETION_TYPE_FULL); delete.setAttribute(ATTRIBUTE_DELETION_STUDIES, Bytes.toBytes(emptyStudies.stream() @@ -285,12 +292,16 @@ protected void map(ImmutableBytesWritable key, Result value, Context context) // This block is here to prevent accidental "full row" deletes. throw new IllegalStateException("Unexpected empty delete at partial variant prune in variant " + variant); } + delete.setAttribute(ATTRIBUTE_DELETION_VARIANT, Bytes.toBytes(variant.toString())); delete.setAttribute(ATTRIBUTE_DELETION_TYPE, ATTRIBUTE_DELETION_TYPE_PARTIAL); delete.setAttribute(ATTRIBUTE_DELETION_STUDIES, Bytes.toBytes(emptyStudies.stream().map(Object::toString).collect(Collectors.joining(",")))); Put updateSecondaryIndexColumns = new Put(value.getRow()); - + if (alleles.get() != null) { + updateSecondaryIndexColumns.addColumn(COLUMN_FAMILY_BYTES, + VariantPhoenixSchema.VariantColumn.ALLELES.bytes(), Bytes.toBytes(alleles.get())); + } HadoopVariantSearchIndexUtils.addNotSyncStatus(updateSecondaryIndexColumns); context.write(variantsTable, delete); @@ -360,8 +371,7 @@ public ReportRecordWriter(DataOutputStream out, ImmutableBytesWritable variantsT public synchronized void write(ImmutableBytesWritable key, Mutation mutation) throws IOException { if (mutation instanceof Delete && key.equals(variantsTable)) { - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(mutation.getRow()); - out.write(variant.toString().getBytes(StandardCharsets.UTF_8)); + out.write(mutation.getAttribute(ATTRIBUTE_DELETION_VARIANT)); out.write(SEPARATOR); out.write(mutation.getAttribute(ATTRIBUTE_DELETION_TYPE)); out.write(SEPARATOR); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneManager.java index 93d6801d448..43299e6e503 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneManager.java @@ -205,7 +205,7 @@ private void checkReportedVariants(Path report, long count) throws IOException, Result[] get = table.get(gets); for (int i = 0; i < get.length; i++) { Result result = get[i]; - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(result.getRow()); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(result); VariantPruneReportRecord record = batch.get(i); if (!variant.sameGenomicVariant(record.getVariant())) { throw new IllegalStateException("Error checking report! Expected " diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java index 604611ca93c..0f54668b988 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/search/SecondaryIndexPendingVariantsDescriptor.java @@ -54,6 +54,7 @@ public boolean createTableIfNeeded(String tableName, HBaseManager hBaseManager) @Override public Scan configureScan(Scan scan, VariantStorageMetadataManager metadataManager) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, ALLELES.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, FULL_ANNOTATION.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, ANNOTATION_ID.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, INDEX_NOT_SYNC.bytes()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/CheckVariantStatsDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/CheckVariantStatsDriver.java index 091a93eef54..c39ade7a754 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/CheckVariantStatsDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/CheckVariantStatsDriver.java @@ -369,7 +369,7 @@ protected void setup(Context context) throws IOException, InterruptedException { @Override protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(value.getRow()); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(value); VariantType type = variant.getType(); int chromosomeIdx = FileStatsWritable.getChromosomeIdx(variant.getChromosome()); for (Cell cell : value.rawCells()) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsFromResultMapper.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsFromResultMapper.java index 28b0115a326..7bc90517688 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsFromResultMapper.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsFromResultMapper.java @@ -165,7 +165,7 @@ public void run(Context context) throws IOException, InterruptedException { // } protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(value.getRow()); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(value); VariantStatsWrapper wrapper = new VariantStatsWrapper(variant, new ArrayList<>(calculators.size())); calculators.forEach((cohort, calculator) -> { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java index 09bbce14acd..e46e1bb6782 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java @@ -4,19 +4,19 @@ import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; -import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.core.testclassification.duration.LongTests; import org.opencb.opencga.storage.core.variant.VariantStorageEngineSVTest; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; -import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import static org.junit.Assert.assertEquals; @@ -45,17 +45,26 @@ public void checkSampleIndex() throws Exception { .includeSampleId(true) , new QueryOptions())) { Set samplesInVariant = new HashSet<>(); - for (String sample : metadataManager.getIndexedSamplesMap(studyMetadata.getId()).keySet()) { - QueryOptions options = new QueryOptions(VariantHadoopDBAdaptor.NATIVE, false); - VariantQueryResult result = variantStorageEngine.get(new Query() - .append(VariantQueryParam.SAMPLE.key(), sample) - .append(VariantQueryParam.ID.key(), variant.toString()), options); - String genotype = variant.getStudies().get(0).getSample(sample).getData().get(0); - if (GenotypeClass.MAIN_ALT.test(genotype)) { - Assert.assertNotNull(result.first()); - samplesInVariant.add(sample); - } else { - Assert.assertNull("Sample=" + sample + " with GT=" + genotype + " in variant=" + variant, result.first()); + for (Map.Entry entry : metadataManager.getStudies().entrySet()) { + String studyName = entry.getKey(); + Integer studyId = entry.getValue(); + StudyEntry studyEntry = variant.getStudy(studyName); + if (studyEntry != null) { + for (String sample : metadataManager.getIndexedSamplesMap(studyId).keySet()) { + QueryOptions options = new QueryOptions(VariantHadoopDBAdaptor.NATIVE, false); + VariantQueryResult result = variantStorageEngine.get(new VariantQuery() + .study(studyName) + .id(variant.toString()) + .sample(sample), options); + String genotype = studyEntry.getSample(sample).getData().get(0); + String message = "Study=" + studyName + " Sample=" + sample + " with GT=" + genotype + " in variant=" + variant; + if (GenotypeClass.MAIN_ALT.test(genotype)) { + Assert.assertNotNull(message, result.first()); + samplesInVariant.add(sample); + } else { + Assert.assertNull(message, result.first()); + } + } } } List actualSampleNames = variantStorageEngine.getSampleData(variant.toString(), studyMetadata.getName(), new QueryOptions()).first().getSampleNames(studyMetadata.getName()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHadoopStoragePipelineTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHadoopStoragePipelineTest.java index 7abd5c71449..773f017a67c 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHadoopStoragePipelineTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHadoopStoragePipelineTest.java @@ -207,7 +207,7 @@ public void checkVariantTable() throws IOException { int num = 0; ResultScanner resultScanner = table.getScanner(GenomeHelper.COLUMN_FAMILY_BYTES); for (Result result : resultScanner) { - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(result.getRow()); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(result); System.out.println("Variant = " + variant); num++; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java index 3557c5e55ff..0acd7cfa919 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/VariantHbaseTestUtils.java @@ -64,6 +64,7 @@ import java.io.*; import java.net.URI; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; @@ -72,7 +73,6 @@ import java.util.zip.DataFormatException; import static org.opencb.opencga.storage.core.variant.VariantStorageBaseTest.getTmpRootDir; -import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageTest.configuration; /** * Utility class for VariantStorage hadoop tests @@ -159,7 +159,7 @@ public static void printVariantsFromVariantsTable(VariantHadoopDBAdaptor dbAdapt for (Result result : resultScanner) { Variant variant; try { - variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(result.getRow()); + variant = VariantPhoenixKeyFactory.extractVariantFromResult(result); } catch (RuntimeException e) { os.println(Arrays.toString(result.getRow())); os.println("--------------------"); @@ -406,7 +406,7 @@ public static void printVariants(Collection studies, VariantHadoo } private static void printVcf(StudyMetadata studyMetadata, VariantHadoopDBAdaptor dbAdaptor, Path outDir) throws IOException { - try (OutputStream os = new FileOutputStream(outDir.resolve("variant." + studyMetadata.getName() + ".vcf").toFile())) { + try (OutputStream os = Files.newOutputStream(outDir.resolve("variant." + studyMetadata.getName() + ".vcf"))) { Query query = new Query(VariantQueryParam.STUDY.key(), studyMetadata.getName()) .append(VariantQueryParam.INCLUDE_SAMPLE.key(), ParamConstants.ALL) .append(VariantQueryParam.UNKNOWN_GENOTYPE.key(), "."); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java index 292b5c504a4..9e03dcca8b2 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java @@ -1,5 +1,9 @@ package org.opencb.opencga.storage.hadoop.variant.adaptors.phoenix; +import org.apache.commons.lang.RandomStringUtils; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.KeyValue; +import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.util.ByteStringer; import org.apache.hadoop.hbase.util.Bytes; @@ -11,7 +15,9 @@ import org.junit.experimental.categories.Category; import org.junit.rules.ExpectedException; import org.opencb.biodata.models.variant.Variant; +import org.opencb.biodata.models.variant.avro.StructuralVariation; import org.opencb.opencga.core.testclassification.duration.ShortTests; +import org.opencb.opencga.storage.hadoop.variant.GenomeHelper; import java.sql.SQLException; import java.util.*; @@ -53,6 +59,16 @@ public void testStructuralVariantRowKey() throws Exception { checkVariantRowKeyGeneration(new Variant("5:100:A:A]:chr5:234]")); } + @Test + public void testExtraLargeVariantRowKey() throws Exception { + String allele1 = RandomStringUtils.random(50000, "ACGT"); + checkVariantRowKeyGeneration(new Variant("5:1000:-:" + allele1)); + StructuralVariation sv = new StructuralVariation(); + sv.setLeftSvInsSeq(allele1); + sv.setRightSvInsSeq(allele1); + checkVariantRowKeyGeneration(new Variant("5:1000:A:").setSv(sv)); + } + @Test public void testExtractChrPosFromVariantRowKeyPartial() { byte[] phoenixRowKey = VariantPhoenixKeyFactory.generateVariantRowKey("1", 20 << 16); @@ -72,16 +88,23 @@ public void checkVariantRowKeyGeneration(Variant variant) { // System.out.println("expected = " + Bytes.toStringBinary(phoenixRowKey)); byte[] variantRowkey = VariantPhoenixKeyFactory.generateVariantRowKey(variant); + byte[] alleles = Bytes.toBytes(VariantPhoenixKeyFactory.buildAlleles(variant)); // System.out.println("actual = " + Bytes.toStringBinary(variantRowkey)); - Variant generatedVariant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(variantRowkey); + Variant generatedVariant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(variantRowkey, null, alleles); + + Result result = Result.create(Collections.singletonList(new KeyValue(phoenixRowKey, GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes(), + alleles))); + + Variant generatedVariant2 = VariantPhoenixKeyFactory.extractVariantFromResult(result); assertArrayEquals(variant.toString(), phoenixRowKey, variantRowkey); assertEquals(variant, generatedVariant); + assertEquals(variant, generatedVariant2); } public byte[] generateVariantRowKeyPhoenix(Variant variant) { - Set nullableColumn = new HashSet<>(Arrays.asList( + Set nullableColumn = new HashSet<>(Arrays.asList( VariantPhoenixSchema.VariantColumn.REFERENCE, VariantPhoenixSchema.VariantColumn.ALTERNATE )); @@ -104,12 +127,23 @@ public byte[] generateVariantRowKeyPhoenix(Variant variant) { } ImmutableBytesWritable key = new ImmutableBytesWritable(); + String reference = variant.getReference(); + String alternate = VariantPhoenixKeyFactory.buildSymbolicAlternate(reference, variant.getAlternate(), variant.getEnd(), variant.getSv()); table.newKey(key, new byte[][]{ Bytes.toBytes(variant.getChromosome()), Bytes.toBytes(variant.getStart()), - Bytes.toBytes(variant.getReference()), - Bytes.toBytes(VariantPhoenixKeyFactory.buildSymbolicAlternate(variant.getReference(), variant.getAlternate(), variant.getEnd(), variant.getSv())), + Bytes.toBytes(reference), + Bytes.toBytes(alternate), }); + if (key.getLength() > HConstants.MAX_ROW_LENGTH) { + key = new ImmutableBytesWritable(); + table.newKey(key, new byte[][]{ + Bytes.toBytes(variant.getChromosome()), + Bytes.toBytes(variant.getStart()), + Bytes.toBytes(VariantPhoenixKeyFactory.hashAllele(reference)), + Bytes.toBytes(VariantPhoenixKeyFactory.hashAllele(alternate)), + }); + } if (key.getLength() == key.get().length) { return key.get(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java index a2e6699180d..fdb5d42f1b9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/gaps/FillGapsTest.java @@ -356,8 +356,7 @@ private void checkInputValuesAreUnmodified(String aggregatedStudy, String refere dbAdaptor.getHBaseManager().act(dbAdaptor.getVariantTable(), table -> { table.getScanner(new Scan()).iterator().forEachRemaining(r -> { - byte[] row = r.getRow(); - Variant variant = VariantPhoenixKeyFactory.extractVariantFromVariantRowKey(row); + Variant variant = VariantPhoenixKeyFactory.extractVariantFromResult(r); NavigableMap cells = r.getFamilyMap(GenomeHelper.COLUMN_FAMILY_BYTES); for (Map.Entry entry : cells.entrySet()) { From 4b2b4e85119fc6a68122aa61446271972d30dacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 10 May 2024 18:20:45 +0100 Subject: [PATCH 299/354] app: Add migration to register new ALLELES column to phoenix. #TASK-6005 --- .../storage/AddAllelesColumnToPhoenix.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/AddAllelesColumnToPhoenix.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/AddAllelesColumnToPhoenix.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/AddAllelesColumnToPhoenix.java new file mode 100644 index 00000000000..c71f0483427 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/AddAllelesColumnToPhoenix.java @@ -0,0 +1,27 @@ +package org.opencb.opencga.app.migrations.v2_12_5.storage; + +import org.opencb.opencga.app.migrations.StorageMigrationTool; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.storage.core.variant.VariantStorageEngine; + +@Migration(id="add_missing_column_to_phoenix_TASK-6005", description = "Add missing ALLELES column to phoenix #TASK-6005", + version = "2.12.5", domain = Migration.MigrationDomain.STORAGE, date = 20240510 +) +public class AddAllelesColumnToPhoenix extends StorageMigrationTool { + + @Override + protected void run() throws Exception { + for (String project : getVariantStorageProjects()) { + VariantStorageEngine engine = getVariantStorageEngineByProject(project); + if (engine.getStorageEngineId().equals("hadoop")) { + logger.info("Adding missing columns (if any) for project " + project); + // Using same class for both migrations + Class aClass = Class.forName("org.opencb.opencga.storage.hadoop.variant.migration.v2_3_0.AddMissingColumns"); + Runnable runnable = (Runnable) aClass + .getConstructor(Object.class) + .newInstance(engine); + runnable.run(); + } + } + } +} \ No newline at end of file From 899cadd4c1f813d99949e534172858db825125c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 14 May 2024 10:37:33 +0100 Subject: [PATCH 300/354] storage: Fix sampleData query with hashed alleles. #TASK-6005 --- .../phoenix/VariantPhoenixKeyFactory.java | 29 +++++++++++++-- .../sample/HBaseVariantSampleDataManager.java | 16 ++++----- .../hadoop/variant/converters/VariantRow.java | 35 +++++++++++++++---- .../HadoopVariantStorageEngineSVTest.java | 11 ++++-- 4 files changed, 73 insertions(+), 18 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java index 1d78af0d860..f61cfdcc464 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java @@ -65,6 +65,26 @@ public static byte[] generateVariantRowKey(Variant var) { var.getSv()); } + public static byte[] generateVariantRowKey(ResultSet resultSet) { + String chromosome = null; + Integer start = null; + String reference = null; + String alternate = null; + try { + chromosome = resultSet.getString(VariantPhoenixSchema.VariantColumn.CHROMOSOME.column()); + start = resultSet.getInt(VariantPhoenixSchema.VariantColumn.POSITION.column()); + reference = resultSet.getString(VariantPhoenixSchema.VariantColumn.REFERENCE.column()); + alternate = resultSet.getString(VariantPhoenixSchema.VariantColumn.ALTERNATE.column()); + + return generateVariantRowKey(chromosome, start, null, reference, alternate, null); + } catch (RuntimeException | SQLException e) { + throw new IllegalStateException("Fail to generate row key from Phoenix result set: " + chromosome + + ':' + start + + ':' + (reference == null ? "-" : reference) + + ':' + (alternate == null ? "-" : alternate), e); + } + } + public static byte[] generateVariantRowKey(VariantAnnotation variantAnnotation) { byte[] bytesRowKey = null; if (variantAnnotation.getAdditionalAttributes() != null) { @@ -104,11 +124,11 @@ public static byte[] generateSimpleVariantRowKey(String chrom, int position, Str } public static boolean mightHashAlleles(Variant variant) { - String alt = buildSymbolicAlternate(variant.getReference(), variant.getAlternate(), variant.getEnd(), variant.getSv()); - int size = getSize(variant.getChromosome(), variant.getReference(), variant.getAlternate()); + int size = getSize(variant); return size > HConstants.MAX_ROW_LENGTH; } + /** * Generates a Row key based on Chromosome, start, end (optional), ref and alt.
    *
      @@ -155,6 +175,11 @@ public static byte[] generateVariantRowKey(String chrom, int start, Integer end, return rk; } + private static int getSize(Variant variant) { + String symbolicAlternate = buildSymbolicAlternate(variant); + return getSize(variant.getChromosome(), variant.getReference(), symbolicAlternate); + } + private static int getSize(String chrom, String ref, String alt) { int size = PVarchar.INSTANCE.estimateByteSizeFromLength(chrom.length()) + QueryConstants.SEPARATOR_BYTE_ARRAY.length diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index 6f426b59c43..65bff54948f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -127,7 +127,7 @@ protected DataResult getSampleData(Variant variant, String study, Query samples.add(sampleColumn.getSampleId()); sampleDataMap.add(sampleColumn); } - }).walk(); + }).walk(variant); } }); @@ -138,8 +138,7 @@ protected DataResult getSampleData(Variant variant, String study, Query List stats = new LinkedList<>(); dbAdaptor.getHBaseManager().act(dbAdaptor.getVariantTable(), table -> { Get get = new Get(VariantPhoenixKeyFactory.generateVariantRowKey(variant)); - get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); - get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + // Add file columns for (Integer fileId : fileIdsFromSampleIds) { get.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.buildFileColumnKey(studyId, fileId)); @@ -178,7 +177,7 @@ protected DataResult getSampleData(Variant variant, String study, Query ImmutableBytesWritable b = column.toBytesWritable(); variant.setAnnotation(new HBaseToVariantAnnotationConverter().convert(b.get(), b.getOffset(), b.getLength())); }) - .walk(); + .walk(variant); }); // Convert to VariantSampleData @@ -194,13 +193,14 @@ protected DataResult getSampleData(Variant variant, String study, Query new ArrayList<>(fileIdsFromSampleIds))) .build()); - StudyEntry studyEntry = converter.convert(sampleDataMap, filesMap, variant, studyId); + Variant variantResult = new Variant(variant.toString()); + StudyEntry studyEntry = converter.convert(sampleDataMap, filesMap, variantResult, studyId); - variant.addStudyEntry(studyEntry); + variantResult.addStudyEntry(studyEntry); studyEntry.setStats(stats); -// String msg = "Queries : " + queries + " , readSamples : " + readSamples; + return new DataResult<>((int) stopWatch.getTime(TimeUnit.MILLISECONDS), Collections.emptyList(), 1, - Collections.singletonList(variant), 1); + Collections.singletonList(variantResult), 1); } catch (IOException e) { throw VariantQueryException.internalException(e); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java index f3700d24d15..6f4ee0ad344 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/converters/VariantRow.java @@ -64,8 +64,6 @@ public static VariantRowWalkerBuilder walker(ResultSet resultSet) { public Variant getVariant() { if (variant == null) { if (result != null) { - byte[] row = result.getRow(); - Objects.requireNonNull(row, "Empty result. Missing variant rowkey."); variant = VariantPhoenixKeyFactory.extractVariantFromResult(result); } else { variant = VariantPhoenixKeyFactory.extractVariantFromResultSet(resultSet); @@ -104,11 +102,27 @@ public VariantRowWalkerBuilder walker() { } public void walk(VariantRowWalker walker) { - walk(walker, true, true, true, true, true); + walk(walker, true, true, true, true, true, null); } - protected void walk(VariantRowWalker walker, boolean file, boolean sample, boolean cohort, boolean score, boolean annotation) { - walker.variant(getVariant()); + protected void walk(VariantRowWalker walker, boolean file, boolean sample, boolean cohort, boolean score, boolean annotation, + Variant variant) { + if (variant == null) { + variant = getVariant(); + } else { + byte[] expectedRow = VariantPhoenixKeyFactory.generateVariantRowKey(variant); + byte[] actualRow; + if (result != null) { + actualRow = result.getRow(); + } else { + actualRow = VariantPhoenixKeyFactory.generateVariantRowKey(resultSet); + } + if (!Bytes.equals(expectedRow, actualRow)) { + throw new IllegalStateException("Expected row " + + Bytes.toStringBinary(expectedRow) + " but got " + Bytes.toStringBinary(actualRow)); + } + } + walker.variant(variant); if (resultSet != null) { try { ResultSetMetaData metaData = resultSet.getMetaData(); @@ -280,10 +294,19 @@ public Variant walk() { hasSampleConsumer, hasStatsConsumer, hasVariantScoreConsumer, - hasVariantAnnotationConsummer); + hasVariantAnnotationConsummer, null); return getVariant(); } + public void walk(Variant variant) { + VariantRow.this.walk(this, + hasFileConsumer, + hasSampleConsumer, + hasStatsConsumer, + hasVariantScoreConsumer, + hasVariantAnnotationConsummer, variant); + } + public VariantRowWalkerBuilder onStudy(IntConsumer consumer) { studyConsumer = consumer; return this; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java index e46e1bb6782..a6f5611df09 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java @@ -13,6 +13,8 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.hadoop.variant.adaptors.VariantHadoopDBAdaptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.HashSet; import java.util.List; @@ -31,6 +33,7 @@ public class HadoopVariantStorageEngineSVTest extends VariantStorageEngineSVTest @ClassRule public static HadoopExternalResource externalResource = new HadoopExternalResource(); + private Logger logger = LoggerFactory.getLogger(getClass()); @Override protected void loadFiles() throws Exception { @@ -65,10 +68,14 @@ public void checkSampleIndex() throws Exception { Assert.assertNull(message, result.first()); } } + logger.info("Variant " + variant + " with samples " + samplesInVariant); + logger.info("Query variant " + variant + " in study " + studyName + " from sampleData"); + Variant sampleDataVariant = variantStorageEngine.getSampleData(variant.toString(), studyName, new QueryOptions()).first(); + List actualSampleNames = sampleDataVariant.getSampleNames(studyName); + logger.info("Variant " + variant + " with actual samples " + actualSampleNames); + Assert.assertEquals(samplesInVariant, new HashSet<>(actualSampleNames)); } } - List actualSampleNames = variantStorageEngine.getSampleData(variant.toString(), studyMetadata.getName(), new QueryOptions()).first().getSampleNames(studyMetadata.getName()); - Assert.assertEquals(samplesInVariant, new HashSet<>(actualSampleNames)); } } From ae5340cdea3c522028834bf8af03c1f26aa29b5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 14 May 2024 10:48:27 +0100 Subject: [PATCH 301/354] storage: Add missing id to variants from sampleData query. #TASK-6005 --- .../variant/adaptors/sample/HBaseVariantSampleDataManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index 65bff54948f..659e401d88e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -194,6 +194,7 @@ protected DataResult getSampleData(Variant variant, String study, Query .build()); Variant variantResult = new Variant(variant.toString()); + variantResult.setId(variant.toString()); StudyEntry studyEntry = converter.convert(sampleDataMap, filesMap, variantResult, studyId); variantResult.addStudyEntry(studyEntry); From 9516a2f2b57edabf00139b1f8d616b9c1dd3faeb Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 14 May 2024 13:11:53 +0200 Subject: [PATCH 302/354] pom: Prepare Port Patch 1.10.4.1 -> 1.10.5 #TASK-6231 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index e6ff1cdab39..0e8c8b94814 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 8338fed6637..ae72959c680 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 3c04b120d94..120850f20f8 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 6bfc198dbd2..dfe20bc1c6d 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 091f182629c..e17ae02a3c5 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index aa0b7536f33..f64f0c82cd5 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 7d734c21008..3010de9e741 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 995f35ba347..35730710dd5 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 94bff4c00ef..dee5f5ab22d 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 40cf18bfb8c..f566fb8d61a 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index ccf5ad0c257..d2569f51505 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ded68c578bf..98684f89345 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 28d392a9ea7..c40bd0c545e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 5c40b34b0b9..f2ab268c070 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index ed33bf0043b..c78627c4980 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index bb718594f50..5f0d66e4a26 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 510bd72eaac..ede0e9d5479 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index a3fe6497eb8..46032914536 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 3284f8c8670..b318a6c26bb 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 6baa1797a71..ae075a55888 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 60f9eabe132..2f28d2235d5 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.4.1 + 2.12.5-SNAPSHOT pom OpenCGA From fcd121aae1e21203a785e05ed14a37dd87a66dfb Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 14 May 2024 13:14:06 +0200 Subject: [PATCH 303/354] pom: Prepare Port Patch 1.10.4.1 -> 1.10.5 #TASK-6231 --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 2f28d2235d5..29536c3be50 100644 --- a/pom.xml +++ b/pom.xml @@ -43,12 +43,12 @@ - - 2.12.4.1 - 5.8.3 - 2.12.2 - 4.12.0 - 2.12.4 + 2.12.5_dev + 2.12.5_dev + 5.8.4-SNAPSHOT + 2.12.3-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.5-SNAPSHOT 0.2.0 2.11.4 From 1ffe645441c58cf4d673732a5e1fd5b8a1f3ddb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 14 May 2024 14:02:34 +0100 Subject: [PATCH 304/354] storage: Ensure MR jobs read ALLELES column when needed. #TASK-6005 --- .../variant/VariantStorageEngineSVTest.java | 6 +++++- .../variant/analysis/julie/JulieToolDriver.java | 2 ++ .../mr/VariantAnnotationRebuilderDriver.java | 2 ++ .../variant/gaps/PrepareFillMissingDriver.java | 2 ++ .../mr/SampleIndexAnnotationLoaderDriver.java | 2 ++ .../mr/VariantTableSampleIndexOrderMapper.java | 17 ++++++++++++----- .../variant/index/family/FamilyIndexDriver.java | 3 ++- .../variant/index/sample/SampleIndexDriver.java | 15 ++++++++++----- .../variant/prune/VariantPruneDriver.java | 2 ++ .../variant/stats/SaturationStatsDriver.java | 1 + .../variant/stats/VariantHistogramDriver.java | 3 ++- .../variant/stats/VariantStatsDriver.java | 1 + .../HadoopVariantStorageEngineSVTest.java | 12 ++++++++---- 13 files changed, 51 insertions(+), 17 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java index 44ccd4f305a..64fc14c4c6a 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java @@ -70,18 +70,22 @@ protected void loadFiles() throws Exception { variantStorageEngine.getOptions().append(VariantStorageOptions.ANNOTATOR_CELLBASE_EXCLUDE.key(), "expression,clinical"); pipelineResult1 = runDefaultETL(input1, variantStorageEngine, studyMetadata, new QueryOptions() .append(VariantStorageOptions.ANNOTATE.key(), true) + .append(VariantStorageOptions.STATS_CALCULATE.key(), true) .append(VariantStorageOptions.ASSEMBLY.key(), "grch38") ); input2 = getResourceUri("variant-test-sv_2.vcf"); pipelineResult2 = runDefaultETL(input2, variantStorageEngine, studyMetadata, new QueryOptions() .append(VariantStorageOptions.ANNOTATE.key(), true) + .append(VariantStorageOptions.STATS_CALCULATE.key(), true) .append(VariantStorageOptions.ASSEMBLY.key(), "grch38")); input3 = getResourceUri("variant-test-sv-large.vcf"); studyMetadata2 = new StudyMetadata(2, "s2"); pipelineResult3 = runDefaultETL(input3, variantStorageEngine, studyMetadata2, new QueryOptions() - .append(VariantStorageOptions.ANNOTATE.key(), false) + .append(VariantStorageOptions.ANNOTATE.key(), true) + .append(VariantStorageOptions.STATS_CALCULATE.key(), true) .append(VariantStorageOptions.ASSEMBLY.key(), "grch38")); + } @Test diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java index 4442bf48927..5192e7356f9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/analysis/julie/JulieToolDriver.java @@ -79,6 +79,8 @@ protected void parseAndValidateParameters() throws IOException { @Override protected Job setupJob(Job job, String archiveTable, String variantTable) throws IOException { Scan scan = new Scan(); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.FULL_ANNOTATION.bytes()); for (Map.Entry> entry : cohorts.entrySet()) { Integer studyId = entry.getKey(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/mr/VariantAnnotationRebuilderDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/mr/VariantAnnotationRebuilderDriver.java index 5690b374981..eb4bdc5b4eb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/mr/VariantAnnotationRebuilderDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/annotation/mr/VariantAnnotationRebuilderDriver.java @@ -68,6 +68,8 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws logger.info("Regenerate annotations for region " + region); VariantHBaseQueryParser.addRegionFilter(scan, new Region(region)); } + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.FULL_ANNOTATION.bytes()); VariantMapReduceUtil.configureMapReduceScan(scan, getConf()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingDriver.java index aea25583571..d760ab4543a 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/PrepareFillMissingDriver.java @@ -62,6 +62,8 @@ protected Job setupJob(Job job, String archiveTableName, String variantTableName scan.setCacheBlocks(false); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStudyColumn(getStudyId()).bytes()); scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getFillMissingColumn(getStudyId()).bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); LOG.info(scan.toString()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/SampleIndexAnnotationLoaderDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/SampleIndexAnnotationLoaderDriver.java index 41826fd4abe..9f593f928c6 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/SampleIndexAnnotationLoaderDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/SampleIndexAnnotationLoaderDriver.java @@ -138,6 +138,8 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws } } scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.FULL_ANNOTATION.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); SampleIndexAnnotationLoaderMapper.setHasGenotype(job, hasGenotype); SampleIndexAnnotationLoaderMapper.setMultiFileSamples(job, multiFileSamples); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java index cbf0952a876..ab9fc2a1d82 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/annotation/mr/VariantTableSampleIndexOrderMapper.java @@ -51,11 +51,7 @@ public void run(Context context) throws IOException, InterruptedException { // Current result does not start in the previous position. // Sort buffer if (buffer.size() > 1) { - buffer.sort((o1, o2) -> { - Variant v1 = VariantPhoenixKeyFactory.extractVariantFromResult(o1.getSecond()); - Variant v2 = VariantPhoenixKeyFactory.extractVariantFromResult(o2.getSecond()); - return SampleIndexSchema.INTRA_CHROMOSOME_VARIANT_COMPARATOR.compare(v1, v2); - }); + sortBuffer(buffer); } if (!buffer.isEmpty()) { @@ -82,6 +78,9 @@ public void run(Context context) throws IOException, InterruptedException { } } countBufferSize(context, buffer.size(), chromosome, position); + if (buffer.size() > 1) { + sortBuffer(buffer); + } for (Pair pair : buffer) { this.map(pair.getFirst(), pair.getSecond(), context); } @@ -92,6 +91,14 @@ public void run(Context context) throws IOException, InterruptedException { } } + private static void sortBuffer(List> buffer) { + buffer.sort((o1, o2) -> { + Variant v1 = VariantPhoenixKeyFactory.extractVariantFromResult(o1.getSecond()); + Variant v2 = VariantPhoenixKeyFactory.extractVariantFromResult(o2.getSecond()); + return SampleIndexSchema.INTRA_CHROMOSOME_VARIANT_COMPARATOR.compare(v1, v2); + }); + } + private void countBufferSize(Context context, int size, String chromosome, int position) { String counterName; if (size < 5) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java index ada52270419..af632d69436 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java @@ -226,7 +226,8 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws } } } -// scan.addColumn(getHelper().getColumnFamily(), VariantPhoenixHelper.VariantColumn.FULL_ANNOTATION.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); VariantMapReduceUtil.configureMapReduceScan(scan, getConf()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDriver.java index d8488e87a8e..7b51d99fb85 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexDriver.java @@ -7,10 +7,7 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.exceptions.IllegalArgumentIOException; -import org.apache.hadoop.hbase.filter.BinaryPrefixComparator; -import org.apache.hadoop.hbase.filter.FilterList; -import org.apache.hadoop.hbase.filter.QualifierFilter; -import org.apache.hadoop.hbase.filter.ValueFilter; +import org.apache.hadoop.hbase.filter.*; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.mapreduce.InputFormat; @@ -200,7 +197,7 @@ protected void parseAndValidateParameters() throws IOException { @Override protected Job setupJob(Job job, String archiveTable, String table) throws IOException { - FilterList filter = new FilterList(FilterList.Operator.MUST_PASS_ALL, + FilterList filterGt = new FilterList(FilterList.Operator.MUST_PASS_ALL, new QualifierFilter(EQUAL, new BinaryPrefixComparator(Bytes.toBytes(VariantPhoenixSchema.buildStudyColumnsPrefix(study)))), new ValueFilter(NOT_EQUAL, new BinaryPrefixComparator(new byte[]{'0', '|', '0', SEPARATOR_BYTE})), new ValueFilter(NOT_EQUAL, new BinaryPrefixComparator(new byte[]{'0', '/', '0', SEPARATOR_BYTE})), @@ -208,6 +205,10 @@ protected Job setupJob(Job job, String archiveTable, String table) throws IOExce new ValueFilter(NOT_EQUAL, new BinaryPrefixComparator(new byte[]{'.', '|', '.', SEPARATOR_BYTE})), new ValueFilter(NOT_EQUAL, new BinaryPrefixComparator(new byte[]{'.', SEPARATOR_BYTE})) ); + FilterList filter = new FilterList(FilterList.Operator.MUST_PASS_ONE, + new QualifierFilter(EQUAL, new BinaryComparator(VariantPhoenixSchema.VariantColumn.ALLELES.bytes())), + filterGt + ); List scans; if (multiScan) { @@ -220,6 +221,8 @@ protected Job setupJob(Job job, String archiveTable, String table) throws IOExce if (StringUtils.isNotEmpty(region)) { VariantHBaseQueryParser.addRegionFilter(scan, Region.parseRegion(region)); } + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); scan.setFilter(filter); scans.add(scan); for (int sample : samplesSubSet) { @@ -247,6 +250,8 @@ protected Job setupJob(Job job, String archiveTable, String table) throws IOExce VariantHBaseQueryParser.addRegionFilter(scan, Region.parseRegion(region)); } scan.setFilter(filter); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); int approxExpectedNumColumns = sampleIds.size() diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java index cf404e1daf5..fddaa7c189e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/prune/VariantPruneDriver.java @@ -96,6 +96,8 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE); scan.setFilter(filterList); + scan.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); scan.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.INDEX_NOT_SYNC.bytes()); scan.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.INDEX_UNKNOWN.bytes()); scan.addColumn(COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.INDEX_STUDIES.bytes()); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/SaturationStatsDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/SaturationStatsDriver.java index 100f1f7f73d..0c509a0d7e7 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/SaturationStatsDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/SaturationStatsDriver.java @@ -106,6 +106,7 @@ protected Job setupJob(Job job, String archiveTable, String variantTable) throws maxSampleId += maxSampleIdInStudy; } scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); // scan.setFilter(new KeyOnlyFilter()); scan.setFilter( diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantHistogramDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantHistogramDriver.java index 306a59faf7b..7c4db8f70d3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantHistogramDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantHistogramDriver.java @@ -76,7 +76,8 @@ protected void parseAndValidateParameters() throws IOException { protected Job setupJob(Job job, String archiveTable, String variantTable) throws IOException { Scan scan = new Scan(); - + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); for (Integer studyId : getMetadataManager().getStudyIds()) { scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.getStudyColumn(studyId).bytes()); } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsDriver.java index eb76771b159..c1dc34e2e21 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/stats/VariantStatsDriver.java @@ -178,6 +178,7 @@ protected Job setupJob(Job job, String archiveTableName, String variantTableName // See #1600 // Add TYPE column to force scan ALL rows to avoid unlikely but possible timeouts fetching new variants scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.TYPE.bytes()); + scan.addColumn(GenomeHelper.COLUMN_FAMILY_BYTES, VariantPhoenixSchema.VariantColumn.ALLELES.bytes()); // Remove STUDY filter scan.setFilter(null); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java index a6f5611df09..fbcbd773477 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSVTest.java @@ -16,12 +16,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import static org.junit.Assert.assertEquals; +import static org.opencb.opencga.core.api.ParamConstants.OVERWRITE; /** * Created on 26/06/18. @@ -41,6 +39,12 @@ protected void loadFiles() throws Exception { VariantHbaseTestUtils.printVariants(getVariantStorageEngine().getDBAdaptor(), newOutputUri(getTestName().getMethodName())); } + @Test + public void testRecreateSampleIndex() throws Exception { + variantStorageEngine.sampleIndex(studyMetadata.getName(), Collections.singletonList("all"), new QueryOptions(OVERWRITE, true)); + variantStorageEngine.sampleIndex(studyMetadata2.getName(), Collections.singletonList("all"), new QueryOptions(OVERWRITE, true)); + } + @Test public void checkSampleIndex() throws Exception { for (Variant variant : variantStorageEngine.iterable(new VariantQuery() From 84ecdc6324af2ed64512a7d38041a05c4029f974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 14 May 2024 14:24:03 +0100 Subject: [PATCH 305/354] storage: Fix AIOOBE parsing short rowkey #TASK-6005 --- .../variant/adaptors/phoenix/VariantPhoenixKeyFactory.java | 4 +++- .../adaptors/phoenix/VariantPhoenixKeyFactoryTest.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java index f61cfdcc464..9e06ebc4b51 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java @@ -277,7 +277,9 @@ public static Variant extractVariantFromResult(Result result) { int chrPosSeparator = ArrayUtils.indexOf(variantRowKey, (byte) 0); int referenceOffset = chrPosSeparator + 1 + UINT_SIZE; - if (Bytes.equals(variantRowKey, referenceOffset, HASH_PREFIX_BYTES.length, HASH_PREFIX_BYTES, 0, HASH_PREFIX_BYTES.length)) { + if (variantRowKey.length > (referenceOffset + HASH_PREFIX_BYTES.length) + && Bytes.equals(variantRowKey, referenceOffset, HASH_PREFIX_BYTES.length, + HASH_PREFIX_BYTES, 0, HASH_PREFIX_BYTES.length)) { // The reference and alternate are hashed. // The type and alleles are stored in the result byte[] type = result.getValue(GenomeHelper.COLUMN_FAMILY_BYTES, diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java index 9e03dcca8b2..578ce5df6ca 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java @@ -41,6 +41,7 @@ public void testVariantRowKey() throws Exception { checkVariantRowKeyGeneration(new Variant("5", 21648, "A", "T")); checkVariantRowKeyGeneration(new Variant("5", 21648, "AAAAAA", "T")); checkVariantRowKeyGeneration(new Variant("5", 21648, "A", "")); + checkVariantRowKeyGeneration(new Variant("5", 21648, "", "T")); checkVariantRowKeyGeneration(new Variant("5", 21648, "AAT", "TTT")); checkVariantRowKeyGeneration(new Variant("X", 21648, "", "TTT")); checkVariantRowKeyGeneration(new Variant("MT", 21648, "", "")); From 83c7d2587d80f980c5ab72f9897213b326f3f711 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 14 May 2024 16:45:40 +0200 Subject: [PATCH 306/354] MailUtils: Deleted the footer of the email because it was duplicated #TASK-464 --- .../main/java/org/opencb/opencga/core/common/MailUtils.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java index 1802d54a642..bf62bb7c09f 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/common/MailUtils.java @@ -81,11 +81,7 @@ public static String getEmailContent(String userId, String temporaryPassword) { sb.append("If you did not request a password reset, please contact our support team immediately at support@zettagenomics.com.\n\n"); sb.append("Best regards,\n\n"); sb.append("ZettaGenomics Support Team \n\n"); - sb.append("*This email and any attachments are confidential and may contain privileged information " + - "intended solely for the use of the individual or entity to whom they are addressed. " + - "If you have received this email in error, please notify the sender immediately and delete the email" + - " and any attachments from your system. Any unauthorized use, disclosure, distribution, " + - "or copying of this email or its attachments is strictly prohibited.*"); + return sb.toString(); From c6681433f6f36cdc290bcca7334e7ef21fa7f405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 15 May 2024 14:39:50 +0100 Subject: [PATCH 307/354] storage: Fix last split parse at SampleIndexTableRecordReader #TASK-6005 --- .../storage/hadoop/variant/mr/SampleIndexTableRecordReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java index 9790f5b99b1..7e747813b0e 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/mr/SampleIndexTableRecordReader.java @@ -198,7 +198,7 @@ public void initialize(InputSplit inputsplit, TaskAttemptContext context) throws stopChr = null; end = Integer.MAX_VALUE; } else { - Pair stopLocus = VariantPhoenixKeyFactory.extractChrPosFromVariantRowKey(firstRow); + Pair stopLocus = VariantPhoenixKeyFactory.extractChrPosFromVariantRowKey(lastRow); stopChr = stopLocus.getFirst(); end = stopLocus.getSecond(); } From f6b73fe2d55a02e2a361d395863d02a3a810ceab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 15 May 2024 14:40:04 +0100 Subject: [PATCH 308/354] storage: Fix return annotation from sample data. Fix test. #TASK-6005 --- ...ariantFileIndexerOperationManagerTest.java | 7 +++---- .../opencga/catalog/managers/FileManager.java | 4 ++-- .../sample/HBaseVariantSampleDataManager.java | 19 ++++++++++--------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/VariantFileIndexerOperationManagerTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/VariantFileIndexerOperationManagerTest.java index 8151de1721b..a4fe3f97944 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/VariantFileIndexerOperationManagerTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/operations/VariantFileIndexerOperationManagerTest.java @@ -26,7 +26,6 @@ import org.mockito.Mockito; import org.opencb.biodata.models.variant.metadata.Aggregation; import org.opencb.biodata.models.variant.metadata.VariantSetStats; -import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Event; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; @@ -43,8 +42,8 @@ import org.opencb.opencga.core.models.file.File; import org.opencb.opencga.core.models.file.FileInternalVariantIndex; import org.opencb.opencga.core.models.file.VariantIndexStatus; -import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.models.operations.variant.VariantIndexParams; +import org.opencb.opencga.core.models.study.Study; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.core.tools.result.ExecutionResult; import org.opencb.opencga.storage.core.StorageEngineFactory; @@ -186,7 +185,7 @@ public void testDeleteIndexedFile() throws Exception { Study study = catalogManager.getFileManager().getStudy(inputFile, sessionId); thrown.expect(CatalogException.class); - thrown.expectMessage("The status is READY"); + thrown.expectMessage("Could not unlink file '" + inputFile.getId() + "'"); catalogManager.getFileManager().unlink(study.getFqn(), inputFile.getId(), sessionId); } @@ -200,7 +199,7 @@ public void testDeleteSampleFromIndexedFile() throws Exception { Query query = new Query(SampleDBAdaptor.QueryParams.ID.key(), inputFile.getSampleIds().get(100)); thrown.expect(CatalogException.class); thrown.expectMessage("Sample associated to the files"); - DataResult delete = catalogManager.getSampleManager().delete(studyFqn, query, null, sessionId); + catalogManager.getSampleManager().delete(studyFqn, query, null, sessionId); } @Test diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java index 2d411253440..812bdfae0ca 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FileManager.java @@ -1832,9 +1832,9 @@ public OpenCGAResult unlink(@Nullable String studyId, String fileId, Strin study.getUuid(), auditParams, new AuditRecord.Status(AuditRecord.Status.Result.SUCCESS)); return result; - } catch (CatalogException e) { + } catch (Exception e) { auditManager.audit(userId, Enums.Action.UNLINK, Enums.Resource.FILE, fileId, "", study.getId(), study.getUuid(), - auditParams, new AuditRecord.Status(AuditRecord.Status.Result.ERROR, e.getError())); + auditParams, new AuditRecord.Status(AuditRecord.Status.Result.ERROR, new Error(0, "", e.getMessage()))); throw new CatalogException("Could not unlink file '" + fileId + "'", e); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java index 659e401d88e..31850f1f486 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/sample/HBaseVariantSampleDataManager.java @@ -51,7 +51,7 @@ public HBaseVariantSampleDataManager(VariantHadoopDBAdaptor dbAdaptor) { } @Override - protected DataResult getSampleData(Variant variant, String study, QueryOptions options, + protected DataResult getSampleData(Variant inputVariant, String study, QueryOptions options, List includeSamples, Set genotypes, int sampleLimit) { @@ -78,6 +78,7 @@ protected DataResult getSampleData(Variant variant, String study, Query int skip = Math.max(0, options.getInt(QueryOptions.SKIP, 0)); int limit = Math.max(0, options.getInt(QueryOptions.LIMIT, 10)); + byte[] rowKey = VariantPhoenixKeyFactory.generateVariantRowKey(inputVariant); try { List samples = new ArrayList<>(limit); @@ -85,7 +86,7 @@ protected DataResult getSampleData(Variant variant, String study, Query dbAdaptor.getHBaseManager().act(dbAdaptor.getVariantTable(), table -> { // Create one GET for samples - Get get = new Get(VariantPhoenixKeyFactory.generateVariantRowKey(variant)); + Get get = new Get(rowKey); LinkedList filters = new LinkedList<>(); filters.add(new QualifierFilter(CompareFilter.CompareOp.EQUAL, @@ -127,7 +128,7 @@ protected DataResult getSampleData(Variant variant, String study, Query samples.add(sampleColumn.getSampleId()); sampleDataMap.add(sampleColumn); } - }).walk(variant); + }).walk(inputVariant); } }); @@ -136,8 +137,9 @@ protected DataResult getSampleData(Variant variant, String study, Query Set fileIdsFromSampleIds = metadataManager.getFileIdsFromSampleIds(studyId, samples); HBaseToVariantStatsConverter statsConverter = new HBaseToVariantStatsConverter(); List stats = new LinkedList<>(); + Variant variantResult = new Variant(inputVariant.toString()); dbAdaptor.getHBaseManager().act(dbAdaptor.getVariantTable(), table -> { - Get get = new Get(VariantPhoenixKeyFactory.generateVariantRowKey(variant)); + Get get = new Get(rowKey); // Add file columns for (Integer fileId : fileIdsFromSampleIds) { @@ -161,7 +163,7 @@ protected DataResult getSampleData(Variant variant, String study, Query Result result = table.get(get); if (result == null || result.isEmpty()) { - throw VariantQueryException.variantNotFound(variant.toString()); + throw VariantQueryException.variantNotFound(variantResult.toString()); } // Walk row VariantRow.walker(result) @@ -175,9 +177,9 @@ protected DataResult getSampleData(Variant variant, String study, Query }) .onVariantAnnotation(column -> { ImmutableBytesWritable b = column.toBytesWritable(); - variant.setAnnotation(new HBaseToVariantAnnotationConverter().convert(b.get(), b.getOffset(), b.getLength())); + variantResult.setAnnotation(new HBaseToVariantAnnotationConverter().convert(b)); }) - .walk(variant); + .walk(variantResult); }); // Convert to VariantSampleData @@ -193,8 +195,7 @@ protected DataResult getSampleData(Variant variant, String study, Query new ArrayList<>(fileIdsFromSampleIds))) .build()); - Variant variantResult = new Variant(variant.toString()); - variantResult.setId(variant.toString()); + variantResult.setId(inputVariant.toString()); StudyEntry studyEntry = converter.convert(sampleDataMap, filesMap, variantResult, studyId); variantResult.addStudyEntry(studyEntry); From 9c3113196e67024e5b5fd6fac36b76b05aba9bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 16 May 2024 13:09:16 +0100 Subject: [PATCH 309/354] storage: Mark symbolic inversion as supported. #TASK-6240 --- .../src/test/resources/variant-test-sv.vcf | 2 +- .../src/test/resources/variant-test-sv_2.vcf | 2 +- .../HadoopLocalLoadVariantStoragePipeline.java | 7 ++++--- .../hadoop/variant/HadoopVariantStorageEngine.java | 13 +++---------- .../variant/gaps/AbstractFillFromArchiveTask.java | 4 ++-- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf index bce755b9486..9fc4fe9c325 100644 --- a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf +++ b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf @@ -46,7 +46,7 @@ 1 700000 . C . PASS SVTYPE=DEL;END=700297;SVLEN=-297;CIPOS=-22,18;CIEND=-12,32 GT 0/1 0/1 1 800000 . A . PASS SVTYPE=INS;END=800000;SVLEN=6027;CIPOS=-16,22;RIGHT_SVINSSEQ=ACCACACCCACACAACACACA;LEFT_SVINSSEQ=TGTGGTGTGTGTGGTGTG GT 0/1 0/1 1 850000 . A . PASS SVTYPE=INS;END=850000;SVINSSEQ=ACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACA GT 0/1 0/1 -1 860000 . A . PASS SVTYPE=INS;END=860000;SVLEN=1000 GT 0/1 0/1 +1 860000 . A . PASS SVTYPE=INVERSION;END=870000 GT 0/1 0/1 1 900000 . G . PASS SVTYPE=INS;END=900000;SVLEN=6027;CIPOS=-16,22 GT 0/1 0/1 1 1000000 . A . PASS SVTYPE=DUP;END=1021100;SVLEN=21100;CIPOS=-500,500;CIEND=-500,500 GT 0/1 0/1 1 1100000 . T . PASS SVTYPE=DUP;END=1100076;SVLEN=76;CIPOS=-10,10;CIEND=-10,10 GT 0/1 0/1 diff --git a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf index c6e2b9176e4..32ad6f4c4f0 100644 --- a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf +++ b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf @@ -46,7 +46,7 @@ 1 700010 . T C . PASS . GT 0/1 0/1 1 800000 . A . PASS SVTYPE=INS;END=800000;SVLEN=6027;CIPOS=-16,22;RIGHT_SVINSSEQ=TGTGGTGTGTGTGGTGTG;LEFT_SVINSSEQ=ACCACACCCACACAACACACA GT 0/1 0/1 1 850000 . A . PASS SVTYPE=INS;END=850000;SVINSSEQ=TGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTGTGTGGTGTG GT 0/1 0/1 -1 860000 . A . PASS SVTYPE=INS;END=860000;SVLEN=1000 GT 0/1 0/1 +1 860000 . A . PASS SVTYPE=INVERSION;END=870000 GT 0/1 0/1 1 900000 . G . PASS SVTYPE=INS;END=900000;SVLEN=6027;CIPOS=-16,22 GT 0/1 0/1 1 1000000 . A . PASS SVTYPE=DUP;END=1021100;SVLEN=21100;CIPOS=-500,500;CIEND=-500,500 GT 0/1 0/1 1 1100000 . T . PASS SVTYPE=DUP;END=1100076;SVLEN=76;CIPOS=-10,10;CIEND=-10,10 GT 0/1 0/1 diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopLocalLoadVariantStoragePipeline.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopLocalLoadVariantStoragePipeline.java index 5c3d0e7a0d1..4fdeca66595 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopLocalLoadVariantStoragePipeline.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopLocalLoadVariantStoragePipeline.java @@ -70,6 +70,7 @@ import static org.opencb.opencga.storage.core.metadata.models.TaskMetadata.Type; import static org.opencb.opencga.storage.core.variant.VariantStorageOptions.*; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine.TARGET_VARIANT_TYPE_SET; +import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine.UNSUPPORTED_VARIANT_TYPE_SET; import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageOptions.*; /** @@ -390,13 +391,13 @@ protected void loadFromAvroWithArchive(URI input, URI outdir, ArchiveTableHelper throw new StorageEngineException("Error loading file " + input, e); } - logLoadResults(variantReader.getVariantFileMetadata(), resolver, hadoopDBWriter); if (sampleIndexDBLoader != null) { // Update list of loaded genotypes this.loadedGenotypes = sampleIndexDBLoader.getLoadedGenotypes(); this.sampleIndexVersion = sampleIndexDBLoader.getSampleIndexVersion(); this.largestVariantLength = largestVariantTask.getMaxLength(); } + logLoadResults(variantReader.getVariantFileMetadata(), resolver, hadoopDBWriter); } protected void loadFromAvroWithoutArchive(URI input, URI outdir, ArchiveTableHelper helper, ProgressLogger progressLogger) @@ -438,13 +439,13 @@ protected void loadFromAvroWithoutArchive(URI input, URI outdir, ArchiveTableHel throw new StorageEngineException("Error loading file " + input, e); } - logLoadResults(variantReader.getVariantFileMetadata(), resolver, hadoopDBWriter); if (sampleIndexDBLoader != null) { // Update list of loaded genotypes this.loadedGenotypes = sampleIndexDBLoader.getLoadedGenotypes(); this.sampleIndexVersion = sampleIndexDBLoader.getSampleIndexVersion(); this.largestVariantLength = largestVariantTask.getMaxLength(); } + logLoadResults(variantReader.getVariantFileMetadata(), resolver, hadoopDBWriter); } private void logLoadResults(VariantFileMetadata variantFileMetadata, @@ -490,7 +491,7 @@ private void logLoadResults(VariantFileMetadata variantFileMetadata, int duplica if (skipped > 0) { logger.info("There were " + skipped + " skipped variants"); for (VariantType type : VariantType.values()) { - if (!TARGET_VARIANT_TYPE_SET.contains(type)) { + if (UNSUPPORTED_VARIANT_TYPE_SET.contains(type)) { Long countByType = variantFileMetadata.getStats().getTypeCount().get(type.toString()); if (countByType != null && countByType > 0) { logger.info(" * Of which " + countByType + " are " + type.toString() + " variants."); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java index 65927c62fb2..18c0f364329 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngine.java @@ -121,17 +121,10 @@ public class HadoopVariantStorageEngine extends VariantStorageEngine implements Configurable { public static final String STORAGE_ENGINE_ID = "hadoop"; - public static final EnumSet TARGET_VARIANT_TYPE_SET = EnumSet.of( - VariantType.SNV, VariantType.SNP, - VariantType.INDEL, - VariantType.MNV, VariantType.MNP, - VariantType.INSERTION, VariantType.DELETION, - VariantType.CNV, - VariantType.COPY_NUMBER, VariantType.COPY_NUMBER_LOSS, VariantType.COPY_NUMBER_GAIN, - VariantType.DUPLICATION, VariantType.TANDEM_DUPLICATION, VariantType.TRANSLOCATION, - VariantType.BREAKEND, - VariantType.SV, VariantType.SYMBOLIC + public static final EnumSet UNSUPPORTED_VARIANT_TYPE_SET = EnumSet.of( + VariantType.NO_VARIATION, VariantType.MIXED ); + public static final EnumSet TARGET_VARIANT_TYPE_SET = EnumSet.complementOf(UNSUPPORTED_VARIANT_TYPE_SET); public static final String FILE_ID = "fileId"; public static final String STUDY_ID = "studyId"; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/AbstractFillFromArchiveTask.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/AbstractFillFromArchiveTask.java index d218cf0a470..1e0a01f89b4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/AbstractFillFromArchiveTask.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/gaps/AbstractFillFromArchiveTask.java @@ -32,7 +32,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; -import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine.TARGET_VARIANT_TYPE_SET; +import static org.opencb.opencga.storage.hadoop.variant.HadoopVariantStorageEngine.UNSUPPORTED_VARIANT_TYPE_SET; /** * Created on 31/10/17. @@ -348,7 +348,7 @@ protected static Scan buildScan(String regionStr, int fileId, Configuration conf protected static boolean isVariantAlreadyLoaded(VcfSliceProtos.VcfSlice slice, VcfSliceProtos.VcfRecord vcfRecord) { VariantType variantType = VcfRecordProtoToVariantConverter.getVariantType(vcfRecord.getType()); // The variant is not loaded if is a NO_VARIATION (fast check first) - if (!TARGET_VARIANT_TYPE_SET.contains(variantType)) { + if (UNSUPPORTED_VARIANT_TYPE_SET.contains(variantType)) { return false; } From 8eb0843b2a168118cf179ea5522f3cd79402c35e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 17 May 2024 15:01:32 +0100 Subject: [PATCH 310/354] app: Fix migration illegal_concurrent_file_loadings. #TASK-6078 --- .../DetectIllegalConcurrentFileLoadingsMigration.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index d64a3163715..c4ca5d66734 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -22,6 +22,7 @@ import org.opencb.opencga.storage.core.variant.adaptors.VariantField; import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; +import java.nio.file.Paths; import java.time.Instant; import java.util.*; import java.util.stream.Collectors; @@ -244,7 +245,12 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag fileMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); } }).getPath(); - catalogManager.getFileManager().update(study, filePath, + String fileUri = Paths.get(filePath).toUri().toString(); + Query query = new Query(FileDBAdaptor.QueryParams.URI.key(), fileUri); + String catalogFileId = catalogManager.getFileManager() + .search(study, query, new QueryOptions(QueryOptions.INCLUDE, FileDBAdaptor.QueryParams.ID.key()), token) + .first().getId(); + catalogManager.getFileManager().update(study, catalogFileId, new FileUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); } for (Integer sampleId : invalidSamples) { From 214f963759c442b1a95f932d657a4aae2fe49f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 21 May 2024 09:45:23 +0100 Subject: [PATCH 311/354] core: Register new index status INVALID in catalog #TASK-6078 --- .../org/opencb/opencga/core/models/common/IndexStatus.java | 4 +++- .../opencb/opencga/core/models/file/VariantIndexStatus.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/IndexStatus.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/IndexStatus.java index 5a1518440ab..83836d0f7d4 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/common/IndexStatus.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/common/IndexStatus.java @@ -13,8 +13,9 @@ public class IndexStatus extends InternalStatus { */ public static final String NONE = "NONE"; public static final String INDEXING = "INDEXING"; + public static final String INVALID = "INVALID"; - public static final List STATUS_LIST = Arrays.asList(READY, DELETED, NONE, INDEXING); + public static final List STATUS_LIST = Arrays.asList(READY, DELETED, NONE, INDEXING, INVALID); public IndexStatus(String status, String message) { if (isValid(status)) { @@ -50,6 +51,7 @@ public static boolean isValid(String status) { return status != null && (status.equals(READY) || status.equals(DELETED) + || status.equals(INVALID) || status.equals(NONE) || status.equals(INDEXING)); } diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/VariantIndexStatus.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/VariantIndexStatus.java index 3dbe5f21f7d..a6592c369bf 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/file/VariantIndexStatus.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/file/VariantIndexStatus.java @@ -19,7 +19,8 @@ public class VariantIndexStatus extends IndexStatus { public static final String TRANSFORMED = "TRANSFORMED"; public static final String LOADING = "LOADING"; - public static final List STATUS_LIST = Arrays.asList(READY, DELETED, NONE, TRANSFORMED, TRANSFORMING, LOADING, INDEXING); + public static final List STATUS_LIST = Arrays.asList(READY, DELETED, NONE, TRANSFORMED, TRANSFORMING, LOADING, INDEXING, + INVALID); public VariantIndexStatus(String status, String message) { if (isValid(status)) { @@ -56,6 +57,7 @@ public static boolean isValid(String status) { && (status.equals(READY) || status.equals(DELETED) || status.equals(NONE) + || status.equals(INVALID) || status.equals(TRANSFORMED) || status.equals(TRANSFORMING) || status.equals(LOADING) From 17129ab9664d59b938d313fc6aab488abfbb410b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 21 May 2024 09:47:51 +0100 Subject: [PATCH 312/354] app: Synchronize storage-catalog status after running migration. #TASK-6078 --- ...llegalConcurrentFileLoadingsMigration.java | 151 +++++++++++++----- 1 file changed, 107 insertions(+), 44 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index c4ca5d66734..22a4942b651 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -3,14 +3,18 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.opencga.analysis.variant.metadata.CatalogStorageMetadataSynchronizer; import org.opencb.opencga.app.migrations.StorageMigrationTool; import org.opencb.opencga.catalog.db.api.FileDBAdaptor; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.migration.Migration; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.common.UriUtils; +import org.opencb.opencga.core.models.common.IndexStatus; import org.opencb.opencga.core.models.file.File; +import org.opencb.opencga.core.models.file.FileInternalVariantIndex; import org.opencb.opencga.core.models.file.FileUpdateParams; +import org.opencb.opencga.core.models.file.VariantIndexStatus; import org.opencb.opencga.core.models.sample.SampleUpdateParams; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -53,6 +57,7 @@ protected void run() throws Exception { private void checkStudy(VariantStorageEngine engine, String study) throws StorageEngineException, CatalogException { VariantStorageMetadataManager metadataManager = engine.getMetadataManager(); + boolean repeatMigration = params.getBoolean("repeat-migration"); logger.info("Checking study '{}'", study); int studyId = metadataManager.getStudyId(study); @@ -217,60 +222,118 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag .append("dateStr", TimeUtils.getTime()) .append("date", Date.from(Instant.now())); for (Integer sampleId : invalidSampleIndexes) { - ObjectMap thisEvent = new ObjectMap(event); - String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { - if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { - logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); - } else { - Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); - for (Integer sampleIndexVersion : sampleMetadata.getSampleIndexVersions()) { - sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, sampleIndexVersion); - } - sampleMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); - } - }).getName(); - catalogManager.getSampleManager().update(study, sampleName, - new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + invalidateSecondarySampleIndex(study, sampleId, event, metadataManager, studyId, repeatMigration); } Set invalidSamples = new HashSet<>(); for (Integer fileId : invalidFiles) { - ObjectMap thisEvent = new ObjectMap(event); - String filePath = metadataManager.updateFileMetadata(studyId, fileId, fileMetadata -> { - invalidSamples.addAll(fileMetadata.getSamples()); - if (fileMetadata.getAttributes().containsKey("TASK-6078")) { - logger.info("File '{}'({}) already has the attribute 'TASK-6078'. Skip", fileMetadata.getName(), fileMetadata.getId()); - } else { - Map oldStatus = new HashMap<>(fileMetadata.getStatus()); - fileMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - fileMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); - } - }).getPath(); - String fileUri = Paths.get(filePath).toUri().toString(); - Query query = new Query(FileDBAdaptor.QueryParams.URI.key(), fileUri); - String catalogFileId = catalogManager.getFileManager() - .search(study, query, new QueryOptions(QueryOptions.INCLUDE, FileDBAdaptor.QueryParams.ID.key()), token) - .first().getId(); - catalogManager.getFileManager().update(study, catalogFileId, - new FileUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + invalidateFileIndex(study, fileId, event, metadataManager, studyId, invalidSamples, repeatMigration); } for (Integer sampleId : invalidSamples) { - ObjectMap thisEvent = new ObjectMap(event); - String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { - if (sampleMetadata.getAttributes().containsKey("TASK-6078")) { - logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", sampleMetadata.getName(), sampleMetadata.getId()); - } else { - Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); - sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); - sampleMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); - } - }).getName(); - catalogManager.getSampleManager().update(study, sampleName, - new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + invalidateSampleIndex(study, sampleId, event, metadataManager, studyId, repeatMigration); } + + Set allSampleIds = new HashSet<>(); + allSampleIds.addAll(affectedSamples); + allSampleIds.addAll(invalidSamples); + List allSampleNames = allSampleIds.stream() + .map(sampleId -> metadataManager.getSampleName(studyId, sampleId)) + .collect(Collectors.toList()); + + if (!allSampleNames.isEmpty()) { + new CatalogStorageMetadataSynchronizer(catalogManager, metadataManager) + .synchronizeCatalogSamplesFromStorage(study, allSampleNames, token); + } + } } } + private void invalidateFileIndex(String study, Integer fileId, ObjectMap event, VariantStorageMetadataManager metadataManager, int studyId, Set invalidSamples, boolean repeatMigration) throws StorageEngineException, CatalogException { + ObjectMap thisEvent = new ObjectMap(event); + String filePath = metadataManager.updateFileMetadata(studyId, fileId, fileMetadata -> { + invalidSamples.addAll(fileMetadata.getSamples()); + if (fileMetadata.getAttributes().containsKey("TASK-6078") && !repeatMigration) { + logger.info("File '{}'({}) already has the attribute 'TASK-6078'. Skip", + fileMetadata.getName(), fileMetadata.getId()); + } else { + Map oldStatus = new HashMap<>(fileMetadata.getStatus()); + fileMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + fileMetadata.getAttributes().put("TASK-6078", thisEvent.append("oldStatus", oldStatus)); + } + }).getPath(); + String fileUri = Paths.get(filePath).toUri().toString(); + Query query = new Query(FileDBAdaptor.QueryParams.URI.key(), fileUri); + File file = catalogManager.getFileManager() + .search(study, query, new QueryOptions(), token) + .first(); + catalogManager.getFileManager().update(study, file.getId(), + new FileUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + catalogManager.getFileManager().updateFileInternalVariantIndex(file, new FileInternalVariantIndex() + .setStatus(new VariantIndexStatus(IndexStatus.INVALID, "Invalid status - TASK-6078 - affected_invalid_sample - " + + "File must be deleted and then indexed")), token); + } + + private void invalidateSecondarySampleIndex(String study, Integer sampleId, ObjectMap event, VariantStorageMetadataManager metadataManager, int studyId, boolean repeatMigration) throws StorageEngineException, CatalogException { + ObjectMap thisEvent = new ObjectMap(event); + String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + if (sampleMetadata.getAttributes().containsKey("TASK-6078") && !repeatMigration) { + logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", + sampleMetadata.getName(), sampleMetadata.getId()); + } else { + Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); + Map oldAttributes = new HashMap<>(sampleMetadata.getAttributes()); + + for (Integer v : sampleMetadata.getSampleIndexVersions()) { + sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, v); + } + for (Integer v : sampleMetadata.getSampleIndexAnnotationVersions()) { + sampleMetadata.setSampleIndexAnnotationStatus(TaskMetadata.Status.NONE, v); + } + for (Integer v : sampleMetadata.getFamilyIndexVersions()) { + sampleMetadata.setFamilyIndexStatus(TaskMetadata.Status.NONE, v); + } + + sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + thisEvent.append("oldStatus", oldStatus); + thisEvent.append("oldAttributes", oldAttributes); + thisEvent.append("newStatus", sampleMetadata.getStatus()); + sampleMetadata.getAttributes().put("TASK-6078", thisEvent); + } + }).getName(); + catalogManager.getSampleManager().update(study, sampleName, + new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + } + + private void invalidateSampleIndex(String study, Integer sampleId, ObjectMap event, VariantStorageMetadataManager metadataManager, int studyId, boolean repeatMigration) throws StorageEngineException, CatalogException { + ObjectMap thisEvent = new ObjectMap(event); + String sampleName = metadataManager.updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + if (sampleMetadata.getAttributes().containsKey("TASK-6078") && !repeatMigration) { + logger.info("Sample '{}'({}) already has the attribute 'TASK-6078'. Skip", + sampleMetadata.getName(), sampleMetadata.getId()); + } else { + Map oldStatus = new HashMap<>(sampleMetadata.getStatus()); + Map oldAttributes = new HashMap<>(sampleMetadata.getAttributes()); + sampleMetadata.setIndexStatus(TaskMetadata.Status.INVALID); + + for (Integer v : sampleMetadata.getSampleIndexVersions()) { + sampleMetadata.setSampleIndexStatus(TaskMetadata.Status.NONE, v); + } + for (Integer v : sampleMetadata.getSampleIndexAnnotationVersions()) { + sampleMetadata.setSampleIndexAnnotationStatus(TaskMetadata.Status.NONE, v); + } + for (Integer v : sampleMetadata.getFamilyIndexVersions()) { + sampleMetadata.setFamilyIndexStatus(TaskMetadata.Status.NONE, v); + } + thisEvent.append("oldStatus", oldStatus); + thisEvent.append("oldAttributes", oldAttributes); + thisEvent.append("newStatus", sampleMetadata.getStatus()); + sampleMetadata.getAttributes().put("TASK-6078", thisEvent); + } + }).getName(); + catalogManager.getSampleManager().update(study, sampleName, + new SampleUpdateParams().setAttributes(new ObjectMap("TASK-6078", thisEvent)), QueryOptions.empty(), token); + } + private Set> getFileWithSharedSamples(VariantStorageEngine engine, int studyId) throws StorageEngineException { VariantStorageMetadataManager metadataManager = engine.getMetadataManager(); From 53b67f0c82d72a886bb25199606f4ac8bace1af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 21 May 2024 09:48:02 +0100 Subject: [PATCH 313/354] analysis: Allow force variant file remove. #TASK-6078 --- .../operations/VariantDeleteOperationManager.java | 12 +++++++++++- .../operations/VariantFileDeleteOperationTool.java | 1 + .../operations/variant/VariantFileDeleteParams.java | 10 ++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/operations/VariantDeleteOperationManager.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/operations/VariantDeleteOperationManager.java index 550c00b027a..882240d2865 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/operations/VariantDeleteOperationManager.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/manager/operations/VariantDeleteOperationManager.java @@ -26,6 +26,7 @@ import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; +import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import java.net.URI; import java.util.ArrayList; @@ -52,6 +53,7 @@ public void removeStudy(String study, URI outdir, String token) throws CatalogEx public void removeFile(String study, List inputFiles, URI outdir, String token) throws CatalogException, StorageEngineException { // Update study metadata BEFORE executing the operation and fetching files from Catalog + boolean force = variantStorageEngine.getOptions().getBoolean(VariantStorageOptions.FORCE.key()); StudyMetadata studyMetadata = synchronizeCatalogStudyFromStorage(study, token, true); List fileNames = new ArrayList<>(); @@ -62,7 +64,15 @@ public void removeFile(String study, List inputFiles, URI outdir, String if (!catalogIndexStatus.equals(VariantIndexStatus.READY)) { // Might be partially loaded in VariantStorage. Check FileMetadata FileMetadata fileMetadata = variantStorageEngine.getMetadataManager().getFileMetadata(studyMetadata.getId(), fileStr); - if (fileMetadata == null || fileMetadata.getIndexStatus() != TaskMetadata.Status.NONE) { + boolean canBeRemoved; + if (force) { + // When forcing remove, just require the file to be registered in the storage + canBeRemoved = fileMetadata != null; + } else { + // Otherwise, require the file to be in status NONE + canBeRemoved = fileMetadata != null && fileMetadata.getIndexStatus() != TaskMetadata.Status.NONE; + } + if (!canBeRemoved) { throw new CatalogException("Unable to remove variants from file " + file.getName() + ". " + "IndexStatus = " + catalogIndexStatus); } diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantFileDeleteOperationTool.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantFileDeleteOperationTool.java index 8a321c24ff3..85b4f8b1b48 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantFileDeleteOperationTool.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantFileDeleteOperationTool.java @@ -55,6 +55,7 @@ protected void check() throws Exception { throw new ToolException("Missing file/s"); } params.put(VariantStorageOptions.RESUME.key(), variantFileDeleteParams.isResume()); + params.put(VariantStorageOptions.FORCE.key(), variantFileDeleteParams.isForce()); } @Override diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/models/operations/variant/VariantFileDeleteParams.java b/opencga-core/src/main/java/org/opencb/opencga/core/models/operations/variant/VariantFileDeleteParams.java index 1a44f224af7..85ba64ce78c 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/models/operations/variant/VariantFileDeleteParams.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/models/operations/variant/VariantFileDeleteParams.java @@ -34,6 +34,7 @@ public VariantFileDeleteParams(List file, boolean resume) { private List file; private boolean resume; + private boolean force; public List getFile() { return file; @@ -52,4 +53,13 @@ public VariantFileDeleteParams setResume(boolean resume) { this.resume = resume; return this; } + + public boolean isForce() { + return force; + } + + public VariantFileDeleteParams setForce(boolean force) { + this.force = force; + return this; + } } From bdfa4d61462fe4314903c34ca6ab34dceee1aa46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 24 May 2024 09:45:23 +0100 Subject: [PATCH 314/354] app: Remove "manual=true" from migration illegal_concurrent_file_loadings #TASK-6305 --- .../storage/DetectIllegalConcurrentFileLoadingsMigration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index 22a4942b651..c407cd82bbd 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -34,7 +34,6 @@ @Migration(id = "illegal_concurrent_file_loadings" , description = "Detect illegal concurrent file loadings and fix them by setting 'status' to 'INVALID' or 'READY'", version = "2.12.5", - manual = true, domain = Migration.MigrationDomain.STORAGE, language = Migration.MigrationLanguage.JAVA, date = 20240424 From 5f1029a6419951ec51f6806734439f239a1f2dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Mon, 27 May 2024 11:29:23 +0100 Subject: [PATCH 315/354] storage: Fix VariantSearchTest. #TASK-6136 --- .../core/variant/search/VariantSearchTest.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java index 56588d25863..17d7d073c51 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/search/VariantSearchTest.java @@ -187,15 +187,16 @@ public void testSpecialCharacter() throws Exception { List variants = getVariants(limit); List annotatedVariants = annotatedVariants(variants); - String studyId = "abyu12"; - String fileId = "a.vcf"; + String study = "abyu12"; + String file = "a.vcf"; - variants.get(0).getStudies().get(0).getFiles().get(0).setFileId(fileId); + variants.get(0).getStudies().get(0).getFiles().get(0).setFileId(file); System.out.println(variants.get(0).getStudies().get(0).getFiles().get(0).getFileId()); //System.exit(-1); - scm.createStudy(studyId); - + int studyId = scm.createStudy(study).getId(); + int fileId = scm.registerFile(studyId, file, Arrays.asList("A-A", "B", "C", "D")); + scm.addIndexedFiles(studyId, Collections.singletonList(fileId)); String collection = solr.coreName; variantSearchManager.create(collection); @@ -204,13 +205,13 @@ public void testSpecialCharacter() throws Exception { samplePosition.put("B", 1); samplePosition.put("C", 2); samplePosition.put("D", 3); - annotatedVariants.get(0).getStudies().get(0).setStudyId(studyId).setSortedSamplesPosition(samplePosition); + annotatedVariants.get(0).getStudies().get(0).setStudyId(study).setSortedSamplesPosition(samplePosition); variantSearchManager.insert(collection, annotatedVariants); Query query = new Query(); - query.put(VariantQueryParam.STUDY.key(), studyId); + query.put(VariantQueryParam.STUDY.key(), study); // query.put(VariantQueryParam.SAMPLE.key(), samplePosition.keySet().toArray()[0]); - query.put(VariantQueryParam.FILE.key(), fileId); + query.put(VariantQueryParam.FILE.key(), file); query.put(VariantQueryParam.FILTER.key(), "PASS"); query.put(VariantQueryParam.ANNOT_CLINICAL_SIGNIFICANCE.key(), "benign"); VariantQueryResult results = variantSearchManager.query(collection, variantStorageEngine.parseQuery(query, From 9f46a7cf2c3c95bfb6a10bd7d834e4b7c4d58b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 28 May 2024 17:20:02 +0100 Subject: [PATCH 316/354] storage: Fix tests from HadoopVariantStorageEngineSplitDataTest #TASK-6136 --- ...adoopVariantStorageEngineSplitDataTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java index e4f1f2e14b4..1401a7b5ad9 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantStorageEngineSplitDataTest.java @@ -224,6 +224,10 @@ public void testMultiChromosomeSplitData() throws Exception { } private void failAtLoadingFile(String x, String file1, URI outputUri) throws Exception { + failAtLoadingFile(x, file1, outputUri, 1); + } + + private void failAtLoadingFile(String x, String file1, URI outputUri, int expectedRunningTasks) throws Exception { try { VariantStorageEngine engine = getMockedStorageEngine(new ObjectMap(VariantStorageOptions.STUDY.key(), STUDY_NAME)); engine.index(Collections.singletonList(getResourceUri(x + file1)), outputUri); @@ -236,11 +240,13 @@ private void failAtLoadingFile(String x, String file1, URI outputUri) throws Exc assertEquals(TaskMetadata.Status.NONE, fileMetadata.getIndexStatus()); List runningTasks = new ArrayList<>(); metadataManager.getRunningTasks(studyId).forEach(runningTasks::add); - assertEquals(1, runningTasks.size()); - assertEquals(TaskMetadata.Type.LOAD, runningTasks.get(0).getType()); - assertEquals(TaskMetadata.Status.RUNNING, runningTasks.get(0).currentStatus()); - assertEquals(Arrays.asList(fileMetadata.getId()), runningTasks.get(0).getFileIds()); + assertEquals(expectedRunningTasks, runningTasks.size()); + TaskMetadata taskMetadata = runningTasks.get(runningTasks.size() - 1); + assertEquals(TaskMetadata.Type.LOAD, taskMetadata.getType()); + assertEquals(TaskMetadata.Status.RUNNING, taskMetadata.currentStatus()); + assertEquals(Arrays.asList(fileMetadata.getId()), taskMetadata.getFileIds()); } catch (AssertionError error) { + error.addSuppressed(e); e.printStackTrace(); throw error; } @@ -594,7 +600,7 @@ public void testLoadMultiFileDataConcurrencyDeleteMany() throws Exception { String file2 = "1K.end.platinum-genomes-vcf-NA12878_S1.vcf.gz"; failAtLoadingFile(resourceDir, file1, outDir); - failAtLoadingFile(resourceDir, file2, outDir); + failAtLoadingFile(resourceDir, file2, outDir, 2); // try { // getMockedStorageEngine().index(Collections.singletonList(getResourceUri(resourceDir + file1)), outDir); // fail("Should have thrown an exception"); @@ -656,7 +662,7 @@ public void testLoadMultiFileDataConcurrencyFail() throws Exception { variantStorageEngine.getOptions().put(VariantStorageOptions.LOAD_MULTI_FILE_DATA.key(), true); variantStorageEngine.getOptions().put(VariantStorageOptions.RESUME.key(), true); - variantStorageEngine.index(Collections.singletonList(getResourceUri(file1)), outDir); + variantStorageEngine.index(Collections.singletonList(getResourceUri(resourceDir + file1)), outDir); } From 373fe21f4b61f326d9fb975d85e8b823c1b18e9b Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Thu, 30 May 2024 18:06:51 +0200 Subject: [PATCH 317/354] cicd: Update action version to test for compatibility with test and release process #TASK-6264 --- .github/workflows/check-junit-test.yml | 2 +- .github/workflows/manual-deploy-docker.yml | 6 +++--- .github/workflows/manual-deploy-ext-tools.yml | 6 +++--- .github/workflows/test-analysis.yml | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/check-junit-test.yml b/.github/workflows/check-junit-test.yml index 4331f156cf5..58bbc6fe538 100644 --- a/.github/workflows/check-junit-test.yml +++ b/.github/workflows/check-junit-test.yml @@ -27,7 +27,7 @@ jobs: outputs: profiles: ${{ steps.getter.outputs.profiles }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '10' - name: Building string profiles to run diff --git a/.github/workflows/manual-deploy-docker.yml b/.github/workflows/manual-deploy-docker.yml index 9a276c7d9b0..f4c79f4c241 100644 --- a/.github/workflows/manual-deploy-docker.yml +++ b/.github/workflows/manual-deploy-docker.yml @@ -18,12 +18,12 @@ jobs: outputs: version: ${{ steps.get_project_version.outputs.version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '10' ref: "${{ inputs.branch }}" - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '8' @@ -36,7 +36,7 @@ jobs: fi - name: Maven Build (skip tests) run: mvn -T 2 clean install -DskipTests -P storage-hadoop,hdp3.1,RClient,opencga-storage-hadoop-deps -Dopencga.war.name=opencga -Dcheckstyle.skip -pl '!:opencga-storage-hadoop-deps-emr6.1,!:opencga-storage-hadoop-deps-hdp2.6' - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: build-folder path: build diff --git a/.github/workflows/manual-deploy-ext-tools.yml b/.github/workflows/manual-deploy-ext-tools.yml index 5a10146128a..f64e58cbb10 100644 --- a/.github/workflows/manual-deploy-ext-tools.yml +++ b/.github/workflows/manual-deploy-ext-tools.yml @@ -18,12 +18,12 @@ jobs: outputs: version: ${{ steps.get_project_version.outputs.version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '10' ref: "${{ inputs.branch }}" - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '8' @@ -36,7 +36,7 @@ jobs: fi - name: Maven Build (skip tests) run: mvn -T 2 clean install -DskipTests - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: build-folder path: build diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 6a83e6e556c..ccb848d11ec 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -20,11 +20,11 @@ jobs: name: Execute Sonar Analysis runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set up JDK 11 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' @@ -47,11 +47,11 @@ jobs: name: Execute JUnit and Jacoco tests runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: '0' - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '8' From f15978bc1fc7d8ce41779b53c8d5d5956003fb1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 31 May 2024 11:30:39 +0100 Subject: [PATCH 318/354] storage: Avoid unnecesary sample metadata updates updating cohorts #TASK-5895 --- .../VariantStorageMetadataManager.java | 87 ++++++++----------- .../VariantStorageMetadataManagerTest.java | 34 ++++++++ 2 files changed, 68 insertions(+), 53 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index 89d86a63a89..a27f908173b 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -56,7 +56,6 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiFunction; import java.util.function.BiPredicate; @@ -191,14 +190,7 @@ public ObjectMap getConfiguration() { public Lock lockGlobal(long lockDuration, long timeout, String lockName) throws StorageEngineException { - try { - return projectDBAdaptor.lockProject(lockDuration, timeout, lockName); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new StorageEngineException("Unable to lock the Project", e); - } catch (TimeoutException e) { - throw new StorageEngineException("Unable to lock the Project", e); - } + return projectDBAdaptor.lockProject(lockDuration, timeout, lockName); } public Lock lockStudy(int studyId) throws StorageEngineException { @@ -282,8 +274,7 @@ public StudyMetadata updateStudyMetadata(Object study, Upd throws StorageEngineException, E { int studyId = getStudyId(study); - Lock lock = lockStudy(studyId); - try { + try (Lock lock = lockStudy(studyId)) { StudyMetadata sm = getStudyMetadata(studyId); sm = updater.update(sm); @@ -291,8 +282,6 @@ public StudyMetadata updateStudyMetadata(Object study, Upd lock.checkLocked(); unsecureUpdateStudyMetadata(sm); return sm; - } finally { - lock.unlock(); } } @@ -557,16 +546,8 @@ public ProjectMetadata updateProjectMetadata(UpdateConsume public ProjectMetadata updateProjectMetadata(UpdateFunction function) throws StorageEngineException, E { Objects.requireNonNull(function); - Lock lock; - try { - lock = projectDBAdaptor.lockProject(lockDuration, lockTimeout); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new StorageEngineException("Unable to lock the Project", e); - } catch (TimeoutException e) { - throw new StorageEngineException("Unable to lock the Project", e); - } - try { + + try (Lock lock = projectDBAdaptor.lockProject(lockDuration, lockTimeout)) { ProjectMetadata projectMetadata = getProjectMetadata(); int countersHash = (projectMetadata == null ? Collections.emptyMap() : projectMetadata.getCounters()).hashCode(); @@ -579,8 +560,6 @@ public ProjectMetadata updateProjectMetadata(UpdateFunctio lock.checkLocked(); projectDBAdaptor.updateProjectMetadata(projectMetadata, updateCounters); return projectMetadata; - } finally { - lock.unlock(); } } @@ -673,16 +652,14 @@ public void unsecureUpdateFileMetadata(int studyId, FileMetadata file) { public FileMetadata updateFileMetadata(int studyId, int fileId, UpdateConsumer update) throws E, StorageEngineException { getFileName(studyId, fileId); // Check file exists - Lock lock = fileDBAdaptor.lock(studyId, fileId, lockDuration, lockTimeout); - try { + + try (Lock lock = fileDBAdaptor.lock(studyId, fileId, lockDuration, lockTimeout)) { FileMetadata fileMetadata = getFileMetadata(studyId, fileId); update.update(fileMetadata); lock.checkLocked(); unsecureUpdateFileMetadata(studyId, fileMetadata); fileIdIndexedCache.put(studyId, fileId, fileMetadata.isIndexed()); return fileMetadata; - } finally { - lock.unlock(); } } @@ -875,15 +852,13 @@ public void unsecureUpdateSampleMetadata(int studyId, SampleMetadata sample) { public SampleMetadata updateSampleMetadata(int studyId, int sampleId, UpdateConsumer consumer) throws E, StorageEngineException { getSampleName(studyId, sampleId); // Check sample exists - Lock lock = sampleDBAdaptor.lock(studyId, sampleId, lockDuration, lockTimeout); - try { + + try (Lock lock = sampleDBAdaptor.lock(studyId, sampleId, lockDuration, lockTimeout)) { SampleMetadata sample = getSampleMetadata(studyId, sampleId); sample = consumer.toFunction().update(sample); lock.checkLocked(); unsecureUpdateSampleMetadata(studyId, sample); return sample; - } finally { - lock.unlock(); } } @@ -1054,15 +1029,12 @@ public void unsecureUpdateCohortMetadata(int studyId, CohortMetadata cohort) { public CohortMetadata updateCohortMetadata(int studyId, int cohortId, UpdateConsumer update) throws E, StorageEngineException { getCohortName(studyId, cohortId); // Check cohort exists - Lock lock = cohortDBAdaptor.lock(studyId, cohortId, lockDuration, lockTimeout); - try { + try (Lock lock = cohortDBAdaptor.lock(studyId, cohortId, lockDuration, lockTimeout)) { CohortMetadata cohortMetadata = getCohortMetadata(studyId, cohortId); update.update(cohortMetadata); lock.checkLocked(); unsecureUpdateCohortMetadata(studyId, cohortMetadata); return cohortMetadata; - } finally { - lock.unlock(); } } @@ -1190,13 +1162,19 @@ private CohortMetadata updateCohortSamples(int studyId, String cohortName, Colle for (Integer sampleId : sampleIds) { Integer finalCohortId = cohortId; if (secondaryIndexCohort) { - updateSampleMetadata(studyId, sampleId, sampleMetadata -> { - sampleMetadata.addSecondaryIndexCohort(finalCohortId); - }); + if (!getSampleMetadata(studyId, sampleId).getSecondaryIndexCohorts().contains(finalCohortId)) { + // Avoid unnecessary updates + updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + sampleMetadata.addSecondaryIndexCohort(finalCohortId); + }); + } } else { - updateSampleMetadata(studyId, sampleId, sampleMetadata -> { - sampleMetadata.addCohort(finalCohortId); - }); + if (!getSampleMetadata(studyId, sampleId).getCohorts().contains(finalCohortId)) { + // Avoid unnecessary updates + updateSampleMetadata(studyId, sampleId, sampleMetadata -> { + sampleMetadata.addCohort(finalCohortId); + }); + } } } @@ -1209,13 +1187,19 @@ private CohortMetadata updateCohortSamples(int studyId, String cohortName, Colle Integer finalCohortId = cohortId; if (!sampleIds.contains(sampleFromCohort)) { if (secondaryIndexCohort) { - updateSampleMetadata(studyId, sampleFromCohort, sampleMetadata -> { - sampleMetadata.getSecondaryIndexCohorts().remove(finalCohortId); - }); + if (getSampleMetadata(studyId, sampleFromCohort).getSecondaryIndexCohorts().contains(finalCohortId)) { + // Avoid unnecessary updates + updateSampleMetadata(studyId, sampleFromCohort, sampleMetadata -> { + sampleMetadata.getSecondaryIndexCohorts().remove(finalCohortId); + }); + } } else { - updateSampleMetadata(studyId, sampleFromCohort, sampleMetadata -> { - sampleMetadata.getCohorts().remove(finalCohortId); - }); + if (getSampleMetadata(studyId, sampleFromCohort).getCohorts().contains(finalCohortId)) { + // Avoid unnecessary updates + updateSampleMetadata(studyId, sampleFromCohort, sampleMetadata -> { + sampleMetadata.getCohorts().remove(finalCohortId); + }); + } } } } @@ -1326,15 +1310,12 @@ public void unsecureUpdateTask(int studyId, TaskMetadata task) throws StorageEng public TaskMetadata updateTask(int studyId, int taskId, UpdateConsumer consumer) throws E, StorageEngineException { getTask(studyId, taskId); // Check task exists - Lock lock = taskDBAdaptor.lock(studyId, taskId, lockDuration, lockTimeout); - try { + try (Lock lock = taskDBAdaptor.lock(studyId, taskId, lockDuration, lockTimeout)) { TaskMetadata task = getTask(studyId, taskId); consumer.update(task); lock.checkLocked(); unsecureUpdateTask(studyId, task); return task; - } finally { - lock.unlock(); } } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManagerTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManagerTest.java index 1b3311958f4..71ea72de3c0 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManagerTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManagerTest.java @@ -4,12 +4,14 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; import org.opencb.opencga.storage.core.variant.VariantStorageTest; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -103,4 +105,36 @@ public List getTasks(StudyMetadata study, List stat .map(TaskMetadata::getName) .collect(Collectors.toList()); } + + @Test + public void testAddSampleToCohort() throws Exception { + StudyMetadata study = metadataManager.createStudy("study"); + + metadataManager.registerCohort(study.getName(), "cohort1", Collections.emptyList()); + + int numSamples = 100; + List sampleIds = new ArrayList<>(numSamples); + for (int i = 0; i < numSamples; i++) { + sampleIds.add(metadataManager.registerSample(study.getId(), null, "sample_" + i)); + } + + metadataManager.addSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 10)); + VariantStorageMetadataManager metadataManager = Mockito.spy(this.metadataManager); + metadataManager.addSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 11)); + Mockito.verify(metadataManager, Mockito.times(1)).updateSampleMetadata(Mockito.anyInt(), Mockito.anyInt(), Mockito.any()); + + Mockito.reset(metadataManager); + metadataManager.addSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 11)); + Mockito.verify(metadataManager, Mockito.never()).updateSampleMetadata(Mockito.anyInt(), Mockito.anyInt(), Mockito.any()); + metadataManager.setSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 11)); + Mockito.verify(metadataManager, Mockito.never()).updateSampleMetadata(Mockito.anyInt(), Mockito.anyInt(), Mockito.any()); + + metadataManager.setSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 12)); + Mockito.verify(metadataManager, Mockito.times(1)).updateSampleMetadata(Mockito.anyInt(), Mockito.anyInt(), Mockito.any()); + + Mockito.reset(metadataManager); + metadataManager.setSamplesToCohort(study.getId(), "cohort1", sampleIds.subList(0, 6)); + Mockito.verify(metadataManager, Mockito.times(6)).updateSampleMetadata(Mockito.anyInt(), Mockito.anyInt(), Mockito.any()); + } + } \ No newline at end of file From e968bd29acea260b91e5e6b74262d4ea92660746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 31 May 2024 12:09:18 +0100 Subject: [PATCH 319/354] storage: Improve HBaseLockManager errors and warn messages. #TASK-5895 --- .../adaptors/ProjectMetadataAdaptor.java | 7 +- .../dummy/DummyProjectMetadataAdaptor.java | 7 +- .../hadoop/utils/HBaseLockManager.java | 274 ++++++++++-------- .../metadata/AbstractHBaseDBAdaptor.java | 9 - .../HBaseProjectMetadataDBAdaptor.java | 16 +- .../hadoop/utils/HBaseLockManagerTest.java | 42 ++- 6 files changed, 195 insertions(+), 160 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/ProjectMetadataAdaptor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/ProjectMetadataAdaptor.java index dc88a85d338..3045ee8f3cd 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/ProjectMetadataAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/adaptors/ProjectMetadataAdaptor.java @@ -7,7 +7,6 @@ import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; import java.io.IOException; -import java.util.concurrent.TimeoutException; /** * Created on 02/05/18. @@ -17,14 +16,12 @@ public interface ProjectMetadataAdaptor extends AutoCloseable { default Lock lockProject(long lockDuration, long timeout) - throws InterruptedException, TimeoutException, StorageEngineException { + throws StorageEngineException { return lockProject(lockDuration, timeout, null); } Lock lockProject(long lockDuration, long timeout, String lockName) - throws InterruptedException, TimeoutException, StorageEngineException; - - void unLockProject(long lockId) throws StorageEngineException; + throws StorageEngineException; DataResult getProjectMetadata(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyProjectMetadataAdaptor.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyProjectMetadataAdaptor.java index bed8d419666..d223180d9d1 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyProjectMetadataAdaptor.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/dummy/DummyProjectMetadataAdaptor.java @@ -16,7 +16,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; /** @@ -29,7 +28,7 @@ public class DummyProjectMetadataAdaptor implements ProjectMetadataAdaptor { private static Map counters = new HashMap<>(); @Override - public Lock lockProject(long lockDuration, long timeout, String lockName) throws InterruptedException, TimeoutException { + public Lock lockProject(long lockDuration, long timeout, String lockName) { return new Lock(0) { @Override public void unlock0() { @@ -43,10 +42,6 @@ public void refresh() { }; } - @Override - public void unLockProject(long lockId) { - } - @Override public synchronized DataResult getProjectMetadata() { final DataResult result = new DataResult<>(); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManager.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManager.java index 6fc7609b998..b1f827b2baf 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManager.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManager.java @@ -24,7 +24,6 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.util.Bytes; -import org.apache.solr.common.StringUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.storage.core.metadata.models.Lock; import org.slf4j.Logger; @@ -134,18 +133,17 @@ public Lock lock(byte[] row, byte[] column, long lockDuration, long timeout) // Minimum lock duration of 100ms lockDuration = Math.max(lockDuration, 100); - byte[] lockValue; - String readToken = ""; + LockToken lockToken; StopWatch stopWatch = new StopWatch(); stopWatch.start(); do { - lockValue = readLockValue(row, column); + lockToken = readLockToken(row, column); // If the lock is taken, wait - while (isLockTaken(lockValue)) { + while (lockToken.isTaken()) { Thread.sleep(100); - lockValue = readLockValue(row, column); + lockToken = readLockToken(row, column); //Check if the lock is still valid if (stopWatch.getTime() > timeout) { throw new TimeoutException("Unable to get the lock"); @@ -157,19 +155,19 @@ public Lock lock(byte[] row, byte[] column, long lockDuration, long timeout) } // Try to lock cell - if (tryToPutToken(token, lockDuration, row, column, lockValue, CURRENT)) { - readToken = parseValidLockToken(readLockValue(row, column)); + if (tryToPutToken(token, lockDuration, row, column, lockToken, CURRENT)) { + lockToken = readLockToken(row, column); } - // You win the lock if the first available lock is yours. - } while (!token.equals(readToken)); + // You win the lock if you manage to write your lock. + } while (!lockToken.equals(token)); - boolean prevTokenExpired = lockValue != null && lockValue.length > 0; + boolean prevTokenExpired = !lockToken.isEmpty() && lockToken.isExpired(); boolean slowQuery = stopWatch.getTime() > 60000; if (prevTokenExpired || slowQuery) { StringBuilder msg = new StringBuilder("Lock column '").append(Bytes.toStringBinary(column)).append("'"); if (prevTokenExpired) { - long expireDate = parseExpireDate(lockValue); + long expireDate = lockToken.getExpireDate(); msg.append(". Previous token expired ") .append(TimeUtils.durationToString(System.currentTimeMillis() - expireDate)) .append(" ago"); @@ -181,105 +179,65 @@ public Lock lock(byte[] row, byte[] column, long lockDuration, long timeout) logger.warn(msg.toString()); } - long tokenHash = token.hashCode(); - logger.debug("Won the lock with token " + token + " (" + tokenHash + ")"); - - long finalLockDuration = lockDuration; - return new Lock(threadPool, (int) (finalLockDuration / 4), tokenHash) { - @Override - public void unlock0() { - try { - HBaseLockManager.this.unlock(row, column, tokenHash); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } + logger.debug("Won the lock with token " + token + " (" + token.hashCode() + ")"); - @Override - public synchronized void refresh() throws IOException { - HBaseLockManager.this.refresh(row, column, tokenHash, finalLockDuration); - } - }; + return new HBaseLock(lockDuration, token, row, column); } - /** - * Refreshes the lock. - * - * @param column Column to find the lock cell - * @param lockToken Lock token - * @param lockDuration Duration un milliseconds of the token. After this time the token is expired. - * @throws IOException if there is an error writing or reading from HBase. - */ - public void refresh(byte[] column, long lockToken, int lockDuration) throws IOException { - refresh(defaultRow, column, lockToken, lockDuration); - } - - /** * Refreshes the lock. * * @param row Row to find the lock cell * @param column Column to find the lock cell - * @param lockToken Lock token + * @param lockTokenHash Lock token * @param lockDuration Duration un milliseconds of the token. After this time the token is expired. * @throws IOException if there is an error writing or reading from HBase. */ - public void refresh(byte[] row, byte[] column, long lockToken, long lockDuration) throws IOException { + private void refresh(byte[] row, byte[] column, long lockTokenHash, long lockDuration) throws IOException { // Check token is valid - byte[] lockValue = readLockValue(row, column); - String currentLockToken = parseValidLockToken(lockValue); - if (currentLockToken == null || currentLockToken.hashCode() != lockToken) { - throw IllegalLockStatusException.inconsistentLock(row, column, lockToken, currentLockToken, lockValue); + LockToken currentLockToken = readLockToken(row, column); + if (currentLockToken.isEmpty() || currentLockToken.isExpired() || !currentLockToken.equals(lockTokenHash)) { + throw IllegalLockStatusException.inconsistentLock(row, column, lockTokenHash, currentLockToken); + } + if (currentLockToken.getRemainingTime() < lockDuration / 2) { + logger.warn("Refreshing lock with less than half of the duration remaining. Expected duration: {} Remaining time: {}ms", + lockDuration, + currentLockToken.getRemainingTime()); } - if (!tryToPutToken(currentLockToken, lockDuration, row, column, lockValue, REFRESH)) { + if (!tryToPutToken(currentLockToken.token, lockDuration, row, column, currentLockToken, REFRESH)) { // Error refreshing! - lockValue = readLockValue(row, column); - String newLockToken = parseValidLockToken(lockValue); + LockToken newLockToken = readLockToken(row, column); - logger.error("Current lock token:" + currentLockToken); - logger.error("New lock token: " + newLockToken); - throw IllegalLockStatusException.inconsistentLock(row, column, lockToken, currentLockToken, lockValue); + logger.error("Current lock token:" + currentLockToken.token); + logger.error("New lock token: " + newLockToken.token); + throw IllegalLockStatusException.inconsistentLock(row, column, lockTokenHash, currentLockToken); } } - /** - * Releases the lock. - * - * @param column Column to find the lock cell - * @param lockToken Lock token - * @throws IOException if there is an error writing or reading from HBase. - * @throws IllegalLockStatusException if the lockToken does not match with the current lockToken - */ - public void unlock(byte[] column, long lockToken) throws IOException, IllegalLockStatusException { - unlock(defaultRow, column, lockToken); - } - /** * Releases the lock. * * @param row Row to find the lock cell * @param column Column to find the lock cell - * @param lockToken Lock token + * @param lockTokenHash Lock token * @throws IOException if there is an error writing or reading from HBase. * @throws IllegalLockStatusException if the lockToken does not match with the current lockToken */ - public void unlock(byte[] row, byte[] column, long lockToken) throws IOException, IllegalLockStatusException { - byte[] lockValue = readLockValue(row, column); + private void unlock(byte[] row, byte[] column, long lockTokenHash) throws IOException, IllegalLockStatusException { + LockToken currentToken = readLockToken(row, column); - String currentToken = parseValidLockToken(lockValue); - - if (currentToken == null || currentToken.hashCode() != lockToken) { - throw IllegalLockStatusException.inconsistentLock(row, column, lockToken, currentToken, lockValue); + if (currentToken.isEmpty() || currentToken.isExpired() || !currentToken.equals(lockTokenHash)) { + throw IllegalLockStatusException.inconsistentLock(row, column, lockTokenHash, currentToken); } - logger.debug("Unlock lock with token " + lockToken); - if (!clearLock(row, column, lockValue)) { - throw IllegalLockStatusException.inconsistentLock(row, column, lockToken, currentToken, lockValue); + logger.debug("Unlock lock with token " + lockTokenHash); + if (!clearLock(row, column, currentToken)) { + throw IllegalLockStatusException.inconsistentLock(row, column, lockTokenHash, currentToken); } } - private Boolean tryToPutToken(String token, long lockDuration, byte[] row, byte[] qualifier, byte[] lockValue, String type) + private Boolean tryToPutToken(String token, long lockDuration, byte[] row, byte[] qualifier, LockToken currentLock, String type) throws IOException { return hbaseManager.act(tableName, table -> { Put put = new Put(row) @@ -288,30 +246,31 @@ private Boolean tryToPutToken(String token, long lockDuration, byte[] row, byte[ + token + LOCK_EXPIRING_DATE_SEPARATOR_STR + (System.currentTimeMillis() + lockDuration))); - return table.checkAndPut(row, columnFamily, qualifier, CompareFilter.CompareOp.EQUAL, lockValue, put); + return table.checkAndPut(row, columnFamily, qualifier, CompareFilter.CompareOp.EQUAL, currentLock.lockValue, put); }); } - private boolean clearLock(byte[] row, byte[] qualifier, byte[] lockValue) throws IOException { + private boolean clearLock(byte[] row, byte[] qualifier, LockToken lockToken) throws IOException { return hbaseManager.act(tableName, table -> { Put put = new Put(row) .addColumn(columnFamily, qualifier, Bytes.toBytes("")); - return table.checkAndPut(row, columnFamily, qualifier, CompareFilter.CompareOp.EQUAL, lockValue, put); + return table.checkAndPut(row, columnFamily, qualifier, CompareFilter.CompareOp.EQUAL, lockToken.lockValue, put); }); } /** - * Parse non-expired lock token. + * Parse lock token. * @param lockValue lock values - * @return Current lock token, if any + * @return Current lock token. */ - protected static String parseValidLockToken(byte[] lockValue) { + protected static LockToken parseLockToken(byte[] lockValue) { if (lockValue == null || lockValue.length == 0) { - return null; + return new LockToken(); } int idx1 = Bytes.indexOf(lockValue, LOCK_PREFIX_SEPARATOR_BYTE); int idx2 = Bytes.indexOf(lockValue, LOCK_EXPIRING_DATE_SEPARATOR_BYTE); + String type = Bytes.toString(lockValue, 0, idx1); String token = Bytes.toString(lockValue, idx1 + 1, idx2 - idx1 - 1); long expireDate; try { @@ -319,45 +278,82 @@ protected static String parseValidLockToken(byte[] lockValue) { } catch (NumberFormatException e) { // Deprecated token. Assume expired token if (Bytes.contains(lockValue, DEPRECATED_LOCK_SEPARATOR_BYTE)) { - return null; + return new LockToken(); } throw e; } + return new LockToken(lockValue, type, token, expireDate); + } + + protected static final class LockToken { + protected final byte[] lockValue; + protected final String type; + protected final String token; + protected final Long expireDate; + + private LockToken() { + this.lockValue = new byte[0]; + this.type = null; + this.token = null; + this.expireDate = null; + } + + private LockToken(byte[] lockValue, String type, String token, long expireDate) { + this.lockValue = lockValue; + this.type = type; + this.token = token; + this.expireDate = expireDate; + } + + /** + * A lock is taken if there is any lockValue, and + * the token has not expired. + * + * @return if the lock is taken + */ + public boolean isTaken() { + return token != null && !isExpired(); + } + + public boolean isExpired() { + return expireDate != null && expireDate < System.currentTimeMillis(); + } - if (isExpired(expireDate)) { - return null; - } else { + public boolean isEmpty() { + return token == null; + } + + public boolean equals(String token) { + return !isEmpty() && this.token.equals(token); + } + + public boolean equals(long tokenHash) { + return !isEmpty() && this.token.hashCode() == tokenHash; + } + + public byte[] getLockValue() { + return lockValue; + } + + public String getType() { + return type; + } + + public String getToken() { return token; } - } - protected static long parseExpireDate(byte[] lockValue) { - int idx2 = Bytes.indexOf(lockValue, LOCK_EXPIRING_DATE_SEPARATOR_BYTE); - try { - return Long.parseLong(Bytes.toString(lockValue, idx2 + 1)); - } catch (NumberFormatException e) { - // Deprecated token. Assume expired token - if (Bytes.contains(lockValue, DEPRECATED_LOCK_SEPARATOR_BYTE)) { - return -1; - } - throw e; + public Long getExpireDate() { + return expireDate; } - } - /** - * A lock is taken if there is any lockValue in the array, and - * the token has not expired. - * - * - * @param lockValue lock values - * @return if the lock is taken - */ - protected static boolean isLockTaken(byte[] lockValue) { - return parseValidLockToken(lockValue) != null; + public long getRemainingTime() { + return expireDate == null ? 0 : expireDate - System.currentTimeMillis(); + } } - private static boolean isExpired(long expireDate) { - return expireDate < System.currentTimeMillis(); + private LockToken readLockToken(byte[] row, byte[] qualifier) throws IOException { + return parseLockToken(readLockValue(row, qualifier)); } private byte[] readLockValue(byte[] row, byte[] qualifier) throws IOException { @@ -380,18 +376,22 @@ public IllegalLockStatusException(String s) { super(s); } - public static IllegalLockStatusException inconsistentLock(byte[] row, byte[] column, long lockToken, String currentLock, - byte[] lockValue) { - if (StringUtils.isEmpty(currentLock)) { - return new IllegalLockStatusException("Inconsistent lock status. You don't have the lock! " + private static IllegalLockStatusException inconsistentLock(byte[] row, byte[] column, long lockTokenHash, LockToken currentLock) { + if (currentLock.isEmpty()) { + return new IllegalLockStatusException("Inconsistent lock status. You don't have the lock! Empty lock. " + + "Row: '" + Bytes.toStringBinary(row) + "', " + + "column: '" + Bytes.toStringBinary(column) + "'. " + + "Lock: " + Bytes.toString(currentLock.lockValue) + "."); + } else if (currentLock.isExpired()) { + return new IllegalLockStatusException("Inconsistent lock status. You don't have the lock! Expired lock. " + "Row: '" + Bytes.toStringBinary(row) + "', " + "column: '" + Bytes.toStringBinary(column) + "'. " - + "Lock: " + Bytes.toString(lockValue) + "."); + + "Lock: " + Bytes.toString(currentLock.lockValue) + "."); } else { - return new IllegalLockStatusException("Inconsistent lock status. You don't have the lock! " + return new IllegalLockStatusException("Inconsistent lock status. You don't have the lock! Lock is taken. " + "Row: '" + Bytes.toStringBinary(row) + "', " + "column: '" + Bytes.toStringBinary(column) + "'. " - + lockToken + " != " + currentLock.hashCode() + " from " + Bytes.toString(lockValue)); + + lockTokenHash + " != " + currentLock.token.hashCode() + " from " + Bytes.toString(currentLock.lockValue)); } } } @@ -403,4 +403,38 @@ protected static ExecutorService buildThreadPool() { .build()); } + private final class HBaseLock extends Lock { + private final long lockDuration; + private final String token; + private final long tokenHash; + private final byte[] row; + private final byte[] column; + + private HBaseLock(long lockDuration, String token, byte[] row, byte[] column) { + super(HBaseLockManager.threadPool, (int) (lockDuration / 4), token.hashCode()); + this.lockDuration = lockDuration; + this.token = token; + this.tokenHash = token.hashCode(); + this.row = row; + this.column = column; + } + + @Override + public void unlock0() { + try { + synchronized (this) { + HBaseLockManager.this.unlock(row, column, tokenHash); + } + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + @Override + public void refresh() throws IOException { + synchronized (this) { + HBaseLockManager.this.refresh(row, column, tokenHash, lockDuration); + } + } + } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/AbstractHBaseDBAdaptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/AbstractHBaseDBAdaptor.java index 3f6a23c5abf..fbdfdf920ec 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/AbstractHBaseDBAdaptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/AbstractHBaseDBAdaptor.java @@ -279,14 +279,5 @@ protected Lock lockToken(byte[] rowKey, byte[] lockName, long lockDuration, long } } - protected void unLock(byte[] rowKey, byte[] lockName, long token) { - try { - this.lock.unlock(rowKey, lockName, token); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseProjectMetadataDBAdaptor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseProjectMetadataDBAdaptor.java index 85a1d0cec0c..6ddae38be65 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseProjectMetadataDBAdaptor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/metadata/HBaseProjectMetadataDBAdaptor.java @@ -49,20 +49,14 @@ public HBaseProjectMetadataDBAdaptor(HBaseManager hBaseManager, String metaTable @Override public Lock lockProject(long lockDuration, long timeout, String lockName) - throws InterruptedException, TimeoutException, StorageEngineException { + throws StorageEngineException { try { ensureTableExists(); return lock.lock(getProjectRowKey(), getLockColumn(lockName), lockDuration, timeout); - } catch (IOException e) { - throw new StorageEngineException("Error locking project in HBase", e); - } - } - - @Override - public void unLockProject(long lockId) throws StorageEngineException { - try { - lock.unlock(getProjectRowKey(), getLockColumn(), lockId); - } catch (IOException e) { + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new StorageEngineException("Unable to lock the Project", e); + } catch (IOException | TimeoutException e) { throw new StorageEngineException("Error locking project in HBase", e); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManagerTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManagerTest.java index 0f421081ff6..5943a43519f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManagerTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/utils/HBaseLockManagerTest.java @@ -214,23 +214,47 @@ public void testLockRefreshExpiredRefresh() throws Exception { @Test public void testGetCurrent() { long e = System.currentTimeMillis() + 1000; - String s; + HBaseLockManager.LockToken s; + + // null token + s = HBaseLockManager.parseLockToken(null); + assertTrue(s.isEmpty()); + assertFalse(s.isTaken()); + assertEquals(null, s.getType()); + assertArrayEquals(new byte[0], s.getLockValue()); + + // Empty token + s = HBaseLockManager.parseLockToken(Bytes.toBytes("")); + assertTrue(s.isEmpty()); + assertFalse(s.isTaken()); + assertEquals(null, s.getType()); + assertArrayEquals(new byte[0], s.getLockValue()); // Expired current token - s = HBaseLockManager.parseValidLockToken(Bytes.toBytes("CURRENT-abc:123")); - assertNull(s); + s = HBaseLockManager.parseLockToken(Bytes.toBytes("CURRENT-abc:123")); + assertFalse(s.isEmpty()); + assertEquals("CURRENT", s.getType()); // Valid current token - s = HBaseLockManager.parseValidLockToken(Bytes.toBytes("CURRENT-abc:" + e)); - assertEquals("abc", s); + s = HBaseLockManager.parseLockToken(Bytes.toBytes("CURRENT-abc:" + e)); + assertEquals("abc", s.token); + assertEquals("CURRENT", s.getType()); + assertFalse(s.isExpired()); + assertTrue(s.isTaken()); // Current expired, first refresh valid - s = HBaseLockManager.parseValidLockToken(Bytes.toBytes("REFRESH-abc:" + e)); - assertEquals("abc", s); + s = HBaseLockManager.parseLockToken(Bytes.toBytes("REFRESH-abc:" + e)); + assertEquals("abc", s.token); + assertEquals("REFRESH", s.getType()); + assertFalse(s.isExpired()); + assertTrue(s.isTaken()); // Expired refresh - s = HBaseLockManager.parseValidLockToken(Bytes.toBytes("REFRESH-abc:200")); - assertNull(s); + s = HBaseLockManager.parseLockToken(Bytes.toBytes("REFRESH-abc:200")); + assertEquals("abc", s.token); + assertEquals("REFRESH", s.getType()); + assertTrue(s.isExpired()); + assertFalse(s.isTaken()); } } \ No newline at end of file From dd1dcec6de1746730e5e5a102cc3289194a59cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 31 May 2024 12:11:32 +0100 Subject: [PATCH 320/354] storage: Increase metadata lock duration and timeout. #TASK-5895 --- .../opencga/storage/core/variant/VariantStorageOptions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageOptions.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageOptions.java index caefbb5260e..bc1be055466 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageOptions.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageOptions.java @@ -83,8 +83,8 @@ public enum VariantStorageOptions implements ConfigurationOption { INDEX_SEARCH("indexSearch", false), // Build secondary indexes using search engine. - METADATA_LOCK_DURATION("metadata.lock.duration", 5000), - METADATA_LOCK_TIMEOUT("metadata.lock.timeout", 60000), + METADATA_LOCK_DURATION("metadata.lock.duration", 60000), + METADATA_LOCK_TIMEOUT("metadata.lock.timeout", 600000), METADATA_LOAD_BATCH_SIZE("metadata.load.batchSize", 10), METADATA_LOAD_THREADS("metadata.load.numThreads", 4), From 1c7db628514e40d960c97fdea2b1a782e67b698a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 31 May 2024 14:48:15 +0100 Subject: [PATCH 321/354] storage: Improve testing SampleIndexAggregation of intergenic queries. #TASK-6136 --- .../index/sample/SampleIndexQueryParser.java | 90 ++++++++++++------- .../sample/SampleIndexQueryParserTest.java | 18 +++- .../variant/index/sample/SampleIndexTest.java | 44 ++++++--- 3 files changed, 109 insertions(+), 43 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java index 6137c5bd6c1..803fa75fea5 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParser.java @@ -1216,18 +1216,7 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema CtBtFtCombinationIndexSchema.Filter ctBtTfFilter = schema.getCtBtTfIndex().getField().noOpFilter(); IndexFilter clinicalFilter = schema.getClinicalIndexSchema().noOpFilter(); - Boolean intergenic = null; - - ParsedVariantQuery.VariantQueryXref variantQueryXref = VariantQueryParser.parseXrefs(query); - if (!isValidParam(query, REGION)) { - if (!variantQueryXref.getGenes().isEmpty() - && variantQueryXref.getIds().isEmpty() - && variantQueryXref.getOtherXrefs().isEmpty() - && variantQueryXref.getVariants().isEmpty()) { - // If only filtering by genes, is not intergenic. - intergenic = false; - } - } + final Boolean intergenic = isIntergenicQuery(query); // BiotypeConsquenceTypeFlagCombination combination = BiotypeConsquenceTypeFlagCombination // .fromQuery(query, Arrays.asList(schema.getTranscriptFlagIndexSchema().getField().getConfiguration().getValues())); @@ -1237,18 +1226,10 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema boolean tfCovered = false; if (isValidParam(query, ANNOT_CONSEQUENCE_TYPE)) { - List soNames = query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key()); - soNames = soNames.stream() + List soNames = query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key()) + .stream() .map(ct -> ConsequenceTypeMappings.accessionToTerm.get(VariantQueryUtils.parseConsequenceType(ct))) .collect(Collectors.toList()); - if (!soNames.contains(VariantAnnotationConstants.INTERGENIC_VARIANT) - && !soNames.contains(VariantAnnotationConstants.REGULATORY_REGION_VARIANT) - && !soNames.contains(VariantAnnotationConstants.TF_BINDING_SITE_VARIANT)) { - // All ct values but "intergenic_variant" and "regulatory_region_variant" are in genes (i.e. non-intergenic) - intergenic = false; - } else if (soNames.size() == 1 && soNames.contains(VariantAnnotationConstants.INTERGENIC_VARIANT)) { - intergenic = true; - } // else, leave undefined : intergenic = null boolean ctFilterCoveredBySummary = false; boolean ctBtCombinationCoveredBySummary = false; if (SampleIndexSchema.CUSTOM_LOF.containsAll(soNames)) { @@ -1295,14 +1276,17 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema } } - // Do not use ctIndex if the CT filter is covered by the summary - // Use the ctIndex if: + // Do not use ctIndex for intergenic queries (intergenic == true) + // or queries that might return intergenic variants (intergenic == null) + // + // Use the ctIndex if any of: // - The CtFilter is not covered by the summary // - The query has the combination CT+BT , and it is not covered by the summary // - The query has the combination CT+TF - boolean useCtIndexFilter = !ctFilterCoveredBySummary - || (!ctBtCombinationCoveredBySummary && combination.isBiotype()) - || combination.isFlag(); + boolean useCtIndexFilter = + intergenic == Boolean.FALSE && (!ctFilterCoveredBySummary + || (!ctBtCombinationCoveredBySummary && combination.isBiotype()) + || combination.isFlag()); if (useCtIndexFilter) { ctCovered = completeIndex; consequenceTypeFilter = schema.getCtIndex().getField().buildFilter(new OpValue<>("=", soNames)); @@ -1317,8 +1301,6 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema } if (isValidParam(query, ANNOT_BIOTYPE)) { - // All biotype values are in genes (i.e. non-intergenic) - intergenic = false; boolean biotypeFilterCoveredBySummary = false; List biotypes = query.getAsStringList(VariantQueryParam.ANNOT_BIOTYPE.key()); if (BIOTYPE_SET.containsAll(biotypes)) { @@ -1350,8 +1332,6 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema List transcriptFlags = query.getAsStringList(ANNOT_TRANSCRIPT_FLAG.key()); tfFilter = schema.getTranscriptFlagIndexSchema().getField().buildFilter(new OpValue<>("=", transcriptFlags)); tfCovered = completeIndex & tfFilter.isExactFilter(); - // Transcript flags are in transcripts/genes. (i.e. non-intergenic) - intergenic = false; // TranscriptFlag filter is covered by index if (tfCovered) { if (!isValidParam(query, GENE) && simpleCombination(combination)) { @@ -1538,12 +1518,60 @@ protected SampleAnnotationIndexQuery parseAnnotationIndexQuery(SampleIndexSchema // If intergenic is undefined, or true, CT and BT filters can not be used. biotypeFilter = schema.getBiotypeIndex().getField().noOpFilter(); consequenceTypeFilter = schema.getCtIndex().getField().noOpFilter(); + if (!biotypeFilter.isNoOp()) { + throw new IllegalStateException("Unexpected BT filter for intergenic=" + intergenic); + } + if (!consequenceTypeFilter.isNoOp()) { + throw new IllegalStateException("Unexpected CT filter for intergenic=" + intergenic); + } } return new SampleAnnotationIndexQuery(new byte[]{annotationIndexMask, annotationIndex}, consequenceTypeFilter, biotypeFilter, tfFilter, ctBtTfFilter, clinicalFilter, populationFrequencyFilter); } + private Boolean isIntergenicQuery(Query query) { + ParsedVariantQuery.VariantQueryXref variantQueryXref = VariantQueryParser.parseXrefs(query); + if (!isValidParam(query, REGION)) { + if (!variantQueryXref.getGenes().isEmpty() + && variantQueryXref.getIds().isEmpty() + && variantQueryXref.getOtherXrefs().isEmpty() + && variantQueryXref.getVariants().isEmpty()) { + // If only filtering by genes, is not intergenic. + return false; + } + } + + if (isValidParam(query, ANNOT_BIOTYPE)) { + // All biotype values are in genes (i.e. non-intergenic) + return false; + } + if (isValidParam(query, ANNOT_BIOTYPE)) { + // All biotype values are in genes (i.e. non-intergenic) + return false; + } + if (isValidParam(query, ANNOT_TRANSCRIPT_FLAG)) { + // Transcript flags are in transcripts/genes. (i.e. non-intergenic) + return false; + } + if (isValidParam(query, ANNOT_CONSEQUENCE_TYPE)) { + List soNames = query.getAsStringList(VariantQueryParam.ANNOT_CONSEQUENCE_TYPE.key()); + soNames = soNames.stream() + .map(ct -> ConsequenceTypeMappings.accessionToTerm.get(VariantQueryUtils.parseConsequenceType(ct))) + .collect(Collectors.toList()); + if (!soNames.contains(VariantAnnotationConstants.INTERGENIC_VARIANT) + && !soNames.contains(VariantAnnotationConstants.REGULATORY_REGION_VARIANT) + && !soNames.contains(VariantAnnotationConstants.TF_BINDING_SITE_VARIANT)) { + // All ct values but "intergenic_variant" and "regulatory_region_variant" are in genes (i.e. non-intergenic) + return false; + } else if (soNames.size() == 1 && soNames.contains(VariantAnnotationConstants.INTERGENIC_VARIANT)) { + return true; + } // else, leave undefined : intergenic = null + } + // Unable to determine if the query is intergenic or not. Return null for uncertain. + return null; + } + private boolean simpleCombination(BiotypeConsquenceTypeFlagCombination combination) { return combination.numParams() == 1; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java index 7ae4e36f3ec..212b0521b26 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexQueryParserTest.java @@ -1384,7 +1384,10 @@ public void parseIntergenicTest() { checkIntergenic(true, new Query(ANNOT_CONSEQUENCE_TYPE.key(), "intergenic_variant")); checkIntergenic(null, new Query(ANNOT_CONSEQUENCE_TYPE.key(), "missense_variant,intergenic_variant")); checkIntergenic(null, new Query(ANNOT_CONSEQUENCE_TYPE.key(), "intergenic_variant,missense_variant")); - + checkIntergenic(null, new Query(ANNOT_CONSEQUENCE_TYPE.key(), VariantAnnotationConstants.REGULATORY_REGION_VARIANT)); + checkIntergenic(false, new Query(ANNOT_CONSEQUENCE_TYPE.key(), VariantAnnotationConstants.REGULATORY_REGION_VARIANT) + .append(ANNOT_BIOTYPE.key(), "protein_coding")); + // Nonsense combination checkIntergenic(false, new Query(ANNOT_CONSEQUENCE_TYPE.key(), "intergenic_variant").append(ANNOT_BIOTYPE.key(), "protein_coding")); } @@ -1570,6 +1573,19 @@ public void testCoveredQuery_ct() { parseAnnotationIndexQuery(query, true); assertTrue(query.isEmpty()); + query = new Query().append(ANNOT_CONSEQUENCE_TYPE.key(), String.join(OR, VariantAnnotationConstants.REGULATORY_REGION_VARIANT)); + parseAnnotationIndexQuery(query, true); + indexQuery = parseAnnotationIndexQuery(query, true); + assertTrue(indexQuery.getConsequenceTypeFilter().isNoOp()); + assertFalse(query.isEmpty()); // regulatory_region_variant can't be used for CT filter alone + + query = new Query().append(ANNOT_CONSEQUENCE_TYPE.key(), String.join(OR, VariantAnnotationConstants.REGULATORY_REGION_VARIANT)) + .append(ANNOT_BIOTYPE.key(), "protein_coding"); + indexQuery = parseAnnotationIndexQuery(query, true); + assertFalse(indexQuery.getConsequenceTypeFilter().isNoOp()); + assertFalse(indexQuery.getBiotypeFilter().isNoOp()); + assertTrue(query.isEmpty()); // regulatory_region_variant can be used together with biotype + query = new Query().append(ANNOT_CONSEQUENCE_TYPE.key(), String.join(OR, VariantAnnotationConstants.STOP_LOST)); parseAnnotationIndexQuery(query, false); indexQuery = parseAnnotationIndexQuery(query, false); diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java index e15cb6ae4bb..9ee362f8724 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java @@ -897,29 +897,55 @@ public void testAggregationCorrectnessCt() throws Exception { @Test public void testAggregationCorrectnessTFBS() throws Exception { - testAggregationCorrectness(TF_BINDING_SITE_VARIANT, true); + // Special scenario. This CT might include intergenic values, so can't be used alone + testAggregationCorrectness(new Query(ANNOT_BIOTYPE.key(), "protein_coding"), TF_BINDING_SITE_VARIANT); } @Test public void testAggregationCorrectnessRegulatoryRegionVariant() throws Exception { - testAggregationCorrectness(REGULATORY_REGION_VARIANT); + // Special scenario. This CT might include intergenic values, so can't be used alone + testAggregationCorrectness(new Query(ANNOT_BIOTYPE.key(), "protein_coding"), + REGULATORY_REGION_VARIANT); + } + + @Test + public void testAggregationByIntergenicQuery() throws Exception { + SampleIndexVariantAggregationExecutor executor = new SampleIndexVariantAggregationExecutor(metadataManager, sampleIndexDBAdaptor); + + Query baseQuery = new Query(STUDY.key(), STUDY_NAME_3) + .append(SAMPLE.key(), "NA12877"); + + assertFalse(executor.canUseThisExecutor(new Query(baseQuery) + .append(ANNOT_CONSEQUENCE_TYPE.key(), REGULATORY_REGION_VARIANT), new QueryOptions(QueryOptions.FACET, "consequenceType"))); + assertFalse(executor.canUseThisExecutor(new Query(baseQuery) + .append(ANNOT_CONSEQUENCE_TYPE.key(), TF_BINDING_SITE_VARIANT), new QueryOptions(QueryOptions.FACET, "consequenceType"))); + + assertTrue(executor.canUseThisExecutor(new Query(baseQuery) + .append(ANNOT_CONSEQUENCE_TYPE.key(), REGULATORY_REGION_VARIANT) + .append(ANNOT_BIOTYPE.key(), "protein_coding"), + new QueryOptions(QueryOptions.FACET, "consequenceType"))); + assertTrue(executor.canUseThisExecutor(new Query(baseQuery) + .append(ANNOT_CONSEQUENCE_TYPE.key(), TF_BINDING_SITE_VARIANT) + .append(ANNOT_BIOTYPE.key(), "protein_coding"), + new QueryOptions(QueryOptions.FACET, "consequenceType"))); } private void testAggregationCorrectness(String ct) throws Exception { - testAggregationCorrectness(ct, false); + testAggregationCorrectness(new Query(), ct); } - private void testAggregationCorrectness(String ct, boolean sampleIndexMightBeMoreAccurate) throws Exception { + private void testAggregationCorrectness(Query baseQuery, String ct) throws Exception { SampleIndexVariantAggregationExecutor executor = new SampleIndexVariantAggregationExecutor(metadataManager, sampleIndexDBAdaptor); - Query query = new Query(STUDY.key(), STUDY_NAME_3) + Query query = new Query(baseQuery) + .append(STUDY.key(), STUDY_NAME_3) .append(SAMPLE.key(), "NA12877") .append(ANNOT_CONSEQUENCE_TYPE.key(), ct); assertTrue(executor.canUseThisExecutor(query, new QueryOptions(QueryOptions.FACET, "consequenceType"))); AtomicInteger count = new AtomicInteger(0); sampleIndexDBAdaptor.iterator(new Query(query), new QueryOptions()).forEachRemaining(v -> count.incrementAndGet()); - FacetField facet = executor.aggregation(query, new QueryOptions(QueryOptions.FACET, "consequenceType")).first(); + FacetField facet = executor.aggregation(new Query(query), new QueryOptions(QueryOptions.FACET, "consequenceType")).first(); assertEquals(count.get(), facet.getCount()); FacetField.Bucket bucket = facet.getBuckets().stream().filter(b -> b.getValue().equals(ct)).findFirst().orElse(null); @@ -934,11 +960,7 @@ private void testAggregationCorrectness(String ct, boolean sampleIndexMightBeMor } } else { assertNotNull(msg, bucket); - if (sampleIndexMightBeMoreAccurate) { - assertThat(msg, count.get(), gte(bucket.getCount())); - } else { - assertEquals(msg, count.get(), bucket.getCount()); - } + assertEquals(msg, count.get(), bucket.getCount()); } } From e5dd72f1dfd616beeefa8f6847fc5ef9452a39f0 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jun 2024 12:30:18 +0200 Subject: [PATCH 322/354] Prepare release 2.12.5 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 0e8c8b94814..01544f3538a 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index ae72959c680..afbb2c15342 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 120850f20f8..f4971939bbb 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index dfe20bc1c6d..700c1de69c7 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index e17ae02a3c5..bdae22a335a 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index f64f0c82cd5..dab473a7362 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 3010de9e741..83d7becd861 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 35730710dd5..e206eec5c95 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index dee5f5ab22d..47262e2c647 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index f566fb8d61a..6ebbd4567c9 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index d2569f51505..bb9e72406d9 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 98684f89345..44301eb5b63 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index c40bd0c545e..85bd6a7da66 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index f2ab268c070..a15d1e80dbd 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index c78627c4980..5a107fec8fc 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 5f0d66e4a26..0790a13a764 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index ede0e9d5479..a4e177c4403 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 46032914536..9403f1ba8f9 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index b318a6c26bb..3c31682fb6e 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index ae075a55888..a1df570546a 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 ../pom.xml diff --git a/pom.xml b/pom.xml index 29536c3be50..1bc6c3f8de1 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5-SNAPSHOT + 2.12.5 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.5_dev - 2.12.5_dev - 5.8.4-SNAPSHOT - 2.12.3-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.5-SNAPSHOT + 2.12.5 + 2.12.5 + 5.8.3 + 2.12.2 + 4.12.0 + 2.12.5 0.2.0 2.11.4 From 9f2b06d543a52537c69829f6d7a372d694bed70e Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Tue, 4 Jun 2024 12:32:48 +0200 Subject: [PATCH 323/354] Prepare next release 2.12.6-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 01544f3538a..69a9b33089c 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index afbb2c15342..18071afb30b 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index f4971939bbb..46964bfae1f 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 700c1de69c7..cfdf162a973 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index bdae22a335a..ad02409329b 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index dab473a7362..00abcbf61d7 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 83d7becd861..4e304b5e34c 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index e206eec5c95..798bdd26d41 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 47262e2c647..b5d0d0fad60 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 6ebbd4567c9..50c8105886a 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index bb9e72406d9..130716cf970 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 44301eb5b63..29e4ac40576 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 85bd6a7da66..e4d5e3c8439 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index a15d1e80dbd..7831c67ec49 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 5a107fec8fc..f3792747d50 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 0790a13a764..8b769184fa3 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index a4e177c4403..1d3b4e5f795 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 9403f1ba8f9..6a725c2746e 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 3c31682fb6e..1f00aeda658 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index a1df570546a..953a68ee373 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 1bc6c3f8de1..aef3f1a0bc0 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.5 + 2.12.6-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.5 - 2.12.5 - 5.8.3 - 2.12.2 - 4.12.0 - 2.12.5 + 2.12.6_dev + 2.12.6_dev + 5.8.4-SNAPSHOT + 2.12.3-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.6-SNAPSHOT 0.2.0 2.11.4 From b6e6e868e4a59d5df2ef53f86555bf60b39c8349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 20 Jun 2024 13:03:41 +0100 Subject: [PATCH 324/354] storage: Fix compoundHet query in single-study projects. #TASK-6311 --- .../VariantStorageMetadataRepairTool.java | 1 - .../VariantStorageMetadataManager.java | 13 +++ .../core/variant/VariantStorageEngine.java | 2 +- .../variant/query/ParsedVariantQuery.java | 21 +++-- .../variant/query/VariantQueryParser.java | 80 ++++++++++++------- .../BreakendVariantQueryExecutor.java | 4 +- .../CompoundHeterozygousQueryExecutor.java | 6 +- .../DBAdaptorVariantQueryExecutor.java | 4 +- .../executors/NoOpVariantQueryExecutor.java | 4 +- .../query/executors/VariantQueryExecutor.java | 5 +- ...amplesSearchIndexVariantQueryExecutor.java | 4 +- .../SearchIndexVariantQueryExecutor.java | 8 +- .../variant/search/VariantSearchUtils.java | 4 +- .../executors/VariantQueryExecutorTest.java | 57 ++++++++++--- .../variant/HadoopVariantQueryParser.java | 5 +- ...seColumnIntersectVariantQueryExecutor.java | 5 +- ...ampleIndexMendelianErrorQueryExecutor.java | 9 +-- .../SampleIndexOnlyVariantQueryExecutor.java | 8 +- .../SampleIndexVariantQueryExecutor.java | 4 +- .../index/family/FamilyIndexDriver.java | 5 +- .../sample/SampleIndexSchemaFactory.java | 3 +- .../variant/index/sample/SampleIndexTest.java | 12 ++- 22 files changed, 177 insertions(+), 87 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantStorageMetadataRepairTool.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantStorageMetadataRepairTool.java index a8e9ba5b528..29ed6efb996 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantStorageMetadataRepairTool.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/variant/operations/VariantStorageMetadataRepairTool.java @@ -134,7 +134,6 @@ private void rebuildSampleFileIds(VariantStorageMetadataManager metadataManager, for (Map.Entry> entry : batch.entrySet()) { Integer sampleId = entry.getKey(); List fileIds = entry.getValue(); - List actualFiles = metadataManager.getSampleMetadata(studyId, sampleId).getFiles(); if (actualFiles.size() != fileIds.size() || !actualFiles.containsAll(fileIds)) { fixedSamples++; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java index a27f908173b..6c539e4b077 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/metadata/VariantStorageMetadataManager.java @@ -840,6 +840,19 @@ public Iterator fileMetadataIterator(int studyId) { return fileDBAdaptor.fileIterator(studyId); } + public SampleMetadata getSampleMetadata(Integer studyId, Integer sampleId) { + return getSampleMetadata(studyId.intValue(), sampleId.intValue()); + } + + public SampleMetadata getSampleMetadata(int studyId, Integer sampleId) { + return getSampleMetadata(studyId, sampleId.intValue()); + } + + public SampleMetadata getSampleMetadata(int studyId, Object sample) { + int sampleId = getSampleIdOrFail(studyId, sample); + return getSampleMetadata(studyId, sampleId); + } + public SampleMetadata getSampleMetadata(int studyId, int sampleId) { return sampleDBAdaptor.getSampleMetadata(studyId, sampleId, null); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index dd24ee1334d..0f51fbe39eb 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -1348,7 +1348,7 @@ public VariantQueryExecutor getVariantQueryExecutor(Query query, QueryOptions op public VariantQueryExecutor getVariantQueryExecutor(ParsedVariantQuery variantQuery) { try { for (VariantQueryExecutor executor : getVariantQueryExecutors()) { - if (executor.canUseThisExecutor(variantQuery.getQuery(), variantQuery.getInputOptions())) { + if (executor.canUseThisExecutor(variantQuery, variantQuery.getInputOptions())) { logger.info("Using VariantQueryExecutor : " + executor.getClass().getName()); logger.info(" Query : " + VariantQueryUtils.printQuery(variantQuery.getInputQuery())); logger.info(" Options : " + variantQuery.getInputOptions().toJson()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java index 8468ab34317..300f2e6b48a 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/ParsedVariantQuery.java @@ -267,14 +267,6 @@ public VariantStudyQuery setStudies(ParsedQuery studies) { return this; } - public String getStudyOrFail() { - if (studies == null || studies.size() != 1) { - throw new VariantQueryException("Require exactly one study"); - } else { - return studies.get(0); - } - } - public ParsedQuery>> getGenotypes() { return genotypes; } @@ -311,6 +303,19 @@ public void setDefaultStudy(StudyMetadata defaultStudy) { public StudyMetadata getDefaultStudy() { return defaultStudy; } + + public StudyMetadata getDefaultStudyOrFail() { + if (defaultStudy == null) { + if (studies.size() != 1) { + throw new VariantQueryException("Only one study is allowed. Found " + studies.size() + " studies"); + } else { + throw new VariantQueryException("One study required. None provided"); + } + } else { + return defaultStudy; + } + } + } public static class VariantQueryXref { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java index 641e365a51d..bd02a6b4303 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/VariantQueryParser.java @@ -17,10 +17,7 @@ import org.opencb.commons.datastore.core.QueryParam; import org.opencb.opencga.core.models.variant.VariantAnnotationConstants; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; -import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; -import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; -import org.opencb.opencga.storage.core.metadata.models.TaskMetadata; -import org.opencb.opencga.storage.core.metadata.models.VariantScoreMetadata; +import org.opencb.opencga.storage.core.metadata.models.*; import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; @@ -170,15 +167,14 @@ public ParsedVariantQuery parseQuery(Query inputQuery, QueryOptions options, boo VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.key(), VariantStorageOptions.APPROXIMATE_COUNT_SAMPLING_SIZE.defaultValue())); - variantQuery.setProjection(projectionParser.parseVariantQueryProjection(inputQuery, options)); - VariantQuery query; if (!skipPreProcess) { - query = new VariantQuery(preProcessQuery(inputQuery, options, variantQuery.getProjection())); + query = new VariantQuery(preProcessQuery(inputQuery, options)); } else { query = new VariantQuery(inputQuery); } variantQuery.setQuery(query); + variantQuery.setProjection(projectionParser.parseVariantQueryProjection(query, options)); List geneRegions = Region.parseRegions(query.getString(ANNOT_GENE_REGIONS.key())); variantQuery.setGeneRegions(geneRegions == null ? Collections.emptyList() : geneRegions); @@ -221,10 +217,7 @@ public ParsedVariantQuery parseQuery(Query inputQuery, QueryOptions options, boo = new ParsedQuery<>(sampleDataQuery.getKey(), sampleDataQuery.getOperation(), new ArrayList<>(sampleDataQuery.size())); for (KeyValues> keyValues : sampleDataQuery) { sampleDataQueryWithMetadata.getValues().add( - keyValues.mapKey(sample -> { - int sampleId = metadataManager.getSampleIdOrFail(defaultStudy.getId(), sample); - return metadataManager.getSampleMetadata(defaultStudy.getId(), sampleId); - })); + keyValues.mapKey(sample -> metadataManager.getSampleMetadata(defaultStudy.getId(), sample))); } studyQuery.setSampleDataQuery(sampleDataQueryWithMetadata); } @@ -232,17 +225,13 @@ public ParsedVariantQuery parseQuery(Query inputQuery, QueryOptions options, boo return variantQuery; } - public final Query preProcessQuery(Query originalQuery, QueryOptions options) { - return preProcessQuery(originalQuery, options, null); - } - - protected Query preProcessQuery(Query originalQuery, QueryOptions options, VariantQueryProjection projection) { + public Query preProcessQuery(Query originalQuery, QueryOptions options) { // Copy input query! Do not modify original query! Query query = VariantQueryUtils.copy(originalQuery); preProcessAnnotationParams(query); - preProcessStudyParams(query, options, projection); + preProcessStudyParams(query, options); if (options != null && options.getLong(QueryOptions.LIMIT) < 0) { throw VariantQueryException.malformedParam(QueryOptions.LIMIT, options.getString(QueryOptions.LIMIT), @@ -388,7 +377,7 @@ private VariantType parseVariantType(String type) { } } - protected void preProcessStudyParams(Query query, QueryOptions options, VariantQueryProjection projection) { + protected void preProcessStudyParams(Query query, QueryOptions options) { StudyMetadata defaultStudy = getDefaultStudy(query); QueryOperation formatOperator = null; if (isValidParam(query, SAMPLE_DATA)) { @@ -613,10 +602,13 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ if (isValidParam(query, SAMPLE_MENDELIAN_ERROR) || isValidParam(query, SAMPLE_DE_NOVO) - || isValidParam(query, SAMPLE_DE_NOVO_STRICT)) { + || isValidParam(query, SAMPLE_DE_NOVO_STRICT) + || isValidParam(query, SAMPLE_COMPOUND_HETEROZYGOUS)) { + boolean requireMendelianReady = false; QueryParam param = null; if (isValidParam(query, SAMPLE_MENDELIAN_ERROR)) { param = SAMPLE_MENDELIAN_ERROR; + requireMendelianReady = true; } if (isValidParam(query, SAMPLE_DE_NOVO)) { if (param != null) { @@ -624,6 +616,7 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ param, query.getString(param.key()), SAMPLE_DE_NOVO, query.getString(SAMPLE_DE_NOVO.key())); } + requireMendelianReady = true; param = SAMPLE_DE_NOVO; } if (isValidParam(query, SAMPLE_DE_NOVO_STRICT)) { @@ -632,8 +625,21 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ param, query.getString(param.key()), SAMPLE_DE_NOVO_STRICT, query.getString(SAMPLE_DE_NOVO_STRICT.key())); } + requireMendelianReady = true; param = SAMPLE_DE_NOVO_STRICT; } + if (isValidParam(query, SAMPLE_COMPOUND_HETEROZYGOUS)) { + if (param != null) { + throw VariantQueryException.unsupportedParamsCombination( + param, query.getString(param.key()), + SAMPLE_COMPOUND_HETEROZYGOUS, query.getString(SAMPLE_COMPOUND_HETEROZYGOUS.key())); + } + requireMendelianReady = false; + param = SAMPLE_COMPOUND_HETEROZYGOUS; + } + if (param == null) { + throw new IllegalStateException("Unknown param"); + } if (defaultStudy == null) { throw VariantQueryException.missingStudyForSamples(query.getAsStringList(param.key()), metadataManager.getStudyNames()); @@ -645,15 +651,18 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ genotypeParam, query.getString(genotypeParam.key()) ); } - List samples = query.getAsStringList(param.key()); + Object value = query.get(param.key()); + List samples; + if (value instanceof Trio) { + samples = Collections.singletonList(((Trio) value).getChild()); + } else { + samples = query.getAsStringList(param.key()); + } Set samplesAndParents = new LinkedHashSet<>(samples); for (String sample : samples) { - Integer sampleId = metadataManager.getSampleId(defaultStudy.getId(), sample); - if (sampleId == null) { - throw VariantQueryException.sampleNotFound(sample, defaultStudy.getName()); - } - SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(defaultStudy.getId(), sampleId); - if (TaskMetadata.Status.READY != sampleMetadata.getMendelianErrorStatus()) { + SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(defaultStudy.getId(), sample); + if (requireMendelianReady + && TaskMetadata.Status.READY != sampleMetadata.getMendelianErrorStatus()) { throw VariantQueryException.malformedParam(param, "Sample \"" + sampleMetadata.getName() + "\" does not have the Mendelian Errors precomputed yet"); } @@ -674,6 +683,21 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ } else { query.put(INCLUDE_SAMPLE.key(), new ArrayList<>(samplesAndParents)); } + if (param == SAMPLE_COMPOUND_HETEROZYGOUS) { + int studyId = defaultStudy.getId(); + if (!(value instanceof Trio)) { + if (samples.size() > 1) { + throw VariantQueryException.malformedParam(SAMPLE, value.toString(), + "More than one sample provided for compound heterozygous filter."); + } + SampleMetadata sm = metadataManager.getSampleMetadata(studyId, samples.get(0)); + Trio trio = new Trio(null, + metadataManager.getSampleName(studyId, sm.getFather()), + metadataManager.getSampleName(studyId, sm.getMother()), + sm.getName()); + query.put(SAMPLE_COMPOUND_HETEROZYGOUS.key(), trio); + } + } } if (isValidParam(query, SCORE)) { @@ -704,9 +728,7 @@ protected void preProcessStudyParams(Query query, QueryOptions options, VariantQ || isValidParam(query, SAMPLE_SKIP) || isValidParam(query, SAMPLE_LIMIT) ) { - if (projection == null) { - projection = projectionParser.parseVariantQueryProjection(query, options); - } + VariantQueryProjection projection = projectionParser.parseVariantQueryProjection(query, options); // Apply the sample pagination. // Remove the sampleLimit and sampleSkip to avoid applying the pagination twice query.remove(SAMPLE_SKIP.key()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java index 6eb237ea4b3..bc40c5b6418 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/BreakendVariantQueryExecutor.java @@ -14,6 +14,7 @@ import org.opencb.commons.datastore.core.QueryParam; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; @@ -40,7 +41,8 @@ public BreakendVariantQueryExecutor(String storageEngineId, ObjectMap options, } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException { + VariantQuery query = variantQuery.getQuery(); return query.getString(VariantQueryParam.TYPE.key()).equals(VariantType.BREAKEND.name()) && VariantQueryUtils.isValidParam(query, VariantQueryParam.GENOTYPE); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java index c6f4b87a5f0..bcecac57b5a 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/CompoundHeterozygousQueryExecutor.java @@ -64,14 +64,14 @@ public CompoundHeterozygousQueryExecutor(VariantStorageMetadataManager metadataM } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException { - return isValidParam(query, VariantQueryUtils.SAMPLE_COMPOUND_HETEROZYGOUS); + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException { + return isValidParam(variantQuery.getQuery(), VariantQueryUtils.SAMPLE_COMPOUND_HETEROZYGOUS); } @Override protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) { Trio trio = getCompHetTrio(variantQuery.getQuery()); - String study = variantQuery.getStudyQuery().getStudyOrFail(); + String study = variantQuery.getStudyQuery().getDefaultStudyOrFail().getName(); return getOrIterator(study, trio.getChild(), trio.getFather(), trio.getMother(), variantQuery, iterator); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java index 474cbc3fa9f..e667e2a1485 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/DBAdaptorVariantQueryExecutor.java @@ -52,9 +52,9 @@ protected Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) { for (QueryParam unsupportedParam : UNSUPPORTED_PARAMS) { - if (VariantQueryUtils.isValidParam(query, unsupportedParam)) { + if (VariantQueryUtils.isValidParam(variantQuery.getQuery(), unsupportedParam)) { logger.warn("Unsupported variant query param {} in {}", unsupportedParam.key(), DBAdaptorVariantQueryExecutor.class.getSimpleName()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java index e286b4a07ce..5f2da2c2056 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/NoOpVariantQueryExecutor.java @@ -8,6 +8,7 @@ import org.opencb.opencga.storage.core.metadata.models.CohortMetadata; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.query.*; @@ -34,7 +35,8 @@ public NoOpVariantQueryExecutor(VariantStorageMetadataManager metadataManager, S } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException { + VariantQuery query = variantQuery.getQuery(); boolean sampleQuery = false; String sample = null; if (VariantQueryUtils.isValidParam(query, VariantQueryParam.GENOTYPE)) { diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java index 26d53e89e5c..49ddc339658 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutor.java @@ -2,7 +2,6 @@ import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.ObjectMap; -import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; @@ -65,12 +64,12 @@ public static void setDefaultTimeout(QueryOptions queryOptions, ObjectMap config /** * Determine if this VariantQueryExecutor can run the given query. - * @param query Query to execute + * @param variantQuery Query to execute * @param options Options for the query * @return True if this variant query executor is valid for the query * @throws StorageEngineException if there is an error */ - public abstract boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException; + public abstract boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException; protected abstract Object getOrIterator(ParsedVariantQuery variantQuery, boolean iterator) throws StorageEngineException; diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java index 200b2eb463d..cfa794cbe10 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SamplesSearchIndexVariantQueryExecutor.java @@ -7,6 +7,7 @@ import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; @@ -28,7 +29,8 @@ public SamplesSearchIndexVariantQueryExecutor(VariantDBAdaptor dbAdaptor, Varian } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException { + VariantQuery query = variantQuery.getQuery(); String samplesCollection = inferSpecificSearchIndexSamplesCollection(query, options, getMetadataManager(), dbName); return samplesCollection != null && searchActiveAndAlive(samplesCollection); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java index 12c86cc4e2b..bd6b8e6437f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java @@ -11,10 +11,7 @@ import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.exceptions.VariantSearchException; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; -import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; -import org.opencb.opencga.storage.core.variant.adaptors.VariantField; -import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryException; -import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; +import org.opencb.opencga.storage.core.variant.adaptors.*; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; @@ -76,7 +73,8 @@ public SearchIndexVariantQueryExecutor setIntersectParamsThreshold(int intersect } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) throws StorageEngineException { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) throws StorageEngineException { + VariantQuery query = variantQuery.getQuery(); return doQuerySearchManager(query, options) || doIntersectWithSearch(query, options); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchUtils.java index e46c6379dc6..5365643b1fa 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/VariantSearchUtils.java @@ -280,7 +280,9 @@ public static String inferSpecificSearchIndexSamplesCollection( Set samples = new HashSet<>(); if (isValidParam(query, VariantQueryParam.SAMPLE)) { String value = query.getString(VariantQueryParam.SAMPLE.key()); - samples.addAll(splitValue(value).getValue()); + for (String sample : splitValue(value).getValue()) { + samples.add(sample.split(IS)[0]); + } } if (isValidParam(query, VariantQueryParam.GENOTYPE)) { HashMap> map = new HashMap<>(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java index 778257d5999..3d0b2524681 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -12,6 +12,7 @@ import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.metadata.models.StudyMetadata; +import org.opencb.opencga.storage.core.metadata.models.Trio; import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.GenotypeClass; @@ -72,6 +73,9 @@ public void setUp() throws Exception { fileIndexed = true; Integer indexedFileId = metadataManager.getIndexedFiles(studyMetadata.getId()).iterator().next(); + Trio trio = new Trio("NA19660", "NA19661", "NA19685"); + variantStorageEngine.familyIndex(studyMetadata.getName(), Collections.singletonList(trio), new ObjectMap()); + //Calculate stats QueryOptions options = new QueryOptions(VariantStorageOptions.STUDY.key(), STUDY_NAME) .append(VariantStorageOptions.LOAD_BATCH_SIZE.key(), 100) @@ -188,23 +192,53 @@ public void testXRefRs() throws StorageEngineException { } } + @Test + public void testCompHetQuery() throws StorageEngineException { +// Matcher matcher = allOf( +// anyOf( +// samePosition(new Variant("1:2441358:T:C")), +// samePosition(new Variant("1:2458010:G:C")), +// samePosition(new Variant("19:501725:G:A")), +// samePosition(new Variant("19:501900:C:A"))), +// withStudy(STUDY_NAME, withSampleGt("NA19685"))); + Matcher matcher = null; + testQuery(new VariantQuery().sample("NA19685:compoundheterozygous") + .study(STUDY_NAME) + .biotype("protein_coding"), + new QueryOptions(), + matcher, + false); + } + public VariantQueryResult testQuery(Query query, QueryOptions options, Matcher matcher) throws StorageEngineException { + return testQuery(query, options, matcher, true); + } + + public VariantQueryResult testQuery(Query query, QueryOptions options, Matcher matcher, boolean expectDBAdaptorExecutor) + throws StorageEngineException { logger.info(""); logger.info(""); logger.info("####################################################"); logger.info("########## TEST QUERY :" + query.toJson()); logger.info("####################################################"); logger.info("## Allowed VariantQueryExecutors:"); + ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { - if (variantQueryExecutor.canUseThisExecutor(query, options)) { + if (variantQueryExecutor.canUseThisExecutor(variantQuery, options)) { logger.info("## - " + variantQueryExecutor.getClass().getSimpleName()); } } - logger.info("## Using DBAdaptorVariantQueryExecutor for expected results"); - Assert.assertTrue(dbQueryExecutor.canUseThisExecutor(query, options)); + VariantQueryResult expected; + if (expectDBAdaptorExecutor) { + logger.info("## Using DBAdaptorVariantQueryExecutor for expected results"); + Assert.assertTrue(dbQueryExecutor.canUseThisExecutor(variantQuery, options)); - ParsedVariantQuery variantQuery = variantStorageEngine.parseQuery(query, options); - VariantQueryResult expected = dbQueryExecutor.get(variantQuery); + expected = dbQueryExecutor.get(variantQuery); + } else { + logger.info("## DBAdaptorVariantQueryExecutor can not be used for expected results"); + Assert.assertFalse(dbQueryExecutor.canUseThisExecutor(variantQuery, options)); + expected = null; + } VariantQueryResult unfilteredResult = null; VariantQueryResult result = null; @@ -243,21 +277,24 @@ public VariantQueryResult testQuery(Query query, QueryOptions options, QueryOptions emptyOptions = new QueryOptions(); emptyOptions.putIfNotEmpty(QueryOptions.INCLUDE, options.getString(QueryOptions.INCLUDE)); emptyOptions.putIfNotEmpty(QueryOptions.EXCLUDE, options.getString(QueryOptions.EXCLUDE)); + logger.info("## unfiltered query " + VariantQueryUtils.printQuery(emptyQuery)); + logger.info("## unfiltered options " + emptyOptions.toJson()); unfilteredResult = dbQueryExecutor.get(variantStorageEngine.parseQuery(emptyQuery, emptyOptions)); } for (VariantQueryExecutor variantQueryExecutor : variantQueryExecutors) { - if (variantQueryExecutor.canUseThisExecutor(query, options)) { + if (variantQueryExecutor.canUseThisExecutor(variantQuery, options)) { logger.info(""); logger.info("###################"); logger.info("### Testing " + variantQueryExecutor.getClass().getSimpleName()); result = variantQueryExecutor.get(variantQuery); logger.info("### Num results : " + result.getNumResults()); logger.info("###################"); - expected.getResults().sort(Comparator.comparing(Variant::toString)); - result.getResults().sort(Comparator.comparing(Variant::toString)); - Assert.assertEquals(expected.getResults(), result.getResults()); - + if (expected != null) { + expected.getResults().sort(Comparator.comparing(Variant::toString)); + result.getResults().sort(Comparator.comparing(Variant::toString)); + Assert.assertEquals(expected.getResults(), result.getResults()); + } assertThat(result, numResults(gt(0))); if (matcher != null) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java index 6aa472ee735..45682df31f4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/HadoopVariantQueryParser.java @@ -5,7 +5,6 @@ import org.opencb.opencga.storage.core.metadata.VariantStorageMetadataManager; import org.opencb.opencga.storage.core.utils.CellBaseUtils; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; -import org.opencb.opencga.storage.core.variant.query.projection.VariantQueryProjection; import java.util.List; @@ -18,8 +17,8 @@ public HadoopVariantQueryParser(CellBaseUtils cellBaseUtils, VariantStorageMetad } @Override - protected Query preProcessQuery(Query originalQuery, QueryOptions options, VariantQueryProjection projection) { - Query query = super.preProcessQuery(originalQuery, options, projection); + public Query preProcessQuery(Query originalQuery, QueryOptions options) { + Query query = super.preProcessQuery(originalQuery, options); List studyNames = metadataManager.getStudyNames(); if (isValidParam(query, STUDY) && studyNames.size() == 1) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java index c672e94fb58..ceb52e5eeaa 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/HBaseColumnIntersectVariantQueryExecutor.java @@ -7,6 +7,7 @@ import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.query.ParsedQuery; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; @@ -43,8 +44,8 @@ public HBaseColumnIntersectVariantQueryExecutor(VariantDBAdaptor dbAdaptor, Stri } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) { - + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) { + VariantQuery query = variantQuery.getQuery(); if (!options.getBoolean(HBASE_COLUMN_INTERSECT, ACTIVE_BY_DEFAULT)) { // HBase column intersect not active return false; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java index 4dd50c9eacf..5063ca1fe4b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexMendelianErrorQueryExecutor.java @@ -9,7 +9,6 @@ import org.opencb.biodata.tools.pedigree.MendelianError; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.ObjectMap; -import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import org.opencb.opencga.storage.core.metadata.models.SampleMetadata; import org.opencb.opencga.storage.core.metadata.models.Trio; @@ -33,10 +32,10 @@ public SampleIndexMendelianErrorQueryExecutor(VariantHadoopDBAdaptor dbAdaptor, } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) { - if (VariantQueryUtils.isValidParam(query, VariantQueryUtils.SAMPLE_MENDELIAN_ERROR) - || VariantQueryUtils.isValidParam(query, VariantQueryUtils.SAMPLE_DE_NOVO) - || VariantQueryUtils.isValidParam(query, VariantQueryUtils.SAMPLE_DE_NOVO_STRICT)) { + public boolean canUseThisExecutor(ParsedVariantQuery query, QueryOptions options) { + if (VariantQueryUtils.isValidParam(query.getQuery(), VariantQueryUtils.SAMPLE_MENDELIAN_ERROR) + || VariantQueryUtils.isValidParam(query.getQuery(), VariantQueryUtils.SAMPLE_DE_NOVO) + || VariantQueryUtils.isValidParam(query.getQuery(), VariantQueryUtils.SAMPLE_DE_NOVO_STRICT)) { return super.canUseThisExecutor(query, options); } else { return false; diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java index 371d57ac4da..3e9e0b9b75f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java @@ -86,7 +86,8 @@ public SampleIndexOnlyVariantQueryExecutor(VariantHadoopDBAdaptor dbAdaptor, Sam } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) { + public boolean canUseThisExecutor(ParsedVariantQuery variantQuery, QueryOptions options) { + VariantQuery query = variantQuery.getQuery(); if (SampleIndexQueryParser.validSampleIndexQuery(query)) { if (isFullyCoveredQuery(query, options)) { @@ -179,10 +180,13 @@ protected boolean shouldGetCount(QueryOptions options, boolean iterator) { private boolean isFullyCoveredQuery(Query inputQuery, QueryOptions options) { Query query = new Query(inputQuery); + if (!isQueryCovered(query)) { + return false; + } // ParsedVariantQuery parsedVariantQuery = variantQueryProjectionParser.parseQuery(query, options, true); SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); - return isQueryCovered(query) && isIncludeCovered(sampleIndexQuery, inputQuery, options); + return isIncludeCovered(sampleIndexQuery, inputQuery, options); } private boolean isQueryCovered(Query query) { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java index 6175128018d..03e8a5fe880 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexVariantQueryExecutor.java @@ -58,9 +58,9 @@ public SampleIndexVariantQueryExecutor(VariantHadoopDBAdaptor dbAdaptor, SampleI } @Override - public boolean canUseThisExecutor(Query query, QueryOptions options) { + public boolean canUseThisExecutor(ParsedVariantQuery query, QueryOptions options) { if (options.getBoolean(SAMPLE_INDEX_INTERSECT, true)) { - return SampleIndexQueryParser.validSampleIndexQuery(query); + return SampleIndexQueryParser.validSampleIndexQuery(query.getQuery()); } return false; } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java index af632d69436..ad09896e627 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/family/FamilyIndexDriver.java @@ -112,10 +112,9 @@ protected void parseAndValidateParameters() throws IOException { } else { trioList.add(metadataManager.getSampleIdOrFail(getStudyId(), trio.getMother())); } - int childId = metadataManager.getSampleIdOrFail(getStudyId(), trio.getChild()); - trioList.add(childId); - SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(getStudyId(), childId); + SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(getStudyId(), trio.getChild()); + trioList.add(sampleMetadata.getId()); if (!overwrite && sampleMetadata.getFamilyIndexStatus(sampleIndexVersion) == TaskMetadata.Status.READY) { LOGGER.info("Skip sample " + sampleMetadata.getName() + ". Already precomputed!"); } else { diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexSchemaFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexSchemaFactory.java index ef2aecb803b..a087420f425 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexSchemaFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexSchemaFactory.java @@ -78,8 +78,7 @@ public Collection getSampleIndexConfigurationVersions(int studyId, Coll private Collection getSampleIndexConfigurationVersions(int studyId, Object sample, boolean withAnnotation, boolean withFamilyIndex) { - int sampleId = metadataManager.getSampleIdOrFail(studyId, sample); - SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(studyId, sampleId); + SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(studyId, sample); Collection versions = sampleMetadata.getSampleIndexVersions(); if (withAnnotation) { versions = CollectionUtils.intersection( diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java index 9ee362f8724..144083e5bd0 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexTest.java @@ -1068,7 +1068,11 @@ public void testFamilyIndexQueryCount() { .append(QueryOptions.LIMIT, 10) .append(QueryOptions.COUNT, true)); - System.out.println(result.getResults().stream().map(Variant::getAnnotation).flatMap(v -> v.getConsequenceTypes().stream()).map(ConsequenceType::getGeneName).collect(Collectors.toSet())); + System.out.println(result.getResults().stream() + .map(Variant::getAnnotation) + .flatMap(v -> v.getConsequenceTypes().stream()) + .map(ConsequenceType::getGeneName) + .collect(Collectors.toSet())); result = variantStorageEngine.get( new Query() @@ -1082,7 +1086,11 @@ public void testFamilyIndexQueryCount() { .append(QueryOptions.LIMIT, 10) .append(QueryOptions.COUNT, true)); - System.out.println(result.getResults().stream().map(Variant::getAnnotation).flatMap(v -> v.getConsequenceTypes().stream()).map(ConsequenceType::getGeneName).collect(Collectors.toSet())); + System.out.println(result.getResults().stream() + .map(Variant::getAnnotation) + .flatMap(v -> v.getConsequenceTypes().stream()) + .map(ConsequenceType::getGeneName) + .collect(Collectors.toSet())); } @Test From 8e7cfb051da669fa26255de80702721e3b5f7421 Mon Sep 17 00:00:00 2001 From: pfurio Date: Fri, 21 Jun 2024 14:51:43 +0200 Subject: [PATCH 325/354] catalog: fix cohort-sample synchronisation, #TASK-6345 --- .../syncCohortsAndSamplesMigration.java | 73 ++++++++++++++++ .../db/mongodb/CohortMongoDBAdaptor.java | 27 +++--- .../catalog/managers/CatalogManagerTest.java | 87 +++++++++++++++++++ 3 files changed, 173 insertions(+), 14 deletions(-) create mode 100644 opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java new file mode 100644 index 00000000000..c9adf51f577 --- /dev/null +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java @@ -0,0 +1,73 @@ +package org.opencb.opencga.app.migrations.v2_12_6; + +import com.mongodb.client.MongoCollection; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Projections; +import com.mongodb.client.model.Updates; +import org.apache.commons.collections4.CollectionUtils; +import org.bson.Document; +import org.bson.conversions.Bson; +import org.opencb.opencga.catalog.db.api.CohortDBAdaptor; +import org.opencb.opencga.catalog.db.api.SampleDBAdaptor; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptor; +import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; +import org.opencb.opencga.catalog.migration.Migration; +import org.opencb.opencga.catalog.migration.MigrationTool; + +import java.util.List; +import java.util.stream.Collectors; + +@Migration(id = "syncCohortsAndSamplesMigration" , + description = "Sync array of samples from cohort with array of cohortIds from Sample", + version = "2.12.6", + domain = Migration.MigrationDomain.CATALOG, + language = Migration.MigrationLanguage.JAVA, + date = 20240621 +) +public class syncCohortsAndSamplesMigration extends MigrationTool { + + @Override + protected void run() throws Exception { + MongoCollection sampleCollection = getMongoCollection(MongoDBAdaptorFactory.SAMPLE_COLLECTION); + MongoCollection sampleArchiveCollection = getMongoCollection(MongoDBAdaptorFactory.SAMPLE_ARCHIVE_COLLECTION); + + queryMongo(MongoDBAdaptorFactory.COHORT_COLLECTION, new Document(), + Projections.include(CohortDBAdaptor.QueryParams.ID.key(), CohortDBAdaptor.QueryParams.SAMPLES.key()), + cohortDoc -> { + String cohortId = cohortDoc.getString(CohortDBAdaptor.QueryParams.ID.key()); + List samples = cohortDoc.getList(CohortDBAdaptor.QueryParams.SAMPLES.key(), Document.class); + if (CollectionUtils.isNotEmpty(samples)) { + List sampleUids = samples + .stream() + .map(s -> s.get(SampleDBAdaptor.QueryParams.UID.key(), Number.class).longValue()) + .collect(Collectors.toList()); + // Ensure all those samples have a reference to the cohortId + Bson query = Filters.and( + Filters.in(SampleDBAdaptor.QueryParams.UID.key(), sampleUids), + Filters.eq(MongoDBAdaptor.LAST_OF_VERSION, true) + ); + Bson update = Updates.addToSet(SampleDBAdaptor.QueryParams.COHORT_IDS.key(), cohortId); + long addedMissingCohort = sampleCollection.updateMany(query, update).getModifiedCount(); + sampleArchiveCollection.updateMany(query, update); + + // Ensure there aren't any samples pointing to this cohort that are not in the samples array + query = Filters.and( + Filters.nin(SampleDBAdaptor.QueryParams.UID.key(), sampleUids), + Filters.eq(SampleDBAdaptor.QueryParams.COHORT_IDS.key(), cohortId), + Filters.eq(MongoDBAdaptor.LAST_OF_VERSION, true) + ); + update = Updates.pull(SampleDBAdaptor.QueryParams.COHORT_IDS.key(), cohortId); + long removedNonAssociatedCohort = sampleCollection.updateMany(query, update).getModifiedCount(); + sampleArchiveCollection.updateMany(query, update); + + if (addedMissingCohort > 0 || removedNonAssociatedCohort > 0) { + logger.info("Fixed cohort '{}' references. " + + "Added missing reference to {} samples. " + + "Removed non-associated reference from {} samples.", + cohortId, addedMissingCohort, removedNonAssociatedCohort); + } + } + }); + } + +} diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java index 4a1977e1433..e2e20be31a6 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java @@ -235,22 +235,21 @@ public OpenCGAResult update(long cohortId, ObjectMap parameters, QueryOptions qu @Override public OpenCGAResult update(long cohortUid, ObjectMap parameters, List variableSetList, QueryOptions queryOptions) throws CatalogDBException, CatalogParameterException, CatalogAuthorizationException { - Query query = new Query(QueryParams.UID.key(), cohortUid); - QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, - Arrays.asList(QueryParams.ID.key(), QueryParams.UID.key(), QueryParams.STUDY_UID.key(), - QueryParams.SAMPLES.key() + "." + QueryParams.ID.key())); - OpenCGAResult documentResult = get(query, options); - if (documentResult.getNumResults() == 0) { - throw new CatalogDBException("Could not update cohort. Cohort uid '" + cohortUid + "' not found."); - } - String cohortId = documentResult.first().getId(); - try { - return runTransaction(clientSession -> transactionalUpdate(clientSession, documentResult.first(), parameters, variableSetList, - queryOptions)); + return runTransaction(clientSession -> { + Query query = new Query(QueryParams.UID.key(), cohortUid); + QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, + Arrays.asList(QueryParams.ID.key(), QueryParams.UID.key(), QueryParams.STUDY_UID.key(), + QueryParams.SAMPLES.key() + "." + QueryParams.ID.key())); + OpenCGAResult documentResult = get(clientSession, query, options); + if (documentResult.getNumResults() == 0) { + throw new CatalogDBException("Could not update cohort. Cohort uid '" + cohortUid + "' not found."); + } + return transactionalUpdate(clientSession, documentResult.first(), parameters, variableSetList, queryOptions); + }); } catch (CatalogDBException e) { - logger.error("Could not update cohort {}: {}", cohortId, e.getMessage(), e); - throw new CatalogDBException("Could not update cohort " + cohortId + ": " + e.getMessage(), e.getCause()); + logger.error("Could not update cohort {}: {}", cohortUid, e.getMessage(), e); + throw new CatalogDBException("Could not update cohort " + cohortUid + ": " + e.getMessage(), e.getCause()); } } diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java index 2b403314f4a..890c74709de 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/CatalogManagerTest.java @@ -16,9 +16,11 @@ package org.opencb.opencga.catalog.managers; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.mongodb.BasicDBObject; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.StopWatch; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -57,6 +59,9 @@ import javax.naming.NamingException; import java.io.IOException; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static org.hamcrest.CoreMatchers.allOf; @@ -1417,6 +1422,88 @@ public void updateSampleCohortTest() throws Exception { } } + @Test + public void updateSampleCohortWithThreadsTest() throws Exception { + Sample sampleId1 = catalogManager.getSampleManager().create(studyFqn, new Sample().setId("SAMPLE_1"), INCLUDE_RESULT, token).first(); + Sample sampleId2 = catalogManager.getSampleManager().create(studyFqn, new Sample().setId("SAMPLE_2"), INCLUDE_RESULT, token).first(); + Sample sampleId3 = catalogManager.getSampleManager().create(studyFqn, new Sample().setId("SAMPLE_3"), INCLUDE_RESULT, token).first(); + catalogManager.getCohortManager().create(studyFqn, new Cohort().setId("MyCohort1") + .setSamples(Arrays.asList(sampleId1)), null, token).first(); + catalogManager.getCohortManager().create(studyFqn, new Cohort().setId("MyCohort2") + .setSamples(Arrays.asList(sampleId2, sampleId3)), null, token).first(); + + ExecutorService executorService = Executors.newFixedThreadPool(10, + new ThreadFactoryBuilder() + .setNameFormat("executor-service-%d") + .build()); + + StopWatch stopWatch = StopWatch.createStarted(); + List> sampleIds = new ArrayList<>(5); + List innerArray = new ArrayList<>(50); + for (int i = 0; i < 250; i++) { + if (i % 50 == 0) { + System.out.println("i = " + i); + } + + String sampleId = "SAMPLE_AUTO_" + i; + executorService.submit(() -> { + try { + catalogManager.getSampleManager().create(studyFqn, new Sample().setId(sampleId), QueryOptions.empty(), token); + } catch (CatalogException e) { + throw new RuntimeException(e); + } + }); + if (innerArray.size() == 50) { + sampleIds.add(new ArrayList<>(innerArray)); + innerArray.clear(); + } + innerArray.add(sampleId); + } + sampleIds.add(new ArrayList<>(innerArray)); + executorService.shutdown(); + executorService.awaitTermination(1, TimeUnit.MINUTES); + + System.out.println("Creating 250 samples took " + stopWatch.getTime(TimeUnit.SECONDS) + " seconds"); + + stopWatch.stop(); + stopWatch.reset(); + stopWatch.start(); + executorService = Executors.newFixedThreadPool(3); + int execution = 0; + Map actionMap = new HashMap<>(); + actionMap.put(CohortDBAdaptor.QueryParams.SAMPLES.key(), ParamUtils.BasicUpdateAction.SET); + QueryOptions queryOptions = new QueryOptions(); + queryOptions.put(Constants.ACTIONS, actionMap); + for (List innerSampleIds : sampleIds) { + Cohort myCohort1 = catalogManager.getCohortManager().get(studyFqn, "MyCohort1", null, token).first(); + List sampleReferenceParamList = new ArrayList<>(myCohort1.getNumSamples() + innerSampleIds.size()); + sampleReferenceParamList.addAll(myCohort1.getSamples().stream().map(s -> new SampleReferenceParam().setId(s.getId())).collect(Collectors.toList())); + sampleReferenceParamList.addAll(innerSampleIds.stream().map(s -> new SampleReferenceParam().setId(s)).collect(Collectors.toList())); + int executionId = execution++; + executorService.submit(() -> { + try { + catalogManager.getCohortManager().update(studyFqn, "MyCohort1", + new CohortUpdateParams().setSamples(sampleReferenceParamList), + queryOptions, token); + System.out.println("Execution: " + executionId); + } catch (CatalogException e) { + throw new RuntimeException(e); + } + }); + } + executorService.shutdown(); + executorService.awaitTermination(1, TimeUnit.MINUTES); + System.out.println("Attaching 250 samples took " + stopWatch.getTime(TimeUnit.SECONDS) + " seconds"); + + // Ensure persistence + Query sampleQuery = new Query(SampleDBAdaptor.QueryParams.COHORT_IDS.key(), "MyCohort1"); + OpenCGAResult search = catalogManager.getSampleManager().search(studyFqn, sampleQuery, SampleManager.INCLUDE_SAMPLE_IDS, token); + Cohort myCohort1 = catalogManager.getCohortManager().get(studyFqn, "MyCohort1", null, token).first(); + assertEquals(search.getNumResults(), myCohort1.getNumSamples()); + Set sampleIdSet = search.getResults().stream().map(Sample::getId).collect(Collectors.toSet()); + assertTrue(myCohort1.getSamples().stream().map(Sample::getId).collect(Collectors.toSet()).containsAll(sampleIdSet)); + } + @Test public void deleteSampleCohortTest() throws Exception { Sample sampleId1 = catalogManager.getSampleManager().create(studyFqn, new Sample().setId("SAMPLE_1"), INCLUDE_RESULT, token).first(); From 2ccbe159c41bf9500c33462fca7883f40c33b8bd Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 27 Jun 2024 11:10:41 +0200 Subject: [PATCH 326/354] catalog: catch all Exceptions, #TASK-6345 --- .../opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java index e2e20be31a6..18189eb56d6 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/CohortMongoDBAdaptor.java @@ -247,9 +247,9 @@ public OpenCGAResult update(long cohortUid, ObjectMap parameters, List Date: Fri, 28 Jun 2024 14:53:30 +0100 Subject: [PATCH 327/354] storage: Fix numTotalSamples variant result value. #TASK-6436 --- .../VariantQueryProjectionParser.java | 9 ++++++++- .../VariantDBAdaptorMultiFileTest.java | 18 +++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java index bdcd501ad88..95add22ec8e 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/query/projection/VariantQueryProjectionParser.java @@ -71,7 +71,14 @@ public VariantQueryProjection parseVariantQueryProjection(Query query, QueryOpti } Map> sampleIdsMap = getIncludeSampleIds(query, options, includeStudies, metadataManager); - int numTotalSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); + int numTotalSamples; + if (isValidParam(query, NUM_TOTAL_SAMPLES)) { + // NUM_TOTAL_SAMPLES might have been defined in the PreProcess step. + // This implies that the current query has the samples already paginated. + numTotalSamples = query.getInt(NUM_TOTAL_SAMPLES.key()); + } else { + numTotalSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); + } skipAndLimitSamples(query, sampleIdsMap); int numSamples = sampleIdsMap.values().stream().mapToInt(List::size).sum(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java index 9548338e3d8..903ba51f3a2 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantDBAdaptorMultiFileTest.java @@ -381,18 +381,22 @@ public void testSampleLimitSkip() throws Exception { VariantQueryResult result = query(new Query(SAMPLE_METADATA.key(), true).append(VariantQueryParam.INCLUDE_SAMPLE.key(), ALL), options); System.out.println("samples(ALL) = " + result.getSamples()); - for (int i : new int[]{1, 3, 6, 8, 10}) { + int numSamples = metadataManager.getStudyIds().stream().mapToInt(id -> metadataManager.getIndexedSamples(id).size()).sum(); + assertEquals(8, numSamples); + for (int i : new int[]{1, 3, 6, numSamples, 10}) { result = query(new VariantQuery().sampleSkip(i).includeSampleAll().sampleMetadata(true), options); // System.out.println("samples(SKIP=" + i + ") = " + result.getSamples()); - assertEquals(Math.max(0, 8 - i), result.getSamples().values().stream().mapToInt(List::size).sum()); - assertEquals(Math.max(0, 8 - i), result.getNumSamples().intValue()); - assertEquals(8, result.getNumTotalSamples().intValue()); + int expected = Math.max(0, numSamples - i); + assertEquals("Skip = " + i + " , expected " + expected + " out of 8 samples", expected, result.getSamples().values().stream().mapToInt(List::size).sum()); + assertEquals("Skip = " + i + " , expected " + expected + " out of 8 samples", expected, result.getNumSamples().intValue()); + assertEquals(numSamples, result.getNumTotalSamples().intValue()); result = query(new VariantQuery().sampleLimit(i).includeSampleAll().sampleMetadata(true), options); // System.out.println("samples(LIMIT=" + i + ") = " + result.getSamples()); - assertEquals(Math.min(8, i), result.getSamples().values().stream().mapToInt(List::size).sum()); - assertEquals(Math.min(8, i), result.getNumSamples().intValue()); - assertEquals(8, result.getNumTotalSamples().intValue()); + expected = Math.min(numSamples, i); + assertEquals("Limit = " + i + " , expected " + expected + " out of 8 samples", expected, result.getSamples().values().stream().mapToInt(List::size).sum()); + assertEquals("Limit = " + i + " , expected " + expected + " out of 8 samples", expected, result.getNumSamples().intValue()); + assertEquals(numSamples, result.getNumTotalSamples().intValue()); } } From e95bae415936c8718ac5f0396dc342aadf477585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 28 Jun 2024 17:08:50 +0100 Subject: [PATCH 328/354] storage: Fix canUseThisExecutor on SampleIndexOnlyVariantQueryExecutor #TASK-6436 --- .../variant/index/SampleIndexOnlyVariantQueryExecutor.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java index 3e9e0b9b75f..7b1cdc5dceb 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/SampleIndexOnlyVariantQueryExecutor.java @@ -180,13 +180,11 @@ protected boolean shouldGetCount(QueryOptions options, boolean iterator) { private boolean isFullyCoveredQuery(Query inputQuery, QueryOptions options) { Query query = new Query(inputQuery); - if (!isQueryCovered(query)) { - return false; - } // ParsedVariantQuery parsedVariantQuery = variantQueryProjectionParser.parseQuery(query, options, true); SampleIndexQuery sampleIndexQuery = sampleIndexDBAdaptor.parseSampleIndexQuery(query); - return isIncludeCovered(sampleIndexQuery, inputQuery, options); + return isQueryCovered(sampleIndexQuery.getUncoveredQuery()) + && isIncludeCovered(sampleIndexQuery, inputQuery, options); } private boolean isQueryCovered(Query query) { From 54b667661428dd9ac4c9179f4c12e9f4e739dd05 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 5 Jul 2024 09:47:56 +0200 Subject: [PATCH 329/354] Prepare release 2.12.6 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 69a9b33089c..e6cd5eabffb 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 18071afb30b..c17445c0570 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 46964bfae1f..986afb42ef4 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index cfdf162a973..4ba23d9eb1f 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index ad02409329b..917c115a102 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 00abcbf61d7..d1a843a369a 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 4e304b5e34c..a0b09511331 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 798bdd26d41..85ac42f2654 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index b5d0d0fad60..726d8456aa3 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 50c8105886a..ac49b0167ac 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 130716cf970..290972cc572 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 29e4ac40576..ddcd73ee837 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index e4d5e3c8439..64269c04696 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 7831c67ec49..575b5ef7b73 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index f3792747d50..7583d28aa4f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 8b769184fa3..1198b5718ab 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 1d3b4e5f795..f6cba2e9980 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 6a725c2746e..31cf6d9531f 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 1f00aeda658..669b237ff25 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 953a68ee373..7e4d5f81c7f 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 ../pom.xml diff --git a/pom.xml b/pom.xml index aef3f1a0bc0..3dfc10baa5a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6-SNAPSHOT + 2.12.6 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.6_dev - 2.12.6_dev - 5.8.4-SNAPSHOT - 2.12.3-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.6-SNAPSHOT + 2.12.6 + 2.12.6 + 5.8.4 + 2.12.2 + 4.12.0 + 2.12.6 0.2.0 2.11.4 From fb2df63cf2e9f7d6cdcaf01d72f7216f3ed01f63 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 5 Jul 2024 09:50:36 +0200 Subject: [PATCH 330/354] Prepare next release 2.12.7-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index e6cd5eabffb..19e958d2f24 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index c17445c0570..6e3fbc1de9b 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 986afb42ef4..8bc8d823f06 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 4ba23d9eb1f..38a2e260e5d 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 917c115a102..b28dda9d198 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index d1a843a369a..264631c0715 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index a0b09511331..f7f42cdb79b 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 85ac42f2654..14b4301df21 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 726d8456aa3..c7bbc86990e 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index ac49b0167ac..a64f7df1ae6 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 290972cc572..d731ec91136 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index ddcd73ee837..00cef59a609 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 64269c04696..d1701f8cc3f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 575b5ef7b73..b78e0af52c8 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 7583d28aa4f..5caa3dbe832 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 1198b5718ab..de9e737a091 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index f6cba2e9980..53166582a8d 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 31cf6d9531f..b4a77d6c006 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 669b237ff25..0c79bf18478 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 7e4d5f81c7f..c2d6741df0b 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 3dfc10baa5a..3b066129ccc 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.6 + 2.12.7-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.6 - 2.12.6 - 5.8.4 - 2.12.2 - 4.12.0 - 2.12.6 + 2.12.7_dev + 2.12.7_dev + 5.8.5-SNAPSHOT + 2.12.3-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.7-SNAPSHOT 0.2.0 2.11.4 From 6485ab4f987378b170f5d77301262f2956624f23 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 12:29:38 +0200 Subject: [PATCH 331/354] pom: Added github packages to manage snapshots #TASK-6345 --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3b066129ccc..4f20ae98919 100644 --- a/pom.xml +++ b/pom.xml @@ -210,9 +210,10 @@ github - https://maven.pkg.github.com/opencb + https://maven.pkg.github.com/opencb/* true + daily From 35526348ec829283e901332cf9e3653f835b3736 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 12:50:28 +0200 Subject: [PATCH 332/354] pom: Added sonatype also manage snapshots #TASK-6345 --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4f20ae98919..1d43dac6518 100644 --- a/pom.xml +++ b/pom.xml @@ -213,7 +213,6 @@ https://maven.pkg.github.com/opencb/* true - daily From 941c98b970c914f534632a4aeb22eb2cf8a48868 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 12:57:33 +0200 Subject: [PATCH 333/354] pom: Comment sonatype to manage snapshots #TASK-6345 --- pom.xml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 1d43dac6518..32740c81d6c 100644 --- a/pom.xml +++ b/pom.xml @@ -200,19 +200,20 @@ - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - true - daily - - + + + + + + + + github https://maven.pkg.github.com/opencb/* true + daily From 59fb8dec60052f245500a6a68da427b33ef3f762 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 13:37:51 +0200 Subject: [PATCH 334/354] pom: Comment repositories section #TASK-6345 --- pom.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 32740c81d6c..baa98a08b25 100644 --- a/pom.xml +++ b/pom.xml @@ -199,7 +199,7 @@ - + @@ -208,15 +208,15 @@ - - github - https://maven.pkg.github.com/opencb/* - - true - daily - - - + + + + + + + + + From 166300c6c4336be2cea8f21414b05a9b53e4ced8 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 13:58:37 +0200 Subject: [PATCH 335/354] pom: Restore repositories section #TASK-6345 --- pom.xml | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index baa98a08b25..3b066129ccc 100644 --- a/pom.xml +++ b/pom.xml @@ -199,24 +199,23 @@ - - - - - - - - - - - - - - - - - - + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + true + daily + + + + github + https://maven.pkg.github.com/opencb + + true + + + From a5ba39630439add91d2cac1ff2d06e3d616faa75 Mon Sep 17 00:00:00 2001 From: pfurio Date: Mon, 8 Jul 2024 14:46:39 +0200 Subject: [PATCH 336/354] storage: set new default cellbase version, #TASK-6345 --- .../src/main/resources/storage-configuration.yml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml index 4f64a3ad939..a2f894900b3 100644 --- a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml +++ b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml @@ -11,7 +11,7 @@ cellbase: ## URL host to annotate variants, for example: https://uk.ws.zettagenomics.com/cellbase/ url: "${OPENCGA.CELLBASE.REST.HOST}" version: "${OPENCGA.CELLBASE.VERSION}" - dataRelease: "2" + dataRelease: "7" ## Storage Query Server configuration. When CLI is launched in 'server' mode a RESTful web server ## is launched in the specified port. diff --git a/pom.xml b/pom.xml index 1bc6c3f8de1..c8a67c3ec7e 100644 --- a/pom.xml +++ b/pom.xml @@ -1394,7 +1394,7 @@ https://uk.ws.zettagenomics.com/cellbase/ - v5.2 + v5.8 From e3de2b88e0c9075393832fe5286b39384ed68906 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 8 Jul 2024 16:25:20 +0200 Subject: [PATCH 337/354] storage-core pom: Exclusion distlib #TASK-6345 --- opencga-storage/opencga-storage-core/pom.xml | 6 ++++++ pom.xml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index d731ec91136..b2b6da5bea7 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -191,6 +191,12 @@ com.databricks SnpEff + + + distlib + distlib + + diff --git a/pom.xml b/pom.xml index 3b066129ccc..895167718f4 100644 --- a/pom.xml +++ b/pom.xml @@ -814,6 +814,12 @@ com.databricks SnpEff ${snpeff.version} + + + distlib + distlib + + org.apache.parquet From 0b95dabf2934a40648a41747e37dedfa436caaf2 Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 9 Jul 2024 14:14:19 +0200 Subject: [PATCH 338/354] core: add new cellbase data release, #TASK-6345 --- .../org/opencb/opencga/catalog/managers/ProjectManager.java | 3 ++- .../main/java/org/opencb/opencga/core/api/ParamConstants.java | 4 ++-- .../opencga/core/config/storage/CellBaseConfiguration.java | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java index 7900d958a42..ca0ddeb625c 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java @@ -320,7 +320,8 @@ private void validateProjectForCreation(Project project, User user) throws Catal } try { CellBaseConfiguration cellBaseConfiguration = ParamUtils.defaultObject(project.getCellbase(), - new CellBaseConfiguration(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION)); + new CellBaseConfiguration(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION, + ParamConstants.CELLBASE_DATA_RELEASE, ParamConstants.CELLBASE_APIKEY)); cellBaseConfiguration = CellBaseValidator.validate(cellBaseConfiguration, project.getOrganism().getScientificName(), project.getOrganism().getAssembly(), true); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index ba0afa4dfc6..bd177657c23 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -76,8 +76,8 @@ public class ParamConstants { public static final String CELLBASE_URL = "https://ws.zettagenomics.com/cellbase"; - public static final String CELLBASE_VERSION = "v5.2"; - public static final String CELLBASE_DATA_RELEASE = "3"; + public static final String CELLBASE_VERSION = "v5.8"; + public static final String CELLBASE_DATA_RELEASE = "7"; public static final String CELLBASE_APIKEY = ""; public static final String POP_FREQ_1000G_CB_V4 = "1kG_phase3"; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java index 2ef6a77cca4..101a822562c 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java @@ -46,7 +46,8 @@ public class CellBaseConfiguration { private String apiKey; public CellBaseConfiguration() { - this(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION); + this(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION, ParamConstants.CELLBASE_DATA_RELEASE, + ParamConstants.CELLBASE_APIKEY); } public CellBaseConfiguration(String url, String version) { From 6bee61ba5427f194152492819d682bf9154503ae Mon Sep 17 00:00:00 2001 From: pfurio Date: Wed, 10 Jul 2024 10:33:40 +0200 Subject: [PATCH 339/354] app: fix class naming issue, #TASK-6345 --- ...amplesMigration.java => SyncCohortsAndSamplesMigration.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/{syncCohortsAndSamplesMigration.java => SyncCohortsAndSamplesMigration.java} (98%) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java similarity index 98% rename from opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java rename to opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java index c9adf51f577..edfdbb7c828 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/syncCohortsAndSamplesMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java @@ -24,7 +24,7 @@ language = Migration.MigrationLanguage.JAVA, date = 20240621 ) -public class syncCohortsAndSamplesMigration extends MigrationTool { +public class SyncCohortsAndSamplesMigration extends MigrationTool { @Override protected void run() throws Exception { From f7e8ccb921ee577c79e6f8943ac2994705a28069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 16 Jul 2024 16:05:33 +0100 Subject: [PATCH 340/354] storage: Do not use CIEND on INSERTIONS to build HBase RowKey. #TASK-6558 --- .../org/opencb/opencga/core/api/ParamConstants.java | 2 +- .../core/variant/VariantStorageEngineSVTest.java | 11 ++++++++--- .../src/test/resources/variant-test-sv.vcf | 2 +- .../src/test/resources/variant-test-sv_2.vcf | 2 +- .../adaptors/phoenix/VariantPhoenixKeyFactory.java | 13 +++++++------ .../index/sample/SampleIndexVariantBiConverter.java | 2 +- .../phoenix/VariantPhoenixKeyFactoryTest.java | 2 +- 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index bd177657c23..086f90132ec 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -78,7 +78,7 @@ public class ParamConstants { public static final String CELLBASE_URL = "https://ws.zettagenomics.com/cellbase"; public static final String CELLBASE_VERSION = "v5.8"; public static final String CELLBASE_DATA_RELEASE = "7"; - public static final String CELLBASE_APIKEY = ""; + public static final String CELLBASE_APIKEY = null; public static final String POP_FREQ_1000G_CB_V4 = "1kG_phase3"; public static final String POP_FREQ_1000G_CB_V5 = "1000G"; diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java index 64fc14c4c6a..638b10023be 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java @@ -60,8 +60,8 @@ public void before() throws Exception { protected void loadFiles() throws Exception { variantStorageEngine.getConfiguration().getCellbase().setUrl(ParamConstants.CELLBASE_URL); - variantStorageEngine.getConfiguration().getCellbase().setVersion("v5.2"); - variantStorageEngine.getConfiguration().getCellbase().setDataRelease("3"); + variantStorageEngine.getConfiguration().getCellbase().setVersion(ParamConstants.CELLBASE_VERSION); + variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE); variantStorageEngine.getOptions().put(VariantStorageOptions.ASSEMBLY.key(), "grch38"); variantStorageEngine.reloadCellbaseConfiguration(); @@ -179,6 +179,11 @@ protected Map readVariants(URI input) throws StorageEngineExcep variantReader.post(); variantReader.close(); - return variants.stream().collect(Collectors.toMap(Variant::toString, v -> v)); + return variants.stream().peek(v->{ + if (v.getEnd() < v.getStart()) { + v.getSv().setCiEndLeft(null); + v.getSv().setCiEndRight(null); + } + }).collect(Collectors.toMap(Variant::toString, v -> v)); } } diff --git a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf index 9fc4fe9c325..6c1d32cf79a 100644 --- a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf +++ b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv.vcf @@ -44,7 +44,7 @@ 1 600000 . T . PASS SVTYPE=DEL;END=600250;SVLEN=-205;CIPOS=-56,20;CIEND=-10,62 GT 0/1 0/1 1 650000 . C . PASS SVTYPE=DEL;END=650100;CIEND=0,48;CIPOS=-49,0 GT 0/1 0/1 1 700000 . C . PASS SVTYPE=DEL;END=700297;SVLEN=-297;CIPOS=-22,18;CIEND=-12,32 GT 0/1 0/1 -1 800000 . A . PASS SVTYPE=INS;END=800000;SVLEN=6027;CIPOS=-16,22;RIGHT_SVINSSEQ=ACCACACCCACACAACACACA;LEFT_SVINSSEQ=TGTGGTGTGTGTGGTGTG GT 0/1 0/1 +1 800000 . A . PASS SVTYPE=INS;END=800000;SVLEN=6027;CIPOS=-16,22;CIEND=-16,22;RIGHT_SVINSSEQ=ACCACACCCACACAACACACA;LEFT_SVINSSEQ=TGTGGTGTGTGTGGTGTG GT 0/1 0/1 1 850000 . A . PASS SVTYPE=INS;END=850000;SVINSSEQ=ACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACAACCACACCCACACAACACACA GT 0/1 0/1 1 860000 . A . PASS SVTYPE=INVERSION;END=870000 GT 0/1 0/1 1 900000 . G . PASS SVTYPE=INS;END=900000;SVLEN=6027;CIPOS=-16,22 GT 0/1 0/1 diff --git a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf index 32ad6f4c4f0..0cfa097d85f 100644 --- a/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf +++ b/opencga-storage/opencga-storage-core/src/test/resources/variant-test-sv_2.vcf @@ -56,4 +56,4 @@ 1 1500000 . C ,, . PASS SVTYPE=CNV;CIEND=-150,150;CIPOS=-150,150;END=1504000 GT 0/1 2/3 1 1600000 . T G . PASS . GT 0/1 0/1 2 100001 BND_V T ]chr13:300000]T . PASS SVTYPE=BND GT 0/1 0/1 -13 300000 BND_U C C[chr2:100001[ . PASS SVTYPE=BND;CIPOS=-150,0 GT 0/1 0/1 \ No newline at end of file +13 300000 BND_U C C[chr2:100001[ . PASS SVTYPE=BND;CIPOS=-150,0;CIEND=-150,0 GT 0/1 0/1 \ No newline at end of file diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java index 9e06ebc4b51..d65588d2baf 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java @@ -146,7 +146,7 @@ public static boolean mightHashAlleles(Variant variant) { */ public static byte[] generateVariantRowKey(String chrom, int start, Integer end, String ref, String alt, StructuralVariation sv) { chrom = Region.normalizeChromosome(chrom); - alt = buildSymbolicAlternate(ref, alt, end, sv); + alt = buildSymbolicAlternate(ref, alt, start, end, sv); int size = getSize(chrom, ref, alt); if (size > HConstants.MAX_ROW_LENGTH) { @@ -201,11 +201,11 @@ public static String buildAlleles(Variant v) { } public static String buildSymbolicAlternate(Variant v) { - return buildSymbolicAlternate(v.getReference(), v.getAlternate(), v.getEnd(), v.getSv()); + return buildSymbolicAlternate(v.getReference(), v.getAlternate(), v.getStart(), v.getEnd(), v.getSv()); } // visible for test - public static String buildSymbolicAlternate(String reference, String alternate, Integer end, StructuralVariation sv) { + public static String buildSymbolicAlternate(String reference, String alternate, int start, Integer end, StructuralVariation sv) { if (sv != null) { byte[] alternateBytes = alternate.getBytes(); if (!Allele.wouldBeSymbolicAllele(alternateBytes) && emptyCiStartEnd(sv)) { @@ -216,14 +216,15 @@ public static String buildSymbolicAlternate(String reference, String alternate, if (StructuralVariantType.TANDEM_DUPLICATION.equals(sv.getType())) { alternate = VariantBuilder.DUP_TANDEM_ALT; } - boolean bnd = Allele.wouldBeBreakpoint(alternateBytes); + // Ignore CIEND on variants without an actual END. This includes Breakends and INSERTIONS + boolean ignoreCiend = Allele.wouldBeBreakpoint(alternateBytes) || end < start; alternate = alternate + SV_ALTERNATE_SEPARATOR + end + SV_ALTERNATE_SEPARATOR + (sv.getCiStartLeft() == null ? 0 : sv.getCiStartLeft()) + SV_ALTERNATE_SEPARATOR + (sv.getCiStartRight() == null ? 0 : sv.getCiStartRight()) - + SV_ALTERNATE_SEPARATOR + (bnd | sv.getCiEndLeft() == null ? 0 : sv.getCiEndLeft()) - + SV_ALTERNATE_SEPARATOR + (bnd | sv.getCiEndRight() == null ? 0 : sv.getCiEndRight()); + + SV_ALTERNATE_SEPARATOR + ((ignoreCiend || sv.getCiEndLeft() == null) ? 0 : sv.getCiEndLeft()) + + SV_ALTERNATE_SEPARATOR + ((ignoreCiend || sv.getCiEndRight() == null) ? 0 : sv.getCiEndRight()); if (StringUtils.isNotEmpty(sv.getLeftSvInsSeq()) || StringUtils.isNotEmpty(sv.getRightSvInsSeq())) { alternate = alternate diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java index 83e9dec3900..387a10f60ec 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/index/sample/SampleIndexVariantBiConverter.java @@ -672,7 +672,7 @@ protected int getRelativeStart(Variant variant) { } protected String getAlternate(Variant v) { - return VariantPhoenixKeyFactory.buildSymbolicAlternate(v.getReference(), v.getAlternate(), v.getEnd(), v.getSv()); + return VariantPhoenixKeyFactory.buildSymbolicAlternate(v); } /** diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java index 578ce5df6ca..80692ba9a48 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactoryTest.java @@ -129,7 +129,7 @@ public byte[] generateVariantRowKeyPhoenix(Variant variant) { ImmutableBytesWritable key = new ImmutableBytesWritable(); String reference = variant.getReference(); - String alternate = VariantPhoenixKeyFactory.buildSymbolicAlternate(reference, variant.getAlternate(), variant.getEnd(), variant.getSv()); + String alternate = VariantPhoenixKeyFactory.buildSymbolicAlternate(variant); table.newKey(key, new byte[][]{ Bytes.toBytes(variant.getChromosome()), Bytes.toBytes(variant.getStart()), From f601da6065716709e85f986d71c90a3f8ac1f103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 17 Jul 2024 11:14:26 +0100 Subject: [PATCH 341/354] storage: Remove uneeded assumptions in tests. #TASK-6558 --- .../core/variant/VariantStorageEngineSVTest.java | 15 ++------------- .../phoenix/VariantPhoenixKeyFactory.java | 1 + 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java index 638b10023be..eb9d54d608f 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java @@ -7,7 +7,6 @@ import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.SampleEntry; -import org.opencb.biodata.models.variant.avro.VariantType; import org.opencb.biodata.models.variant.exceptions.NonStandardCompliantSampleField; import org.opencb.biodata.tools.variant.VariantNormalizer; import org.opencb.commons.datastore.core.Query; @@ -149,12 +148,7 @@ protected void checkCorrectness(URI file) throws StorageEngineException, NonStan actualStudyEntry.getFiles().get(0).setFileId(""); assertEquals(expectedStudyEntry.getFiles().get(0), actualStudyEntry.getFiles().get(0)); - - if (actual.getAlternate().equals("") || actual.getType().equals(VariantType.BREAKEND)) { - System.err.println("WARN: Variant " + actual + (actual.getAnnotation() == null ? " without annotation" : " with annotation")); - } else { - assertNotNull(actual.toString(), actual.getAnnotation()); - } + assertNotNull(actual.toString(), actual.getAnnotation()); } } @@ -179,11 +173,6 @@ protected Map readVariants(URI input) throws StorageEngineExcep variantReader.post(); variantReader.close(); - return variants.stream().peek(v->{ - if (v.getEnd() < v.getStart()) { - v.getSv().setCiEndLeft(null); - v.getSv().setCiEndRight(null); - } - }).collect(Collectors.toMap(Variant::toString, v -> v)); + return variants.stream().collect(Collectors.toMap(Variant::toString, v -> v)); } } diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java index d65588d2baf..977e6fbbf93 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/main/java/org/opencb/opencga/storage/hadoop/variant/adaptors/phoenix/VariantPhoenixKeyFactory.java @@ -217,6 +217,7 @@ public static String buildSymbolicAlternate(String reference, String alternate, alternate = VariantBuilder.DUP_TANDEM_ALT; } // Ignore CIEND on variants without an actual END. This includes Breakends and INSERTIONS + // These variants are not expected to have CIEND. This is a redundant check, as the CIEND should be empty after normalization. boolean ignoreCiend = Allele.wouldBeBreakpoint(alternateBytes) || end < start; alternate = alternate From 86512aa9fe8cb57b7f17ded5d6533cc032a470f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Thu, 11 Jul 2024 14:29:29 +0100 Subject: [PATCH 342/354] analysis: Fix ClinicalInterpretationAnalysisTest tests. #TASK-6703 Cherry-pick from 8495dd23fb4c7b99001cbc8613182075e5e17a12 --- .../clinical/ClinicalInterpretationAnalysisTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationAnalysisTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationAnalysisTest.java index 98ae847087c..8a8de40962b 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationAnalysisTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/clinical/ClinicalInterpretationAnalysisTest.java @@ -50,6 +50,7 @@ import org.opencb.opencga.core.response.OpenCGAResult; import org.opencb.opencga.core.testclassification.duration.MediumTests; import org.opencb.opencga.core.tools.result.ExecutionResult; +import org.opencb.opencga.storage.core.variant.adaptors.VariantQuery; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; import java.io.File; @@ -140,8 +141,11 @@ public void customAnalysisFromClinicalAnalysisTest() throws Exception { .setConfig(config); ExecutionResult result = customAnalysis.start(); - - checkInterpretation(238, result); + int expected = opencga.getVariantStorageManager().get(new VariantQuery(query), + new QueryOptions(QueryOptions.LIMIT, 500), clinicalTest.token) + .getResults().size(); + assertNotEquals(0, expected); + checkInterpretation(expected, result); } @Test From d84e860b0b0512751a5ee3666d8d9bfb7befbbef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 7 Aug 2024 21:47:26 +0100 Subject: [PATCH 343/354] storage: Fix VariantLocalConflictResolverTest tests. #TASK-6703 --- .../variant/archive/mr/VariantLocalConflictResolverTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/archive/mr/VariantLocalConflictResolverTest.java b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/archive/mr/VariantLocalConflictResolverTest.java index f716adb0110..c1dc22a6bb4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/archive/mr/VariantLocalConflictResolverTest.java +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/src/test/java/org/opencb/opencga/storage/hadoop/variant/archive/mr/VariantLocalConflictResolverTest.java @@ -169,7 +169,7 @@ public void resolveConflictIndelCase1() throws Exception { se.setSampleDataKeys(Arrays.asList(GENOTYPE_KEY, GENOTYPE_FILTER_KEY)); se.setSamplesPosition(asMap("S1", 0)); se.addSampleData("S1", Arrays.asList("1/2", "LowGQXHetDel")); - se.getSecondaryAlternates().add(new AlternateCoordinate(null, null, 328, "CTT", "CTTTC", INDEL)); + se.getSecondaryAlternates().add(new AlternateCoordinate(null, 328, null, "CTT", "CTTTC", INDEL)); addAttribute(v1, FILTER, "LowGQXHetDel"); From fab3cab4698baa723d52b8c7bd4e3547df227df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 12 Jul 2024 09:13:22 +0100 Subject: [PATCH 344/354] analysis: Fix test VariantOperationsTest#testCellbaseConfigure #TASK-6703 Cherry-pick fdd88bc2d73b5093676b1a270e3d0cdd --- .../variant/manager/VariantOperationsTest.java | 11 +++++++++-- .../opencga/catalog/managers/ProjectManager.java | 6 +++++- .../org/opencb/opencga/core/api/ParamConstants.java | 2 +- .../opencga/core/cellbase/CellBaseValidator.java | 2 +- .../core/config/storage/CellBaseConfiguration.java | 2 +- .../core/variant/VariantStorageEngineBNDTest.java | 4 ++-- .../core/variant/VariantStorageEngineSVTest.java | 2 +- .../variant/VariantStorageSearchIntersectTest.java | 2 +- 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java index f9a698b2fc9..406103ce71e 100644 --- a/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java +++ b/opencga-analysis/src/test/java/org/opencb/opencga/analysis/variant/manager/VariantOperationsTest.java @@ -515,13 +515,20 @@ public void testCellbaseConfigure() throws Exception { assertEquals("GRCh38", cellBaseUtils.getAssembly()); String newCellbase = "https://uk.ws.zettagenomics.com/cellbase/"; - String newCellbaseVersion = "v5.8"; + String newCellbaseVersion = "v5.2"; + String newCellbaseDataRelease = "1"; assertNotEquals(newCellbase, cellBaseUtils.getURL()); assertNotEquals(newCellbaseVersion, cellBaseUtils.getVersion()); + assertNotEquals(newCellbaseDataRelease, cellBaseUtils.getDataRelease()); - variantStorageManager.setCellbaseConfiguration(project, new CellBaseConfiguration(newCellbase, newCellbaseVersion, "1", ""), false, null, token); + variantStorageManager.setCellbaseConfiguration(project, new CellBaseConfiguration(newCellbase, newCellbaseVersion, newCellbaseDataRelease, ""), false, null, token); CellBaseConfiguration cellbaseConfiguration = catalogManager.getProjectManager().get(project, new QueryOptions(), token).first().getCellbase(); + + assertEquals(newCellbase, cellbaseConfiguration.getUrl()); + assertEquals(newCellbaseVersion, cellbaseConfiguration.getVersion()); + assertEquals(newCellbaseDataRelease, cellbaseConfiguration.getDataRelease()); + // assertTrue(family.getPedigreeGraph() != null); } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java index ca0ddeb625c..ae99b2e10ee 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/ProjectManager.java @@ -319,9 +319,13 @@ private void validateProjectForCreation(Project project, User user) throws Catal throw new CatalogParameterException("Missing mandatory organism information"); } try { + //TODO: Should the datarelease be undefined? When undefined, it'd be read from cellbase meta endpoints. + String defaultDataRelease = project.getOrganism().getAssembly().equalsIgnoreCase("grch38") + ? ParamConstants.CELLBASE_DATA_RELEASE_GRCH38 + : null; CellBaseConfiguration cellBaseConfiguration = ParamUtils.defaultObject(project.getCellbase(), new CellBaseConfiguration(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION, - ParamConstants.CELLBASE_DATA_RELEASE, ParamConstants.CELLBASE_APIKEY)); + defaultDataRelease, ParamConstants.CELLBASE_APIKEY)); cellBaseConfiguration = CellBaseValidator.validate(cellBaseConfiguration, project.getOrganism().getScientificName(), project.getOrganism().getAssembly(), true); diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java index 086f90132ec..13f02ad0bae 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/api/ParamConstants.java @@ -77,7 +77,7 @@ public class ParamConstants { public static final String CELLBASE_URL = "https://ws.zettagenomics.com/cellbase"; public static final String CELLBASE_VERSION = "v5.8"; - public static final String CELLBASE_DATA_RELEASE = "7"; + public static final String CELLBASE_DATA_RELEASE_GRCH38 = "7"; public static final String CELLBASE_APIKEY = null; public static final String POP_FREQ_1000G_CB_V4 = "1kG_phase3"; diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java index 5ed331143db..4dd5543e9b8 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/cellbase/CellBaseValidator.java @@ -171,7 +171,7 @@ private CellBaseConfiguration validate(boolean autoComplete) throws IOException logger.warn("DataRelease not supported on version '" + serverVersion + ".x'"); } else { String dataRelease = getDataRelease(); - if (dataRelease == null) { + if (StringUtils.isEmpty(dataRelease)) { if (autoComplete) { cellBaseConfiguration.setDataRelease(getDefaultDataRelease()); } else { diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java index 101a822562c..be0b4c366a8 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/storage/CellBaseConfiguration.java @@ -46,7 +46,7 @@ public class CellBaseConfiguration { private String apiKey; public CellBaseConfiguration() { - this(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION, ParamConstants.CELLBASE_DATA_RELEASE, + this(ParamConstants.CELLBASE_URL, ParamConstants.CELLBASE_VERSION, ParamConstants.CELLBASE_DATA_RELEASE_GRCH38, ParamConstants.CELLBASE_APIKEY); } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java index 08dabda7562..32e1657fcb8 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineBNDTest.java @@ -47,7 +47,7 @@ public abstract class VariantStorageEngineBNDTest extends VariantStorageBaseTest public void before() throws Exception { variantStorageEngine.getConfiguration().getCellbase().setUrl(ParamConstants.CELLBASE_URL); variantStorageEngine.getConfiguration().getCellbase().setVersion(ParamConstants.CELLBASE_VERSION); - variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE); + variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE_GRCH38); if (!loaded) { clearDB(DB_NAME); loadFiles(); @@ -58,7 +58,7 @@ public void before() throws Exception { protected void loadFiles() throws Exception { variantStorageEngine.getConfiguration().getCellbase().setUrl(ParamConstants.CELLBASE_URL); variantStorageEngine.getConfiguration().getCellbase().setVersion(ParamConstants.CELLBASE_VERSION); - variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE); + variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE_GRCH38); studyMetadata = new StudyMetadata(1, "s1"); // variantStorageEngine.getOptions().append(VariantStorageOptions.ANNOTATOR_CELLBASE_EXCLUDE.key(), "expression,clinical"); input1 = getResourceUri("variant-test-bnd.vcf"); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java index eb9d54d608f..8585b396ab4 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageEngineSVTest.java @@ -60,7 +60,7 @@ public void before() throws Exception { protected void loadFiles() throws Exception { variantStorageEngine.getConfiguration().getCellbase().setUrl(ParamConstants.CELLBASE_URL); variantStorageEngine.getConfiguration().getCellbase().setVersion(ParamConstants.CELLBASE_VERSION); - variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE); + variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE_GRCH38); variantStorageEngine.getOptions().put(VariantStorageOptions.ASSEMBLY.key(), "grch38"); variantStorageEngine.reloadCellbaseConfiguration(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java index 3827a56da35..58bae56a733 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java @@ -81,7 +81,7 @@ public void before() throws Exception { VariantStorageEngine variantStorageEngine = getVariantStorageEngine(); variantStorageEngine.getConfiguration().getCellbase().setUrl(ParamConstants.CELLBASE_URL); variantStorageEngine.getConfiguration().getCellbase().setVersion(ParamConstants.CELLBASE_VERSION); - variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE); + variantStorageEngine.getConfiguration().getCellbase().setDataRelease(ParamConstants.CELLBASE_DATA_RELEASE_GRCH38); dbAdaptor = variantStorageEngine.getDBAdaptor(); if (!loaded) { loadFile(); From ed3efc871d607889109a2b825a468541cbac5c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Wed, 7 Aug 2024 21:57:42 +0100 Subject: [PATCH 345/354] storage: Fix tests VariantQueryExecutorTest. #TASK-6703 --- .../variant/query/executors/VariantQueryExecutorTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java index 3d0b2524681..b2f6407b2c5 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/query/executors/VariantQueryExecutorTest.java @@ -139,8 +139,8 @@ public void testXRefRs() throws StorageEngineException { with("ConsequenceType", VariantAnnotation::getConsequenceTypes, hasItem( with("GeneName", ConsequenceType::getGeneName, is("TEX13B")))))); - matchers.put("COSV60260399", hasAnnotation(with("TraitAssociation", VariantAnnotation::getTraitAssociation, hasItem( - with("Cosmic", EvidenceEntry::getId, is("COSV60260399")))))); + matchers.put("RCV000155534", hasAnnotation(with("TraitAssociation", VariantAnnotation::getTraitAssociation, hasItem( + with("Clinvar", EvidenceEntry::getId, is("RCV000155534")))))); matchers.put("ENST00000341832.11(ENSG00000248333):c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( is("ENST00000341832.11(ENSG00000248333):c.356-1170A>G"))))); matchers.put("ENST00000341832.11:c.356-1170A>G", hasAnnotation(with("HGVS", VariantAnnotation::getHgvs, hasItem( From 0c6551baef2fc628368c4507b2b456f7addf03ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 30 Aug 2024 10:37:39 +0100 Subject: [PATCH 346/354] storage: Ensure SearchIndexVariantQueryExecutor is used with skip>500. #TASK-6789 --- .../SearchIndexVariantQueryExecutor.java | 4 +++ .../VariantQueryUsingSearchIndexTest.java | 36 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java index bd6b8e6437f..bd7c79cb2e9 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/SearchIndexVariantQueryExecutor.java @@ -262,6 +262,10 @@ public boolean doIntersectWithSearch(Query query, QueryOptions options) { intersect = true; } else { if (options.getBoolean(QueryOptions.COUNT)) { + // The SearchIndex is better than anyone in terms of counting + intersect = true; + } else if (options.getInt(QueryOptions.SKIP, 0) > 500) { + // Large "skip" queries should use SearchIndex when possible intersect = true; } else { // TODO: Improve this heuristic diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java index 6194d25c6d8..cdc96e15377 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUsingSearchIndexTest.java @@ -2,16 +2,22 @@ import com.google.common.base.Throwables; import org.junit.ClassRule; +import org.junit.Test; import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.DataResult; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; -import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; import org.opencb.opencga.storage.core.variant.solr.VariantSolrExternalResource; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager.SEARCH_ENGINE_ID; + /** * Created on 22/12/17. * @@ -87,4 +93,32 @@ public DataResult rank(int limit, Query query, String field, boolean asc) { throw Throwables.propagate(e); } } + + @Test + public void testQueryExecutor() { + assertThat(variantStorageEngine.get(new VariantQuery(), new QueryOptions() + .append(QueryOptions.LIMIT, 10) + .append(QueryOptions.COUNT, false) + .append(QueryOptions.SKIP, 0)).getSource(), + not(containsString(SEARCH_ENGINE_ID))); + + assertThat(variantStorageEngine.get(new VariantQuery(), new QueryOptions() + .append(QueryOptions.LIMIT, 10) + .append(QueryOptions.COUNT, true) + .append(QueryOptions.SKIP, 0)).getSource(), + containsString(SEARCH_ENGINE_ID)); + + assertThat(variantStorageEngine.get(new VariantQuery(), new QueryOptions() + .append(QueryOptions.LIMIT, 10) + .append(QueryOptions.COUNT, false) + .append(QueryOptions.SKIP, 100)).getSource(), + not(containsString(SEARCH_ENGINE_ID))); + + assertThat(variantStorageEngine.get(new VariantQuery(), new QueryOptions() + .append(QueryOptions.LIMIT, 10) + .append(QueryOptions.COUNT, false) + .append(QueryOptions.SKIP, 1000)).getSource(), + containsString(SEARCH_ENGINE_ID)); + + } } From 11ecea37d3e98dcf9009b0e26de7d5cf5243f399 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 2 Sep 2024 16:29:46 +0200 Subject: [PATCH 347/354] Prepare release 2.12.7 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 19e958d2f24..a0a4e7fea1a 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 6e3fbc1de9b..6e89b341fb6 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 8bc8d823f06..5ff5cbffff9 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 38a2e260e5d..a0caf041474 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index b28dda9d198..dba5dca45ec 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 264631c0715..b24b1818357 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index f7f42cdb79b..ee80b8747f4 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 14b4301df21..152d31ec4bb 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index c7bbc86990e..29b78cbb020 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index a64f7df1ae6..ea4348064fb 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index b2b6da5bea7..e0e4b0be942 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 00cef59a609..d1e1976bc10 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index d1701f8cc3f..76b997257ad 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index b78e0af52c8..d4a5684a493 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 5caa3dbe832..0555f9819e2 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index de9e737a091..61c54ca5f13 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 53166582a8d..78d85dcaff6 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index b4a77d6c006..fe2ee012f54 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 0c79bf18478..885950e2ba1 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index c2d6741df0b..2a40c62db08 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 ../pom.xml diff --git a/pom.xml b/pom.xml index b5564242b70..26230a1d83a 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7-SNAPSHOT + 2.12.7 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.7_dev - 2.12.7_dev - 5.8.5-SNAPSHOT - 2.12.3-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.7-SNAPSHOT + 2.12.7 + 2.12.7 + 5.8.4 + 2.12.3 + 4.12.0 + 2.12.7 0.2.0 2.11.4 From 858b224618a6a651c7b40789c5492da44f832f3f Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Mon, 2 Sep 2024 16:32:15 +0200 Subject: [PATCH 348/354] Prepare next release 2.12.8-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index a0a4e7fea1a..99bb04eeac0 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 6e89b341fb6..393c6731397 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 5ff5cbffff9..0b7693b877d 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index a0caf041474..49bbfc9cb92 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index dba5dca45ec..a04c3ffe690 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index b24b1818357..08edc459fee 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index ee80b8747f4..28310da0d2e 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 152d31ec4bb..1f97d966146 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 29b78cbb020..2703ddbbba2 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index ea4348064fb..b49106ce18d 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index e0e4b0be942..925aa0a70bd 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index d1e1976bc10..124050e9e98 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 76b997257ad..b439d23c038 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index d4a5684a493..be022cd6d09 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 0555f9819e2..edf5a27b643 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 61c54ca5f13..4e340ec6067 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 78d85dcaff6..07d6672755b 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index fe2ee012f54..5b54715584f 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 885950e2ba1..0e26be957ce 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 2a40c62db08..05cf4910463 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 26230a1d83a..489c02cbe78 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.7 + 2.12.8-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.7 - 2.12.7 - 5.8.4 - 2.12.3 - 4.12.0 - 2.12.7 + 2.12.8_dev + 2.12.8_dev + 5.8.5-SNAPSHOT + 2.12.4-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.8-SNAPSHOT 0.2.0 2.11.4 From 724afa9acd8141c7794c0e4df33d2e2fc17a8b7f Mon Sep 17 00:00:00 2001 From: pfurio Date: Thu, 26 Sep 2024 16:43:11 +0200 Subject: [PATCH 349/354] app: fix cohort-sample reference migration, #TASK-6998 --- .../SyncCohortsAndSamplesMigration.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java index edfdbb7c828..d0d0cc931c3 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_6/SyncCohortsAndSamplesMigration.java @@ -9,20 +9,24 @@ import org.bson.conversions.Bson; import org.opencb.opencga.catalog.db.api.CohortDBAdaptor; import org.opencb.opencga.catalog.db.api.SampleDBAdaptor; +import org.opencb.opencga.catalog.db.api.StudyDBAdaptor; import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptor; import org.opencb.opencga.catalog.db.mongodb.MongoDBAdaptorFactory; import org.opencb.opencga.catalog.migration.Migration; import org.opencb.opencga.catalog.migration.MigrationTool; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Migration(id = "syncCohortsAndSamplesMigration" , - description = "Sync array of samples from cohort with array of cohortIds from Sample", + description = "Sync array of samples from cohort with array of cohortIds from Sample.", version = "2.12.6", domain = Migration.MigrationDomain.CATALOG, language = Migration.MigrationLanguage.JAVA, - date = 20240621 + date = 20240621, + patch = 2 // TASK-6998 ) public class SyncCohortsAndSamplesMigration extends MigrationTool { @@ -31,8 +35,18 @@ protected void run() throws Exception { MongoCollection sampleCollection = getMongoCollection(MongoDBAdaptorFactory.SAMPLE_COLLECTION); MongoCollection sampleArchiveCollection = getMongoCollection(MongoDBAdaptorFactory.SAMPLE_ARCHIVE_COLLECTION); + // Fill map study uid - fqn + Map uidFqnMap = new HashMap<>(); + Bson studyProjection = Projections.include(StudyDBAdaptor.QueryParams.UID.key(), StudyDBAdaptor.QueryParams.FQN.key()); + queryMongo(MongoDBAdaptorFactory.STUDY_COLLECTION, new Document(), studyProjection, study -> { + long studyUid = study.get(StudyDBAdaptor.QueryParams.UID.key(), Number.class).longValue(); + String studyFqn = study.getString(StudyDBAdaptor.QueryParams.FQN.key()); + uidFqnMap.put(studyUid, studyFqn); + }); + queryMongo(MongoDBAdaptorFactory.COHORT_COLLECTION, new Document(), - Projections.include(CohortDBAdaptor.QueryParams.ID.key(), CohortDBAdaptor.QueryParams.SAMPLES.key()), + Projections.include(CohortDBAdaptor.QueryParams.ID.key(), CohortDBAdaptor.QueryParams.SAMPLES.key(), + CohortDBAdaptor.QueryParams.STUDY_UID.key()), cohortDoc -> { String cohortId = cohortDoc.getString(CohortDBAdaptor.QueryParams.ID.key()); List samples = cohortDoc.getList(CohortDBAdaptor.QueryParams.SAMPLES.key(), Document.class); @@ -50,8 +64,11 @@ protected void run() throws Exception { long addedMissingCohort = sampleCollection.updateMany(query, update).getModifiedCount(); sampleArchiveCollection.updateMany(query, update); + long studyUid = cohortDoc.get(CohortDBAdaptor.QueryParams.STUDY_UID.key(), Number.class).longValue(); + // Ensure there aren't any samples pointing to this cohort that are not in the samples array query = Filters.and( + Filters.eq(SampleDBAdaptor.QueryParams.STUDY_UID.key(), studyUid), Filters.nin(SampleDBAdaptor.QueryParams.UID.key(), sampleUids), Filters.eq(SampleDBAdaptor.QueryParams.COHORT_IDS.key(), cohortId), Filters.eq(MongoDBAdaptor.LAST_OF_VERSION, true) @@ -61,10 +78,10 @@ protected void run() throws Exception { sampleArchiveCollection.updateMany(query, update); if (addedMissingCohort > 0 || removedNonAssociatedCohort > 0) { - logger.info("Fixed cohort '{}' references. " + logger.info("Fixed cohort '{}' references from study '{}'. " + "Added missing reference to {} samples. " + "Removed non-associated reference from {} samples.", - cohortId, addedMissingCohort, removedNonAssociatedCohort); + cohortId, uidFqnMap.get(studyUid), addedMissingCohort, removedNonAssociatedCohort); } } }); From a2369a05d8f427b49fec81210fa6b53a42ccf8f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Tue, 1 Oct 2024 17:53:55 +0100 Subject: [PATCH 350/354] app: Fix NPE at DetectIllegalConcurrentFileLoadingsMigration #TASK-6983 --- .../storage/DetectIllegalConcurrentFileLoadingsMigration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index c407cd82bbd..60ac81ab85e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -145,7 +145,7 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag metadataManager.getFileName(studyId, file), file); } } - } else if (sampleMetadata.getSampleIndexStatus(Optional.of(sampleMetadata.getSampleIndexVersion()).orElse(-1)) == TaskMetadata.Status.READY) { + } else if (sampleMetadata.getSampleIndexStatus(Optional.ofNullable(sampleMetadata.getSampleIndexVersion()).orElse(-1)) == TaskMetadata.Status.READY) { for (Integer fileId : sampleMetadata.getFiles()) { if (affectedFiles.contains(fileId)) { FileMetadata fileMetadata = metadataManager.getFileMetadata(studyId, fileId); From 1495e234fb53da73755dcbad9da2291d8886f02b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Coll=20Morag=C3=B3n?= Date: Fri, 4 Oct 2024 12:21:34 +0100 Subject: [PATCH 351/354] app: Imrpove logs at DetectIllegalConcurrentFileLoadingsMigration #TASK-6983 --- ...llegalConcurrentFileLoadingsMigration.java | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java index 60ac81ab85e..347866e38d1 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_12_5/storage/DetectIllegalConcurrentFileLoadingsMigration.java @@ -1,5 +1,6 @@ package org.opencb.opencga.app.migrations.v2_12_5.storage; +import org.apache.commons.lang3.tuple.Pair; import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; @@ -67,6 +68,8 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag if (fileSets.isEmpty()) { logger.info("No concurrent file loadings found in study '{}'", study); return; + } else { + logger.info("Found {} sets of files with shared samples in study '{}'", fileSets.size(), study); } Map fileTasks = new HashMap<>(); @@ -85,10 +88,12 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag } } - Set> fileSetsToInvalidate = new HashSet<>(); - Set affectedFiles = new HashSet<>(); - Set affectedSamples = new HashSet<>(); for (Set fileSet : fileSets) { + Set affectedFiles = new HashSet<>(); + Set affectedSamples = new HashSet<>(); + Set invalidFiles = new HashSet<>(); + Set invalidSampleIndexes = new HashSet<>(); + // Check if any task from this file set overlaps in time List tasks = new ArrayList<>(); for (Integer fileId : fileSet) { @@ -97,8 +102,11 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag tasks.add(task); } } - if (tasks.size() > 1) { - logger.info("Found {} tasks loading files {}", tasks.size(), fileSet); + if (tasks.size() <= 1) { + continue; + } else { + logger.info("--------------------"); + logger.info("Found {} tasks loading files {} in study {}", tasks.size(), fileSet, study); for (int i = 0; i < tasks.size(); i++) { TaskMetadata task1 = tasks.get(i); Date task1start = task1.getStatus().firstKey(); @@ -108,8 +116,7 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag Date task2start = task2.getStatus().firstKey(); Date task2end = task2.getStatus().lastKey(); if (task1start.before(task2end) && task1end.after(task2start)) { - fileSetsToInvalidate.add(fileSet); - affectedFiles.addAll(task1.getFileIds()); + affectedFiles.addAll(fileSet); List task1Files = task1.getFileIds().stream().map(fileId -> "'" + metadataManager.getFileName(studyId, fileId) + "'(" + fileId + ")").collect(Collectors.toList()); List task2Files = task2.getFileIds().stream().map(fileId -> "'" + metadataManager.getFileName(studyId, fileId) + "'(" + fileId + ")").collect(Collectors.toList()); @@ -131,8 +138,6 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag } } - Set invalidFiles = new HashSet<>(); - List invalidSampleIndexes = new ArrayList<>(); for (Integer sampleId : affectedSamples) { String sampleName = metadataManager.getSampleName(studyId, sampleId); SampleMetadata sampleMetadata = metadataManager.getSampleMetadata(studyId, sampleId); @@ -195,6 +200,8 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag } } } else { + logger.info("Sample '{}'({}) sample index is not in READY status. Invalidate to ensure rebuild", sampleName, sampleId); + logger.info(" - Invalidating sample index for sample '{}'({})", sampleName, sampleId); invalidSampleIndexes.add(sampleId); } } @@ -210,9 +217,19 @@ private void checkStudy(VariantStorageEngine engine, String study) throws Storag invalidSamples.addAll(metadataManager.getSampleIdsFromFileId(studyId, fileId)); } - logger.info("Affected files: {}", invalidFiles); - logger.info("Affected samples: {}", invalidSamples); - logger.info("Affected sample indexes: {}", invalidSampleIndexes); + logger.info("Study '{}'", study); + List> invalidFilesPairs = invalidFiles.stream() + .map(fileId -> Pair.of(metadataManager.getFileName(studyId, fileId), fileId)) + .collect(Collectors.toList()); + logger.info("Affected files: {}", invalidFilesPairs); + List> invalidSamplesPairs = invalidSamples.stream() + .map(sampleId -> Pair.of(metadataManager.getSampleName(studyId, sampleId), sampleId)) + .collect(Collectors.toList()); + logger.info("Affected samples: {}", invalidSamplesPairs); + List> invalidSampleIndexesPairs = invalidSampleIndexes.stream() + .map(sampleId -> Pair.of(metadataManager.getSampleName(studyId, sampleId), sampleId)) + .collect(Collectors.toList()); + logger.info("Affected sample indexes: {}", invalidSampleIndexesPairs); } } else { ObjectMap event = new ObjectMap() From 02246427fff65de000c6b92e24706d1801c4adca Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 11 Oct 2024 12:17:13 +0200 Subject: [PATCH 352/354] Prepare release 2.12.8 --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 99bb04eeac0..6509bfa46be 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 393c6731397..40825cf7076 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index 0b7693b877d..d957b33c03f 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 49bbfc9cb92..1a7c40ff634 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index a04c3ffe690..35ed5a020bc 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 08edc459fee..9a5c213f83f 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 28310da0d2e..0c17e820cc8 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 1f97d966146..2742e8fdbbb 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index 2703ddbbba2..c15105a8854 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index b49106ce18d..359f7ec4de8 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index 925aa0a70bd..a94866d6296 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 124050e9e98..0899f403d8b 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index b439d23c038..52e072c5993 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index be022cd6d09..3fa4d10f6a4 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index edf5a27b643..9c6add5acfd 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index 4e340ec6067..a3e10020b4d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index 07d6672755b..a5e4d233d62 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index 5b54715584f..fa10dabcbaf 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index 0e26be957ce..bc6f275d2d1 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 05cf4910463..0c968f96bb2 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 ../pom.xml diff --git a/pom.xml b/pom.xml index 489c02cbe78..9ee4da0e4f0 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8-SNAPSHOT + 2.12.8 pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.8_dev - 2.12.8_dev - 5.8.5-SNAPSHOT - 2.12.4-SNAPSHOT - 4.12.1-SNAPSHOT - 2.12.8-SNAPSHOT + 2.12.8 + 2.12.8 + 5.8.4 + 2.12.3 + 4.12.0 + 2.12.8 0.2.0 2.11.4 From febe81b8006413fc0a6b10ddc12d0e897ba56550 Mon Sep 17 00:00:00 2001 From: JuanfeSanahuja Date: Fri, 11 Oct 2024 12:19:40 +0200 Subject: [PATCH 353/354] Prepare next release 2.12.9-SNAPSHOT --- opencga-analysis/pom.xml | 2 +- opencga-app/pom.xml | 2 +- opencga-catalog/pom.xml | 2 +- opencga-client/pom.xml | 2 +- opencga-clinical/pom.xml | 2 +- opencga-core/pom.xml | 2 +- opencga-master/pom.xml | 2 +- opencga-server/pom.xml | 2 +- opencga-storage/opencga-storage-app/pom.xml | 2 +- opencga-storage/opencga-storage-benchmark/pom.xml | 2 +- opencga-storage/opencga-storage-core/pom.xml | 2 +- .../opencga-storage-hadoop-core/pom.xml | 2 +- .../opencga-storage-hadoop-deps-emr6.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp2.6/pom.xml | 2 +- .../opencga-storage-hadoop-deps-hdp3.1/pom.xml | 2 +- .../opencga-storage-hadoop-deps/pom.xml | 2 +- opencga-storage/opencga-storage-hadoop/pom.xml | 2 +- opencga-storage/opencga-storage-server/pom.xml | 2 +- opencga-storage/pom.xml | 2 +- opencga-test/pom.xml | 2 +- pom.xml | 14 +++++++------- 21 files changed, 27 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/pom.xml b/opencga-analysis/pom.xml index 6509bfa46be..be55ef66c9b 100644 --- a/opencga-analysis/pom.xml +++ b/opencga-analysis/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-app/pom.xml b/opencga-app/pom.xml index 40825cf7076..95c9e498cdd 100644 --- a/opencga-app/pom.xml +++ b/opencga-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-catalog/pom.xml b/opencga-catalog/pom.xml index d957b33c03f..604a3b3432e 100644 --- a/opencga-catalog/pom.xml +++ b/opencga-catalog/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-client/pom.xml b/opencga-client/pom.xml index 1a7c40ff634..9a58ff41d88 100644 --- a/opencga-client/pom.xml +++ b/opencga-client/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-clinical/pom.xml b/opencga-clinical/pom.xml index 35ed5a020bc..0e771ba473b 100644 --- a/opencga-clinical/pom.xml +++ b/opencga-clinical/pom.xml @@ -5,7 +5,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml 4.0.0 diff --git a/opencga-core/pom.xml b/opencga-core/pom.xml index 9a5c213f83f..4970877def1 100644 --- a/opencga-core/pom.xml +++ b/opencga-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-master/pom.xml b/opencga-master/pom.xml index 0c17e820cc8..a027e73619a 100644 --- a/opencga-master/pom.xml +++ b/opencga-master/pom.xml @@ -22,7 +22,7 @@ opencga org.opencb.opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-server/pom.xml b/opencga-server/pom.xml index 2742e8fdbbb..d477f3c43c4 100644 --- a/opencga-server/pom.xml +++ b/opencga-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-app/pom.xml b/opencga-storage/opencga-storage-app/pom.xml index c15105a8854..a13a1c2e919 100644 --- a/opencga-storage/opencga-storage-app/pom.xml +++ b/opencga-storage/opencga-storage-app/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-benchmark/pom.xml b/opencga-storage/opencga-storage-benchmark/pom.xml index 359f7ec4de8..5a3a48317c1 100644 --- a/opencga-storage/opencga-storage-benchmark/pom.xml +++ b/opencga-storage/opencga-storage-benchmark/pom.xml @@ -22,7 +22,7 @@ opencga-storage org.opencb.opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-core/pom.xml b/opencga-storage/opencga-storage-core/pom.xml index a94866d6296..061682644c0 100644 --- a/opencga-storage/opencga-storage-core/pom.xml +++ b/opencga-storage/opencga-storage-core/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml index 0899f403d8b..283d4e9079d 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-core/pom.xml @@ -23,7 +23,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml index 52e072c5993..732a1cfe322 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-emr6.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml index 3fa4d10f6a4..1804f363d0f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp2.6/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml index 9c6add5acfd..e5a6aa8f040 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/opencga-storage-hadoop-deps-hdp3.1/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage-hadoop-deps - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml index a3e10020b4d..a106326eb5f 100644 --- a/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/opencga-storage-hadoop-deps/pom.xml @@ -50,7 +50,7 @@ org.opencb.opencga opencga-storage-hadoop - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-hadoop/pom.xml b/opencga-storage/opencga-storage-hadoop/pom.xml index a5e4d233d62..3ed022fce72 100644 --- a/opencga-storage/opencga-storage-hadoop/pom.xml +++ b/opencga-storage/opencga-storage-hadoop/pom.xml @@ -28,7 +28,7 @@ org.opencb.opencga opencga-storage - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/opencga-storage-server/pom.xml b/opencga-storage/opencga-storage-server/pom.xml index fa10dabcbaf..cbca4443839 100644 --- a/opencga-storage/opencga-storage-server/pom.xml +++ b/opencga-storage/opencga-storage-server/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga-storage - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-storage/pom.xml b/opencga-storage/pom.xml index bc6f275d2d1..14987258d10 100644 --- a/opencga-storage/pom.xml +++ b/opencga-storage/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/opencga-test/pom.xml b/opencga-test/pom.xml index 0c968f96bb2..e7e46cd98d2 100644 --- a/opencga-test/pom.xml +++ b/opencga-test/pom.xml @@ -24,7 +24,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 9ee4da0e4f0..67881cc4052 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.opencb.opencga opencga - 2.12.8 + 2.12.9-SNAPSHOT pom OpenCGA @@ -43,12 +43,12 @@ - 2.12.8 - 2.12.8 - 5.8.4 - 2.12.3 - 4.12.0 - 2.12.8 + 2.12.9_dev + 2.12.9_dev + 5.8.5-SNAPSHOT + 2.12.4-SNAPSHOT + 4.12.1-SNAPSHOT + 2.12.9-SNAPSHOT 0.2.0 2.11.4 From 20c3f6c24d5870f82caaf8df85706df76942f13a Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 5 Nov 2024 16:03:47 +0100 Subject: [PATCH 354/354] catalog: include only necessary fields for pedigree, #TASK-7142 --- .../family/PedigreeGraphInitAnalysis.java | 4 +- .../CalculatePedigreeGraphMigration.java | 4 +- .../db/mongodb/FamilyMongoDBAdaptor.java | 3 +- .../db/mongodb/IndividualMongoDBAdaptor.java | 3 +- .../catalog/db/mongodb/MongoDBAdaptor.java | 70 +++++++++++++------ .../catalog/managers/FamilyManager.java | 10 +++ 6 files changed, 67 insertions(+), 27 deletions(-) diff --git a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/family/PedigreeGraphInitAnalysis.java b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/family/PedigreeGraphInitAnalysis.java index f4196b524b5..43d69b4118d 100644 --- a/opencga-analysis/src/main/java/org/opencb/opencga/analysis/family/PedigreeGraphInitAnalysis.java +++ b/opencga-analysis/src/main/java/org/opencb/opencga/analysis/family/PedigreeGraphInitAnalysis.java @@ -24,6 +24,7 @@ import org.opencb.opencga.analysis.tools.OpenCgaToolScopeStudy; import org.opencb.opencga.catalog.db.api.DBIterator; import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.managers.FamilyManager; import org.opencb.opencga.catalog.utils.PedigreeGraphUtils; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.core.exceptions.ToolException; @@ -67,8 +68,7 @@ protected void run() throws ToolException { step(getId(), () -> { // Get all families from that study - QueryOptions queryOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("id", "members", "pedigreeGraph")); - try (DBIterator iterator = catalogManager.getFamilyManager().iterator(study, new Query(), queryOptions, token)) { + try (DBIterator iterator = catalogManager.getFamilyManager().iterator(study, new Query(), FamilyManager.INCLUDE_FAMILY_FOR_PEDIGREE, token)) { while (iterator.hasNext()) { Family family = iterator.next(); if (PedigreeGraphUtils.hasMinTwoGenerations(family) diff --git a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_8_0/catalog/CalculatePedigreeGraphMigration.java b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_8_0/catalog/CalculatePedigreeGraphMigration.java index 8f5c8787f77..98b056bbf4e 100644 --- a/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_8_0/catalog/CalculatePedigreeGraphMigration.java +++ b/opencga-app/src/main/java/org/opencb/opencga/app/migrations/v2_8_0/catalog/CalculatePedigreeGraphMigration.java @@ -8,6 +8,7 @@ import org.opencb.opencga.analysis.family.PedigreeGraphInitAnalysis; import org.opencb.opencga.catalog.db.api.DBIterator; import org.opencb.opencga.catalog.exceptions.CatalogException; +import org.opencb.opencga.catalog.managers.FamilyManager; import org.opencb.opencga.catalog.migration.Migration; import org.opencb.opencga.catalog.migration.MigrationRun; import org.opencb.opencga.catalog.migration.MigrationTool; @@ -85,12 +86,11 @@ protected void run() throws Exception { public List getStudies() throws CatalogException { Set studies = new LinkedHashSet<>(); QueryOptions projectOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("id", "studies")); - QueryOptions familyOptions = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("id", "members", "pedigreeGraph")); for (Project project : catalogManager.getProjectManager().search(new Query(), projectOptions, token).getResults()) { if (CollectionUtils.isNotEmpty(project.getStudies())) { for (Study study : project.getStudies()) { String id = study.getFqn(); - try (DBIterator iterator = catalogManager.getFamilyManager().iterator(id, new Query(), familyOptions, token)) { + try (DBIterator iterator = catalogManager.getFamilyManager().iterator(id, new Query(), FamilyManager.INCLUDE_FAMILY_FOR_PEDIGREE, token)) { while (iterator.hasNext()) { Family family = iterator.next(); if (PedigreeGraphUtils.hasMinTwoGenerations(family) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FamilyMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FamilyMongoDBAdaptor.java index 3bb88c7042b..11a0f4b2845 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FamilyMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FamilyMongoDBAdaptor.java @@ -39,6 +39,7 @@ import org.opencb.opencga.catalog.exceptions.CatalogDBException; import org.opencb.opencga.catalog.exceptions.CatalogException; import org.opencb.opencga.catalog.exceptions.CatalogParameterException; +import org.opencb.opencga.catalog.managers.FamilyManager; import org.opencb.opencga.catalog.managers.IndividualManager; import org.opencb.opencga.catalog.utils.Constants; import org.opencb.opencga.catalog.utils.ParamUtils; @@ -509,7 +510,7 @@ private PedigreeGraph computePedigreeGraph(ClientSession clientSession, Family f Query query = new Query() .append(QueryParams.UID.key(), family.getUid()) .append(QueryParams.STUDY_UID.key(), family.getStudyUid()); - Family tmpFamily = get(clientSession, query, QueryOptions.empty()).first(); + Family tmpFamily = get(clientSession, query, FamilyManager.INCLUDE_FAMILY_FOR_PEDIGREE).first(); try { return PedigreeGraphUtils.getPedigreeGraph(tmpFamily, diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java index 6437a0293b2..52af4e180ad 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/IndividualMongoDBAdaptor.java @@ -1189,7 +1189,8 @@ private MongoDBIterator getMongoCursor(ClientSession clientSession, Qu qOptions = new QueryOptions(); } - qOptions = removeInnerProjections(qOptions, QueryParams.SAMPLES.key()); + qOptions = removeInnerProjections(qOptions, Arrays.asList(QueryParams.SAMPLES.key(), QueryParams.FATHER.key(), + QueryParams.MOTHER.key())); qOptions = removeAnnotationProjectionOptions(qOptions); // FIXME we should be able to remove this now safely diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptor.java index a3b47c037dc..66851f950a4 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/MongoDBAdaptor.java @@ -558,42 +558,70 @@ protected QueryOptions extractNestedOptions(QueryOptions options, String key) { * @return new QueryOptions after removing the inner projectionKey projections. */ protected QueryOptions removeInnerProjections(QueryOptions options, String projectionKey) { + return removeInnerProjections(options, Collections.singletonList(projectionKey)); + } + + /** + * Removes any other entity projections made. This method should be called by any entity containing inner entities: + * Family -> Individual; Individual -> Sample; File -> Sample; Cohort -> Sample + * + * @param options current query options object. + * @param projectionKeyList Projection keys to be removed from the query options. + * @return new QueryOptions after removing the inner projectionKey projections. + */ + protected QueryOptions removeInnerProjections(QueryOptions options, List projectionKeyList) { QueryOptions queryOptions = ParamUtils.defaultObject(options, QueryOptions::new); if (queryOptions.containsKey(QueryOptions.INCLUDE)) { List includeList = queryOptions.getAsStringList(QueryOptions.INCLUDE); List newInclude = new ArrayList<>(includeList.size()); - boolean projectionKeyExcluded = false; + Map projectionKeyExcluded = new HashMap<>(projectionKeyList.size()); + for (String projectionKey : projectionKeyList) { + projectionKeyExcluded.put(projectionKey, false); + } + for (String include : includeList) { - if (!include.startsWith(projectionKey + ".")) { + boolean excluded = false; + for (String projectionKey : projectionKeyList) { + if (include.startsWith(projectionKey + ".")) { + projectionKeyExcluded.put(projectionKey, true); + excluded = true; + break; + } + } + if (!excluded) { newInclude.add(include); - } else { - projectionKeyExcluded = true; } } if (newInclude.isEmpty()) { - queryOptions.put(QueryOptions.INCLUDE, Arrays.asList(ID, projectionKey)); + List tmpInclude = new ArrayList<>(projectionKeyList.size() + 1); + tmpInclude.addAll(projectionKeyList); + tmpInclude.add(ID); + queryOptions.put(QueryOptions.INCLUDE, tmpInclude); } else { - if (projectionKeyExcluded) { - newInclude.add(projectionKey); + for (Map.Entry entry : projectionKeyExcluded.entrySet()) { + if (entry.getValue()) { + newInclude.add(entry.getKey()); + } } queryOptions.put(QueryOptions.INCLUDE, newInclude); } } - if (queryOptions.containsKey(QueryOptions.EXCLUDE)) { - List excludeList = queryOptions.getAsStringList(QueryOptions.EXCLUDE); - List newExclude = new ArrayList<>(excludeList.size()); - for (String exclude : excludeList) { - if (!exclude.startsWith(projectionKey + ".")) { - newExclude.add(exclude); - } - } - if (newExclude.isEmpty()) { - queryOptions.remove(QueryOptions.EXCLUDE); - } else { - queryOptions.put(QueryOptions.EXCLUDE, newExclude); - } - } + // TODO: This code seems unnecessary. We should remove it if we don't find any issue. +// if (queryOptions.containsKey(QueryOptions.EXCLUDE)) { +// List excludeList = queryOptions.getAsStringList(QueryOptions.EXCLUDE); +// List newExclude = new ArrayList<>(excludeList.size()); +// for (String exclude : excludeList) { +// if (!exclude.startsWith(projectionKey + ".")) { +// newExclude.add(exclude); +// } +// } +// if (newExclude.isEmpty()) { +// queryOptions.remove(QueryOptions.EXCLUDE); +// } else { +// queryOptions.put(QueryOptions.EXCLUDE, newExclude); +// } +// } return queryOptions; } diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FamilyManager.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FamilyManager.java index c135e390744..6e7e74da032 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FamilyManager.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/managers/FamilyManager.java @@ -83,6 +83,16 @@ public class FamilyManager extends AnnotationSetManager { FamilyDBAdaptor.QueryParams.ID.key(), FamilyDBAdaptor.QueryParams.UID.key(), FamilyDBAdaptor.QueryParams.UUID.key(), FamilyDBAdaptor.QueryParams.VERSION.key(), FamilyDBAdaptor.QueryParams.STUDY_UID.key(), FamilyDBAdaptor.QueryParams.MEMBERS.key())); + public static final QueryOptions INCLUDE_FAMILY_FOR_PEDIGREE = keepFieldsInQueryOptions(INCLUDE_FAMILY_IDS, Arrays.asList( + FamilyDBAdaptor.QueryParams.PEDIGREE_GRAPH.key(), FamilyDBAdaptor.QueryParams.DISORDERS.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.ID.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.SEX.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.DISORDERS.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.LIFE_STATUS.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.FATHER.key() + + "." + IndividualDBAdaptor.QueryParams.ID.key(), + FamilyDBAdaptor.QueryParams.MEMBERS.key() + "." + IndividualDBAdaptor.QueryParams.MOTHER.key() + + "." + IndividualDBAdaptor.QueryParams.ID.key())); protected static Logger logger = LoggerFactory.getLogger(FamilyManager.class); private final String defaultFacet = "creationYear>>creationMonth;status;phenotypes;expectedSize;numMembers[0..20]:2"; private UserManager userManager;