From 803daa63a1a3199d0b215e2f0c8d1380d70ecc3d Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Thu, 24 Feb 2022 16:29:58 +0100 Subject: [PATCH 01/62] Remove outdated dependabot yml (#294) --- .dependabot/config.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .dependabot/config.yml diff --git a/.dependabot/config.yml b/.dependabot/config.yml deleted file mode 100644 index a0a1799d10..0000000000 --- a/.dependabot/config.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: 2 -updates_configs: - - package_manager: "java:maven" - directory: "/" - update_schedule: "daily" - target-branch: development - default_labels: "dependabot" - commit-message: - prefix: "[DEPENDABOT]" - From 642a6af591b7b53631c393fee13ef22d63fe933d Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 24 Feb 2022 16:30:22 +0100 Subject: [PATCH 02/62] update maven plugin versions (#293) --- pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index d00a0f3f78..12891139cd 100644 --- a/pom.xml +++ b/pom.xml @@ -181,7 +181,7 @@ org.codehaus.gmavenplus gmavenplus-plugin - 1.12.1 + 1.13.1 @@ -217,12 +217,12 @@ org.apache.maven.plugins maven-site-plugin - 3.9.1 + 3.11.0 org.apache.maven.plugins maven-project-info-reports-plugin - 3.1.1 + 3.2.1 life.qbic @@ -269,7 +269,7 @@ biz.aQute.bnd bnd-maven-plugin - 5.1.2 + 6.1.0 From bf02efdf4237489a6018204f74d981957912aa29 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 13:42:08 +0100 Subject: [PATCH 03/62] update groovy versions (#295) * update groovy versions * use snapshot of xml-manager-lib * move groovy to dependencies * Bump spock * update spock version * use java 11 Co-authored-by: wow-such-code --- .github/workflows/build_package.yml | 4 ++-- .github/workflows/create-release.yml | 4 ++-- .github/workflows/nexus-publish-snapshots.yml | 4 ++-- pom.xml | 20 +++++++++---------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 9d334b8fa9..4fcf03e9bf 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 1.11 - name: Load local Maven repository cache uses: actions/cache@v2 with: diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 57d5afed65..bf7062cf09 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -12,10 +12,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 1.11 settings-path: ${{ github.workspace }} - name: Load local Maven repository cache diff --git a/.github/workflows/nexus-publish-snapshots.yml b/.github/workflows/nexus-publish-snapshots.yml index 8b8c411c16..78bf80734c 100644 --- a/.github/workflows/nexus-publish-snapshots.yml +++ b/.github/workflows/nexus-publish-snapshots.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 1.11 server-id: github # Value of the distributionManagement/repository/id field of the pom.xml settings-path: ${{ github.workspace }} diff --git a/pom.xml b/pom.xml index 12891139cd..9c83b954a0 100644 --- a/pom.xml +++ b/pom.xml @@ -81,20 +81,20 @@ org.codehaus.groovy groovy-bom - 2.5.14 + 3.0.9 pom import - - org.codehaus.groovy - groovy-all - 2.5.14 - pom - ${osgi.scope} - + + org.codehaus.groovy + groovy-all + 3.0.9 + pom + ${osgi.scope} + org.osgi osgi.core @@ -111,7 +111,7 @@ life.qbic xml-manager-lib - 1.6.0 + 1.7.0-SNAPSHOT ${osgi.scope} @@ -144,7 +144,7 @@ org.spockframework spock-core - 2.0-groovy-2.5 + 2.0-groovy-3.0 test From 6fb4bf844738c85518cd3d6061583d2d54ec1ff6 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 13:42:52 +0100 Subject: [PATCH 04/62] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d97d27b359..f8b104d50f 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ _Data Model Library - A collection of QBiC data models._ ## How to Run -Create a runable version of this code with maven and java 8: +Create a runable version of this code with maven and java 11: ``` mvn clean package From d23183c9540eaf888a36fa5b8b4089dfd6d1e693 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 13:50:23 +0100 Subject: [PATCH 05/62] Update codeql-analysis.yml (#296) --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ef963f52a2..e4cfe4013a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,10 +39,10 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 - - name: Set up JDK 1.8 + - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 1.11 settings-path: ${{ github.workspace }} - name: Load local Maven repository cache From f0ac79ec5c33eb4fd6a1b49b8ad3fa244a431edd Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Fri, 25 Feb 2022 14:36:52 +0100 Subject: [PATCH 06/62] compile using java 1.8 (#297) --- .github/workflows/build_package.yml | 4 ++-- .github/workflows/create-release.yml | 4 ++-- .github/workflows/java_checkstyle.yml | 4 ++-- .github/workflows/nexus-publish-snapshots.yml | 4 ++-- .github/workflows/run_tests.yml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 4fcf03e9bf..9d334b8fa9 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 - name: Load local Maven repository cache uses: actions/cache@v2 with: diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index bf7062cf09..57d5afed65 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -12,10 +12,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 settings-path: ${{ github.workspace }} - name: Load local Maven repository cache diff --git a/.github/workflows/java_checkstyle.yml b/.github/workflows/java_checkstyle.yml index a41426e130..67094d5ada 100644 --- a/.github/workflows/java_checkstyle.yml +++ b/.github/workflows/java_checkstyle.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 - name: Download Checkstyle run: wget https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.31/checkstyle-8.31-all.jar diff --git a/.github/workflows/nexus-publish-snapshots.yml b/.github/workflows/nexus-publish-snapshots.yml index 78bf80734c..8b8c411c16 100644 --- a/.github/workflows/nexus-publish-snapshots.yml +++ b/.github/workflows/nexus-publish-snapshots.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 server-id: github # Value of the distributionManagement/repository/id field of the pom.xml settings-path: ${{ github.workspace }} diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 452314f2b0..23fafb97b1 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 - name: Load local Maven repository cache uses: actions/cache@v2 From 936e2f1a468fd19ee99a2e23377e7f7fd563e9c3 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 14:38:27 +0100 Subject: [PATCH 07/62] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8b104d50f..d97d27b359 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ _Data Model Library - A collection of QBiC data models._ ## How to Run -Create a runable version of this code with maven and java 11: +Create a runable version of this code with maven and java 8: ``` mvn clean package From cd2670673c707ce2988aec47ca694f597ad90db2 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 15:51:17 +0100 Subject: [PATCH 08/62] downgrade codeql to java 8 (#298) --- .github/workflows/codeql-analysis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e4cfe4013a..ef963f52a2 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,10 +39,10 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 - - name: Set up JDK 1.11 + - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.11 + java-version: 1.8 settings-path: ${{ github.workspace }} - name: Load local Maven repository cache From 839b29ae5708aab77e0d19c4ce869b43e7af5126 Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Fri, 25 Feb 2022 17:23:08 +0100 Subject: [PATCH 09/62] Bump xml-manager-lib to 1.7.0 (#301) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9c83b954a0..15e0618835 100644 --- a/pom.xml +++ b/pom.xml @@ -111,7 +111,7 @@ life.qbic xml-manager-lib - 1.7.0-SNAPSHOT + 1.7.0 ${osgi.scope} From 09ddded59c376f9823c27904b5804a456febd83d Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Fri, 25 Feb 2022 17:40:40 +0100 Subject: [PATCH 10/62] use master branch name --- .github/workflows/codeql-analysis.yml | 4 ++-- .github/workflows/create-release.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ef963f52a2..416069e972 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,10 @@ name: "CodeQL" on: push: - branches: [ master, development, patch/*, release/*, hotfix/* ] + branches: [ master, main, development, patch/*, release/*, hotfix/* ] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [ master, main] schedule: - cron: '21 1 * * 4' diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 57d5afed65..76e2552ce8 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -85,5 +85,5 @@ jobs: await github.request(`POST /repos/${{ github.repository }}/pulls`, { title: 'Update version to ${{ github.event.inputs.versionTag }}', head: 'release/set-version-to-${{ github.event.inputs.versionTag }}', - base: 'main' + base: 'master' }); From be00b960eb29496498f29507afb9a302f578fdf7 Mon Sep 17 00:00:00 2001 From: Sven F Date: Mon, 28 Feb 2022 08:09:08 +0100 Subject: [PATCH 11/62] Fix base branch name to master This solves the failing Github release worklfow --- .github/workflows/create-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 57d5afed65..76e2552ce8 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -85,5 +85,5 @@ jobs: await github.request(`POST /repos/${{ github.repository }}/pulls`, { title: 'Update version to ${{ github.event.inputs.versionTag }}', head: 'release/set-version-to-${{ github.event.inputs.versionTag }}', - base: 'main' + base: 'master' }); From 83a9637f3702a00dd2c45677861da3c6c48bb54d Mon Sep 17 00:00:00 2001 From: Sven F Date: Mon, 28 Feb 2022 16:34:41 +0100 Subject: [PATCH 12/62] Adjust workflow triggers (#305) * Test commit * Add new triggers * Reorder git commands --- .github/workflows/build_package.yml | 9 +++++++-- .github/workflows/create-release.yml | 13 ++++++++----- .github/workflows/run_tests.yml | 8 +++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 9d334b8fa9..85c2e00a7e 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -1,7 +1,12 @@ name: Build Maven Package -on: [push] - +on: + push: + branches: + - '*' + pull_request: + # The branches below must be a subset of the branches above + branches: [ main, master ] jobs: package: runs-on: ubuntu-latest diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 76e2552ce8..4203baf0b8 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -42,7 +42,7 @@ jobs: || contains(github.event.inputs.versionTag, 'rc')) }} uses: actions/github-script@v4.0.2 with: - github-token: ${{secrets.GITHUB_TOKEN}} + github-token: ${{secrets.JOHNNY_Q5_REPORTS_TOKEN}} script: | await github.request(`POST /repos/${{ github.repository }}/releases`, { tag_name: "${{ github.event.inputs.versionTag }}", @@ -55,7 +55,7 @@ jobs: || contains(github.event.inputs.versionTag, 'rc')) }} uses: actions/github-script@v4.0.2 with: - github-token: ${{secrets.GITHUB_TOKEN}} + github-token: ${{secrets.JOHNNY_Q5_REPORTS_TOKEN}} script: | await github.request(`POST /repos/${{ github.repository }}/releases`, { tag_name: "${{ github.event.inputs.versionTag }}", @@ -71,16 +71,19 @@ jobs: - name: Switch to new branch run: git checkout -b release/set-version-to-${{ github.event.inputs.versionTag }} + - name: Set remote branch + run: git push --set-upstream origin release/set-version-to-${{ github.event.inputs.versionTag }} + - name: Checkin commit run: git commit . -m 'Set version to ${{ github.event.inputs.versionTag }}' - - name: Set remote branch - run: git push --set-upstream origin release/set-version-to-${{ github.event.inputs.versionTag }} + - name: Push to Github + run: git push - name: Open PR with version bump uses: actions/github-script@v4.0.2 with: - github-token: ${{secrets.GITHUB_TOKEN}} + github-token: ${{secrets.JOHNNY_Q5_REPORTS_TOKEN}} script: | await github.request(`POST /repos/${{ github.repository }}/pulls`, { title: 'Update version to ${{ github.event.inputs.versionTag }}', diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 23fafb97b1..ab4e81d9bb 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -1,6 +1,12 @@ name: Run Maven Tests -on: [push] +on: + push: + branches: + - '*' + pull_request: + # The branches below must be a subset of the branches above + branches: [ main, master ] jobs: test: From 15d8b51a6d35f9cb5059d51ecb642fdc4f4bd2fe Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Mon, 28 Feb 2022 16:41:13 +0100 Subject: [PATCH 13/62] Set version to 2.16.1 (#306) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15e0618835..c6aca28d53 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.15.0 + 2.16.1 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 8b8ba0ecd8ef14f7dabe7b9511fd0ac0c86623fc Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Fri, 4 Mar 2022 13:29:22 +0100 Subject: [PATCH 14/62] Update workflows (#307) --- .github/workflows/build_package.yml | 4 ++-- .github/workflows/run_tests.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 85c2e00a7e..d616186cc2 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -3,10 +3,11 @@ name: Build Maven Package on: push: branches: - - '*' + - '**' pull_request: # The branches below must be a subset of the branches above branches: [ main, master ] + jobs: package: runs-on: ubuntu-latest @@ -24,6 +25,5 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - - name: Run mvn package run: mvn -B package --file pom.xml diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index ab4e81d9bb..5708a25850 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -3,7 +3,7 @@ name: Run Maven Tests on: push: branches: - - '*' + - '**' pull_request: # The branches below must be a subset of the branches above branches: [ main, master ] From d4a36d82725fd3827e79ae7e33ddb40f8d01c0cb Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Tue, 29 Mar 2022 08:06:46 +0200 Subject: [PATCH 15/62] Update Workflows to requirement specified by the template (#308) * update workflows * remove outdated workflow, add main branch and remove duplicate code of conduct * Remove templates Co-authored-by: wow-such-code Co-authored-by: Sven F --- .generate-reports.py | 254 --------------------- .github/ISSUE_TEMPLATE/bug_report.md | 28 --- .github/ISSUE_TEMPLATE/feature_request.md | 20 -- .github/ISSUE_TEMPLATE/general_question.md | 13 -- .github/pull_request_template.md | 19 -- .github/workflows/codeql-analysis.yml | 4 +- .github/workflows/java_checkstyle.yml | 23 -- CODE_OF_CONDUCT.md | 46 ---- 8 files changed, 2 insertions(+), 405 deletions(-) delete mode 100755 .generate-reports.py delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/general_question.md delete mode 100644 .github/pull_request_template.md delete mode 100644 .github/workflows/java_checkstyle.yml delete mode 100644 CODE_OF_CONDUCT.md diff --git a/.generate-reports.py b/.generate-reports.py deleted file mode 100755 index ead7b28fbc..0000000000 --- a/.generate-reports.py +++ /dev/null @@ -1,254 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# fancy comments come at a cost! - -# Script to generate a Maven site and push reports to a branch (gh-pages by default). -# This script assumes that both git and Maven have been installed and that the following environment variables -# are defined: -# - REPORTS_GITHUB_ACCESS_TOKEN: GitHub personal access token used to push generated reports -# - REPORTS_GITHUB_USERNAME: username used to push generated reports -# -# Yes, these could be passed as arguments, but Travis log would print them out. - -# Output of this script is to populate the gh-pages branch with the reports generated by running "mvn site". -# The structure of the generated reports is similar to: -# -# (branch gh-pages) # pages_branch option -# reports # base_output_dir option -# ├── development # output_dir positional argument -# │  ├── index.html -# │  ├── pmd.html -# │ ├── jacoco.html -# │ └── ... -# │   -# ├── 1.0.0 # output_dir positional argument -# │  ├── index.html -# │  ├── pmd.html -# │ ├── jacoco.html -# │ └── ... -# │   -# ├── 1.0.1 # output_dir positional argument -# │  ├── index.html -# │  ├── pmd.html -# │ ├── jacoco.html -# │ └── ... -# │   -# └── 2.0.0 # output_dir positional argument -#   ├── index.html -#   ├── pmd.html -# ├── jacoco.html -# └── ... -# -# So only one "development" version of the reports is maintained, while reports for all -# tagged commits--assumed to be releases--are maintained on the gh-pages branch. -# -# The content of each of the folders is whatever Maven generates on the target/site folder. - - -import argparse, os, shutil, subprocess, tempfile, sys, re - -# folder where maven outputs reports generated by running "mvn site" -MAVEN_SITE_DIR = os.path.join('target', 'site') -# base directory where reports will be copied to -BASE_REPORT_DIR = 'reports' -# credentials are given via environment variables -TOKEN_ENV_VARIABLE_NAME = 'REPORTS_GITHUB_ACCESS_TOKEN' -# compiled regex to match files that should not be deleted when cleaning the working folder (in gh-pages) -UNTOUCHABLE_FILES_MATCHER = re.compile('^\.git.*') -# regex to validate output folder -REPORTS_VERSION_REGEX = '^(development|[vV]?\d+\.\d+\.\d+)$' - - -# parses arguments and does the thing -def main(): - parser = argparse.ArgumentParser(description='QBiC Javadoc Generator.', prog='generate-javadocs.py', formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument('-s', '--site-dir', default=MAVEN_SITE_DIR, - help='Directory where Maven reports are found (output of running \'mvn site\').') - parser.add_argument('-b', '--base-output-dir', default=BASE_REPORT_DIR, - help='Base directory where the reports will be copied.') - parser.add_argument('-p', '--pages-branch', default="gh-pages", - help='Name of the git branch on which the reports will be pushed.') - parser.add_argument('-a', '--access-token-var-name', default=TOKEN_ENV_VARIABLE_NAME, - help='Name of the environment variable holding the GitHub personal access token used to push changes in reports.') - parser.add_argument('-r', '--validation-regex', default=REPORTS_VERSION_REGEX, - help='Regular expression to validate output_dir; it is assumed that report folders are named after a version.') - parser.add_argument('--dry-run', action='store_true', - help='If present, no changes to the remote repository (git commit/push) will be executed.') - parser.add_argument('--skip-cleanup', action='store_true', - help='Whether cleanup tasks (removing cloned repos) should be skipped.') - parser.add_argument('output_dir', - help='Name of the folder, relative to the base output directory, where reports will be copied to. \ - This folder will be first cleared of its contents before the generated reports are copied. \ - Recommended values are: "development" or a valid release version string (e.g., 1.0.1)') - parser.add_argument('repo_slug', help='Slug of the repository for which reports are being built.') - parser.add_argument('commit_message', nargs='+', help='Message(s) to use when committing changes.') - args = parser.parse_args() - - # check that the required environment variables have been defined - try: - validateArguments(args) - except Exception as e: - print('Error: {}'.format(str(e)), file=sys.stderr) - exit(1) - - # since this will run on Travis, we cannot assume that we can change the current local repo without breaking anything - # the safest way would be to clone this same repository on a temporary folder and leave the current local repo alone - working_dir = tempfile.mkdtemp() - clone_self(working_dir, args) - - # reports are available only in a specific branch - force_checkout_pages_branch(working_dir, args) - - # since new branches have a parent commit, we have to remove everything but: - # * important files (e.g., .git) - # * the base output directory (args.base_output_dir) - # otherwise, the newly created gh-pages branch will contain other non-report files! - # also, it is a good idea to remove everything, since we don't want lingering unused report files - remove_unneeded_files(working_dir, args) - - # move rports to their place - prepare_report_dir(working_dir, args) - - # add, commit, push - push_to_pages_branch(working_dir, args) - - # clean up - if args.skip_cleanup: - print('Skipping cleanup of working folder {}'.format(working_dir)) - else: - print('Removing working folder {}'.format(working_dir)) - shutil.rmtree(working_dir) - - -# Sanity check -def validateArguments(args): - # check that the required environment variables are present - if not args.access_token_var_name in os.environ: - raise Exception('At least one of the required environment variables is missing. See comments on .generate-reports.py for further information.') - - # check if the name of the output_dir matches the regex - regex = re.compile(args.validation_regex) - if not regex.match(args.output_dir): - raise Exception('The provided output directory for the reports, {}, is not valid. It must match the regex {}'.format(args.output_dir, args.validation_regex)) - - # check that the reports are where they should be (you never know!) - if not os.path.exists(args.site_dir) or not os.path.isdir(args.site_dir): - raise Exception('Maven site folder {} does not exist or is not a directory.'.format(args.site_dir)) - - -# Clones this repo into the passed working directory, credentials are used because OAuth has a bigger quota -# plus, we will be pushing changes to gh-pages branch -def clone_self(working_dir, args, exit_if_fail=True): - execute(['git', 'clone', 'https://{}:x-oauth-basic@github.com/{}'.format(os.environ[args.access_token_var_name], args.repo_slug), working_dir], - 'Could not clone {} in directory {}'.format(args.repo_slug, working_dir), exit_if_fail) - - -# Checks out the branch where reports reside (gh-pages) -def force_checkout_pages_branch(working_dir, args): - # we need to add the gh-pages branch if it doesn't exist (git checkout -b gh-pages), - # but if gh-pages already exists, we need to checkout (git checkout gh-pages), luckily, - # "git checkout branch" fails if branch doesn't exist - print('Changing to branch {}'.format(args.pages_branch)) - try: - execute(['git', '-C', working_dir, 'checkout', args.pages_branch], exit_if_fail=False) - except: - execute(['git', '-C', working_dir, 'checkout', '-b', args.pages_branch], 'Could not create branch {}'.format(args.pages_branch)) - - -# Goes through the all files/folders (non-recursively) and deletes them using 'git rm'. -# Files that should not be deleted are ignored -def remove_unneeded_files(working_dir, args): - print('Cleaning local repository ({}) of non-reports files'.format(working_dir)) - for f in os.listdir(working_dir): - if should_delete(f, args): - # instead of using OS calls to delete files/folders, use git rm to stage deletions - print(' Deleting {} from {} branch'.format(f, args.pages_branch)) - execute(['git', '-C', working_dir, 'rm', '-r', '--ignore-unmatch', f], 'Could not remove {}.'.format(f)) - # files that are not part of the repository aren't removed by git and the --ignore-unmatch flag makes - # git be nice so it doesn't exit with errors, so we need to force-remove them - force_delete(os.path.join(working_dir, f)) - else: - print(' Ignoring file/folder {}'.format(f)) - - -# Prepares the report output directory, first by clearing it and then by moving the contents of target/site into it -def prepare_report_dir(working_dir, args): - report_output_dir = os.path.join(working_dir, args.base_output_dir, args.output_dir) - if os.path.exists(report_output_dir): - if not os.path.isdir(report_output_dir): - print('WARNING: Output destination {} exists and is not a directory.'.format(report_output_dir), file=sys.stderr) - # remove the object from git - print('Removing {}'.format(report_output_dir)) - execute(['git', '-C', working_dir, 'rm', '-r', '--ignore-unmatch', os.path.join(args.base_output_dir, args.output_dir)], - 'Could not remove {}.'.format(report_output_dir)) - # just in case git doesn't remove the file (if it wasn't tracked, for instance), force deletion using OS calls - force_delete(report_output_dir) - # we know the output folder doesn't exist, so we can recreate it - print('Creating {}'.format(report_output_dir)) - os.makedirs(report_output_dir) - - # accidentally the whole target/site folder (well, yes, but actually, no, because we need only its contents) - print('Moving contents of {} to {}'.format(args.site_dir, report_output_dir)) - for f in os.listdir(args.site_dir): - print(' Moving {}'.format(f)) - shutil.move(os.path.join(args.site_dir, f), report_output_dir) - - -# Adds, commits and pushes changes -def push_to_pages_branch(working_dir, args): - if args.dry_run: - print('(running in dry run mode) Local/remote repository will not be modified') - else: - # add changes to the index - print('Staging changes for commit') - execute(['git', '-C', working_dir, 'add', '.'], 'Could not stage reports for commit.') - - # build the git-commit command and commit changes - print('Pushing changes upstream') - git_commit_command = ['git', '-C', working_dir, 'commit'] - for commit_message in args.commit_message: - git_commit_command.extend(['-m', commit_message]) - execute(git_commit_command, 'Could not commit changes') - - # https://www.youtube.com/watch?v=vCadcBR95oU - execute(['git', '-C', working_dir, 'push', '-u', 'origin', args.pages_branch], 'Could not push changes using provided credentials.') - - -# Whether it is safe to delete the given path, we won't delete important files/folders (such as .git) -# or the base output directory -def should_delete(path, args): - return not UNTOUCHABLE_FILES_MATCHER.match(path) and path != args.base_output_dir - - -# Forcefully deletes recursively the passed file/folder using OS calls -def force_delete(file): - if os.path.exists(file): - if os.path.isdir(file): - shutil.rmtree(file) - else: - os.remove(file) - - -# Executes an external command -# stderr/stdout are hidden to avoid leaking credentials into log files in Travis, so it might be a pain in the butt to debug, sorry, but safety first! -# if exit_if_fail is set to True, this method will print minimal stacktrace information and exit if a failure is encountered, otherwise, an exception -# will be thrown (this is useful if an error will be handled by the invoking method) -def execute(command, error_message='Error encountered while executing command', exit_if_fail=True): - # do not print the command, stderr or stdout! this might expose usernames/passwords/tokens! - try: - subprocess.run(command, check=True, stderr=subprocess.DEVNULL, stdout=subprocess.DEVNULL) - except: - if exit_if_fail: - stack = traceback.extract_stack() - try: - print('{}\n Error originated at file {}, line {}'.format(error_message, stack[-2].filename, stack[-2].lineno), file=sys.stderr) - except: - print('{}\n No information about the originating call is available.'.format(error_message), file=sys.stderr) - exit(1) - else: - raise Exception() - - - -if __name__ == "__main__": - main() diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index d162979ed6..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -name: Bug report -about: Create a bug report to help us improve -title: 'Bug Summary' -labels: 'bug' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. ... -2. ... -3. ... - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**System [please complete the following information]:** - - OS: e.g. [Ubuntu 18.04] - - Language Version: [e.g. Python 3.8] - - Virtual environment: [e.g. Conda] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3bed8fc2f7..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest a new feature -title: 'Feature Request Summary' -labels: 'enhancement' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when ... - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/general_question.md b/.github/ISSUE_TEMPLATE/general_question.md deleted file mode 100644 index 37c39b39b9..0000000000 --- a/.github/ISSUE_TEMPLATE/general_question.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: General question -about: Ask a question about anything related to this project -title: 'Question' -labels: 'question' -assignees: '' - ---- - -**Question** - -Please ask your question here. It can be about the usage of this project, the internals, the implementation or whatever interests you. -Please use the BUG template for bugs and the FEATURE REQUEST template for feature requests. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index f6fd3ac9a6..0000000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,19 +0,0 @@ -Many thanks for contributing to this project! - -**PR Checklist** -Please fill in the appropriate checklist below (delete whatever is not relevant). These are the most common things requested on pull requests (PRs). - -- [ ] This comment contains a description of changes (with reason) -- [ ] Referenced issue is linked -- [ ] If you've fixed a bug or added code that should be tested, add tests! -- [ ] Documentation in `docs` is updated -- [ ] `CHANGELOG.rst` is updated - -**Description of changes** -Please state what you've changed and how it might affect the user. - -**Technical details** -Please state any technical details such as limitations, reasons for additional dependencies, benchmarks etc. here. - -**Additional context** -Add any other context or screenshots here. diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ef963f52a2..d708ad0ff5 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,10 @@ name: "CodeQL" on: push: - branches: [ master, development, patch/*, release/*, hotfix/* ] + branches: [ main, master, development, release/*, hotfix/* ] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [ main, master ] schedule: - cron: '21 1 * * 4' diff --git a/.github/workflows/java_checkstyle.yml b/.github/workflows/java_checkstyle.yml deleted file mode 100644 index 67094d5ada..0000000000 --- a/.github/workflows/java_checkstyle.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Java Checkstyle - -on: [push] - -jobs: - checkstyle: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - - name: Download Checkstyle - run: wget https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.31/checkstyle-8.31-all.jar - - - name: Download Google style xml - run: wget https://raw.githubusercontent.com/checkstyle/checkstyle/checkstyle-8.28/src/main/resources/google_checks.xml - - - name: Run Checkstyle - run: java -jar checkstyle-8.31-all.jar -c google_checks.xml . diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 8993572ecd..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at info@qbic.uni-tuebingen.de. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ From 455eabcd4abac739bd49d071ee9c0e55d609f0cb Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Tue, 29 Mar 2022 08:19:10 +0200 Subject: [PATCH 16/62] Add ids to offermanager dtos (#310) * add database id field to builder generated DTOs * add dedicated constructors to products * add missing @EqualsAndHashCode annotation * FacilityFactory searches in label, fullName and enum name * Bump dependencies Co-authored-by: Tobias Koch Co-authored-by: Tobias Koch --- pom.xml | 4 +- .../dtos/business/Affiliation.groovy | 16 +++++++ .../qbic/datamodel/dtos/business/Offer.groovy | 15 +++++++ .../dtos/business/ProductItem.groovy | 14 ++++++ .../dtos/business/ProjectApplication.groovy | 5 +-- .../facilities/FacilityFactory.groovy | 21 ++++++--- .../business/services/AtomicProduct.groovy | 20 +++++++++ .../dtos/business/services/DataStorage.groovy | 21 +++++++++ .../services/ExternalServiceProduct.groovy | 16 +++++++ .../services/MetabolomicAnalysis.groovy | 21 ++++++++- .../business/services/PartialProduct.groovy | 20 +++++++++ .../business/services/PrimaryAnalysis.groovy | 20 +++++++++ .../dtos/business/services/Product.groovy | 44 +++++++++++++++++++ .../services/ProjectManagement.groovy | 19 ++++++++ .../services/ProteomicAnalysis.groovy | 20 +++++++++ .../services/SecondaryAnalysis.groovy | 19 ++++++++ .../dtos/business/services/Sequencing.groovy | 20 +++++++++ .../dtos/general/CommonPerson.groovy | 3 ++ .../qbic/datamodel/dtos/general/Person.groovy | 16 +++++++ .../dtos/projectmanagement/Project.groovy | 14 ++++++ .../ProjectIdentifier.groovy | 3 ++ 21 files changed, 339 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index c6aca28d53..c0291b893a 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ org.codehaus.groovy groovy-all - 3.0.9 + 3.0.10 pom ${osgi.scope} @@ -144,7 +144,7 @@ org.spockframework spock-core - 2.0-groovy-3.0 + 2.1-groovy-3.0 test diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy index 95f840d115..7a7f1953b1 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy @@ -11,6 +11,13 @@ import groovy.transform.EqualsAndHashCode @EqualsAndHashCode final class Affiliation { + /** + * The database id of an affiliation. + * + * For example "1" + */ + final int id + /** * The organisation label of an affiliation. * @@ -61,6 +68,8 @@ final class Affiliation { static class Builder { + int id + String organisation String addressAddition @@ -78,6 +87,7 @@ final class Affiliation { AffiliationLabel label Builder(String organisation, String street, String postalCode, String city) { + this.id = id this.organisation = organisation this.street = street this.postalCode = postalCode @@ -88,6 +98,11 @@ final class Affiliation { this.label = AffiliationLabel.MNF } + Builder id(int id){ + this.id = id + return this + } + /** * Sets an address addition * @param addressAddition @@ -121,6 +136,7 @@ final class Affiliation { } private Affiliation(Builder builder) { + this.id = builder.id this.addressAddition = builder.addressAddition this.organisation = builder.organisation this.street = builder.street diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy index 6ca9075bc4..93c8867f08 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy @@ -13,6 +13,12 @@ import life.qbic.datamodel.dtos.projectmanagement.ProjectIdentifier @EqualsAndHashCode class Offer { + + /** + * database id of an offer + */ + final int id + /** * The checksum of the offer */ @@ -111,6 +117,7 @@ class Offer { static class Builder { + int id /* Overall offer describing properties */ @@ -189,6 +196,11 @@ class Offer { this.projectDescription = Objects.requireNonNull(projectObjective, "Project Objective must not be null") } + Builder id(int id) { + this.id = id + return this + } + Builder checksum(String checksum) { this.checksum = checksum return this @@ -280,6 +292,9 @@ class Offer { } private Offer(Builder builder) { + + this.id = builder.id + /* Offer Related Properties */ diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy index d9a92fae11..e8bd8bf670 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy @@ -13,6 +13,13 @@ import life.qbic.datamodel.dtos.business.services.Product @EqualsAndHashCode class ProductItem { + /** + * The database of an id of a ProductItem + * + * For example "1" + */ + final int id + /** * Describes the amount of a given item */ @@ -55,6 +62,13 @@ class ProductItem { this.quantityDiscount = quantityDiscount } + ProductItem(int id, double quantity, Product product, double totalPrice, double quantityDiscount) { + this.id = id + this.quantity = quantity + this.product = product + this.totalPrice = totalPrice + this.quantityDiscount = quantityDiscount + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/ProjectApplication.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/ProjectApplication.groovy index 1e833681c4..a9bdb434ce 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/ProjectApplication.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/ProjectApplication.groovy @@ -1,8 +1,6 @@ package life.qbic.datamodel.dtos.business -import life.qbic.datamodel.dtos.business.Customer -import life.qbic.datamodel.dtos.business.OfferId -import life.qbic.datamodel.dtos.business.ProjectManager +import groovy.transform.EqualsAndHashCode import life.qbic.datamodel.dtos.projectmanagement.ProjectCode import life.qbic.datamodel.dtos.projectmanagement.ProjectSpace @@ -19,6 +17,7 @@ import life.qbic.datamodel.dtos.projectmanagement.ProjectSpace * * @since 2.3.0 */ +@EqualsAndHashCode class ProjectApplication { /** diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/FacilityFactory.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/FacilityFactory.groovy index 82199a6ce5..f6e56fcda4 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/FacilityFactory.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/FacilityFactory.groovy @@ -21,11 +21,20 @@ class FacilityFactory extends EnumFactory { */ @Override Facility getForString(String value) { - Facility desiredKey - desiredKey = Facility.values().find {it.fullName.equals(value.trim())} - if (!desiredKey) { - throw new IllegalArgumentException("Invalid value '$value' for ${Facility.getSimpleName()}") - } - return desiredKey + Optional matchingFullName = Arrays.stream(Facility.values()) + .filter(it -> it.fullName == value) + .findFirst() + Optional matchingLabel = Arrays.stream(Facility.values()) + .filter(it -> it.label == value) + .findFirst() + Optional matchingEnumValue = Arrays.stream(Facility.values()) + .filter(it -> it.name() == value) + .findFirst() + + return matchingFullName + .orElse( matchingLabel + .orElse(matchingEnumValue + .orElseThrow(() -> + new IllegalArgumentException("Invalid value '$value' for ${Facility.getSimpleName()}")))) } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/AtomicProduct.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/AtomicProduct.groovy index d32b9d9ac1..c13b6867ae 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/AtomicProduct.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/AtomicProduct.groovy @@ -50,4 +50,24 @@ class AtomicProduct extends Product { AtomicProduct(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, ProductId productId, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, productId, serviceProvider) } + + /** + * Basic product constructor with id. + * + * Checks that all passed arguments except id are not null. + * + * @paran id the id of the product + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param productId The product identifier + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + AtomicProduct(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, ProductId productId, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, productId, serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/DataStorage.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/DataStorage.groovy index cc937b81f9..927cb8ccc0 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/DataStorage.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/DataStorage.groovy @@ -64,4 +64,25 @@ class DataStorage extends PartialProduct { DataStorage(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.DATA_STORAGE.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor. + * + * Checks that all passed arguments except id are not null. + * + * @param id The id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * + * @since 2.17.0 + */ + DataStorage(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.DATA_STORAGE.getAbbreviation(), runningNumber).build(), serviceProvider) + } + + } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ExternalServiceProduct.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ExternalServiceProduct.groovy index ae089d1f15..b17b90254e 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ExternalServiceProduct.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ExternalServiceProduct.groovy @@ -28,4 +28,20 @@ class ExternalServiceProduct extends PartialProduct { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder( ProductCategory.EXTERNAL_SERVICE.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Creates an instance of an {@link ExternalServiceProduct}. + * @param id the id of the product + * @param name The name of the product + * @param description A product description + * @param internalUnitPrice The net internal unit price of the product + * @param externalUnitPrice The net external unit price of the product + * @param unit The unit of the product + * @param productId A product id, uniquely identifying the product in the offer environment + * @param serviceProvider The service provider + */ + ExternalServiceProduct(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder( + ProductCategory.EXTERNAL_SERVICE.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy index ca23f95678..374600ddf1 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy @@ -65,5 +65,24 @@ class MetabolomicAnalysis extends AtomicProduct { MetabolomicAnalysis(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.METABOLOMIC.getAbbreviation(), runningNumber).build(), serviceProvider) } -} + /** + * Basic product constructor with id. + * + * Checks that all passed arguments except id are not null. + * + * @paran id the id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + MetabolomicAnalysis(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.METABOLOMIC.getAbbreviation(), runningNumber).build(), serviceProvider) + } +} diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PartialProduct.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PartialProduct.groovy index 6aa73238ff..fb6f69c56a 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PartialProduct.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PartialProduct.groovy @@ -51,4 +51,24 @@ class PartialProduct extends Product { PartialProduct(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, ProductId productId, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, productId, serviceProvider) } + + /** + * Basic product constructor. + * + * Checks that all passed arguments except id are not null. + * + * @param id The id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param productId The product identifier + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + PartialProduct(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, ProductId productId, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, productId, serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy index 67badca36e..58033d06ed 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy @@ -65,4 +65,24 @@ class PrimaryAnalysis extends AtomicProduct { PrimaryAnalysis(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PRIMARY_BIOINFO.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor with id. + * + * Checks that all passed arguments except id are not null. + * + * @param id the id of the product + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * @param serviceProvider The facility providing the service product + * + * @since 2.11.0 + */ + PrimaryAnalysis(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PRIMARY_BIOINFO.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy index 6595905457..d1bf3dd377 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy @@ -15,6 +15,13 @@ import life.qbic.datamodel.dtos.business.facilities.Facility @EqualsAndHashCode abstract class Product { + /** + * The database id of a Product. + * + * For example "1" + */ + final int id + /** * Some text describing what the the product providing. */ @@ -128,4 +135,41 @@ abstract class Product { this.serviceProvider = Objects.requireNonNull(serviceProvider, "Service provider must not be null") } + /** + * Basic product constructor. + * + * Checks that all passed arguments except id are not null. + * + * @param id The id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param productId The Id of the product + * + * @since 2.17.0 + */ + + Product(int id, + String name, + String description, + double internalUnitPrice, + double externalUnitPrice, + ProductUnit unit, + ProductId productId, + Facility serviceProvider) { + this.id = id + this.productName = Objects.requireNonNull(name, "Name must not be null") + this.description = Objects.requireNonNull(description, "Description must not be null") + this.internalUnitPrice = Objects.requireNonNull(internalUnitPrice, "Internal unit price must not be null") + this.externalUnitPrice = Objects.requireNonNull(externalUnitPrice, "External unit price must not be null") + this.unitPrice = 0.00 + this.unit = Objects.requireNonNull(unit, "Unit must not be null") + this.productId = Objects.requireNonNull(productId, "ProductId must not be null") + //currency is on default in euro + this.currency = Currency.getInstance(Locale.GERMANY) + this.serviceProvider = Objects.requireNonNull(serviceProvider, "Service provider must not be null") + } + } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProjectManagement.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProjectManagement.groovy index 76aed29824..9016263b07 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProjectManagement.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProjectManagement.groovy @@ -65,4 +65,23 @@ class ProjectManagement extends PartialProduct { ProjectManagement(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PROJECT_MANAGEMENT.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor with id + * + * Checks that all passed arguments except id are not null. + * @param id the id of the product + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + ProjectManagement(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PROJECT_MANAGEMENT.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy index 174bffce32..57b2e444a6 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy @@ -66,4 +66,24 @@ class ProteomicAnalysis extends AtomicProduct { ProteomicAnalysis(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PROTEOMIC.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor with id. + * + * Checks that all passed arguments except id are not null. + * + * @param id the id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + ProteomicAnalysis(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.PROTEOMIC.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy index 9a69ea244d..a436d15812 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy @@ -65,4 +65,23 @@ class SecondaryAnalysis extends AtomicProduct { SecondaryAnalysis(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.SECONDARY_BIOINFO.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor with id. + * + * Checks that all passed arguments except id are not null. + * + * @param id The id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * + * @since 2.17.0 + */ + SecondaryAnalysis(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.SECONDARY_BIOINFO.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy index 7d41f2e149..4803246be1 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy @@ -65,4 +65,24 @@ class Sequencing extends AtomicProduct { Sequencing(String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { super(name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.SEQUENCING.getAbbreviation(), runningNumber).build(), serviceProvider) } + + /** + * Basic product constructor with id. + * + * Checks that all passed arguments are not null. + * + * @param id the id of the product. + * @param name The name of the product. + * @param description The description of what the product is about. + * @param internalUnitPrice The price in € per unit for internal customers + * @param externalUnitPrice The price in € per unit for external customers + * @param unit The product unit + * @param runningNumber Number used in conjunction with {@link ProductCategory} to identify product + * @param serviceProvider The facility providing the service product + * + * @since 2.17.0 + */ + Sequencing(int id, String name, String description, double internalUnitPrice, double externalUnitPrice, ProductUnit unit, long runningNumber, Facility serviceProvider) { + super(id, name, description, internalUnitPrice, externalUnitPrice, unit, new ProductId.Builder(ProductCategory.SEQUENCING.getAbbreviation(), runningNumber).build(), serviceProvider) + } } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/general/CommonPerson.groovy b/src/main/groovy/life/qbic/datamodel/dtos/general/CommonPerson.groovy index 7ccd235b05..aea1c298f6 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/general/CommonPerson.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/general/CommonPerson.groovy @@ -1,5 +1,7 @@ package life.qbic.datamodel.dtos.general +import groovy.transform.EqualsAndHashCode + /** * A person without a specific context. * @@ -7,6 +9,7 @@ package life.qbic.datamodel.dtos.general * * @since 1.12.0 */ +@EqualsAndHashCode(callSuper = true) class CommonPerson extends Person { static class Builder extends Person.Builder { diff --git a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy index 5f3ae0baf8..6d25322efc 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy @@ -20,6 +20,13 @@ abstract class Person { */ final String personType + /** + * The database id of a person. + * + * For example "1" + */ + final int id + /** * The person's first name */ @@ -46,6 +53,9 @@ abstract class Person { final List affiliations abstract static class Builder> { + + int id + String firstName String lastName @@ -64,6 +74,11 @@ abstract class Person { this.affiliations = new ArrayList<>() } + T id(int id) { + this.id = id + return self() + } + T title(AcademicTitle title) { this.title = title return self() @@ -90,6 +105,7 @@ abstract class Person { } Person(Builder builder) { + id = builder.id firstName = builder.firstName lastName = builder.lastName emailAddress = builder.emailAddress diff --git a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy index 92a760ca27..bd536a430e 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy @@ -14,6 +14,13 @@ import life.qbic.datamodel.dtos.business.OfferId @EqualsAndHashCode class Project { + /** + * The database id of a project + * + * For example "1" + */ + final int id + /** * A short but descriptive project title */ @@ -30,12 +37,14 @@ class Project { final OfferId linkedOffer private Project(Builder builder) { + this.id = builder.id this.projectId = Objects.requireNonNull(builder.projectIdentifier) this.projectTitle = Objects.requireNonNull(builder.projectTitle) this.linkedOffer = builder.linkedOfferId } static class Builder { + private int id private ProjectIdentifier projectIdentifier private String projectTitle private OfferId linkedOfferId @@ -46,6 +55,11 @@ class Project { this.linkedOfferId = null } + Builder id(int id) { + this.id = id + return this + } + Builder projectIdentifier(ProjectIdentifier projectIdentifier) { this.projectIdentifier = projectIdentifier return this diff --git a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectIdentifier.groovy b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectIdentifier.groovy index 47087d1bfb..164ba98452 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectIdentifier.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectIdentifier.groovy @@ -1,5 +1,7 @@ package life.qbic.datamodel.dtos.projectmanagement +import groovy.transform.EqualsAndHashCode + /** * Global project identifier for QBiC projects * @@ -7,6 +9,7 @@ package life.qbic.datamodel.dtos.projectmanagement * * @since 2.3.0 */ +@EqualsAndHashCode class ProjectIdentifier { /** From e119f271cab5349a19b3015872d2772f21ee0efa Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Thu, 31 Mar 2022 16:06:08 +0200 Subject: [PATCH 17/62] Ignore id field in equals and hash code (#312) * Ignore id field in equals and hashCode method * Fix wrong configuration of the annotation --- .../qbic/datamodel/dtos/business/Affiliation.groovy | 12 ++++++------ .../life/qbic/datamodel/dtos/business/Offer.groovy | 12 ++++++------ .../qbic/datamodel/dtos/business/ProductItem.groovy | 2 +- .../datamodel/dtos/business/services/Product.groovy | 2 +- .../life/qbic/datamodel/dtos/general/Person.groovy | 2 +- .../datamodel/dtos/projectmanagement/Project.groovy | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy index 7a7f1953b1..4285efe834 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy @@ -8,7 +8,7 @@ import groovy.transform.EqualsAndHashCode * @author Sven Fillinger * @since 1.11.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) final class Affiliation { /** @@ -53,10 +53,10 @@ final class Affiliation { final String country /** - * An affiliation category @link{AffiliationCategory}. - * - * Defaults to 'external non-academic'. - */ + * An affiliation category @link{AffiliationCategory}. + * + * Defaults to 'external non-academic'. + */ final AffiliationCategory category /** @@ -98,7 +98,7 @@ final class Affiliation { this.label = AffiliationLabel.MNF } - Builder id(int id){ + Builder id(int id) { this.id = id return this } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy index 93c8867f08..e6289c00f3 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/Offer.groovy @@ -10,7 +10,7 @@ import life.qbic.datamodel.dtos.projectmanagement.ProjectIdentifier * * @since: 1.12.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) class Offer { @@ -247,12 +247,12 @@ class Offer { } Builder itemsWithOverhead(List itemsWithOverhead) { - this.itemsWithOverhead= itemsWithOverhead + this.itemsWithOverhead = itemsWithOverhead return this } Builder itemsWithoutOverhead(List itemsWithoutOverhead) { - this.itemsWithoutOverhead= itemsWithoutOverhead + this.itemsWithoutOverhead = itemsWithoutOverhead return this } @@ -266,7 +266,7 @@ class Offer { return this } - Builder overheadRatio(double overheadRatio){ + Builder overheadRatio(double overheadRatio) { this.overheadRatio = overheadRatio return this } @@ -276,12 +276,12 @@ class Offer { return this } - Builder experimentalDesign(String experimentalDesign){ + Builder experimentalDesign(String experimentalDesign) { this.experimentalDesign = Optional.of(experimentalDesign) return this } - Builder totalDiscountPrice(double totalDiscountPrice){ + Builder totalDiscountPrice(double totalDiscountPrice) { this.totalDiscountPrice = totalDiscountPrice return this } diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy index e8bd8bf670..45f710b587 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy @@ -10,7 +10,7 @@ import life.qbic.datamodel.dtos.business.services.Product * The unit price is always provided in euros. * @since: 1.9.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) class ProductItem { /** diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy index d1bf3dd377..c508cc9353 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Product.groovy @@ -12,7 +12,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * * @since 1.12.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) abstract class Product { /** diff --git a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy index 6d25322efc..69a3727c8e 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy @@ -10,7 +10,7 @@ import life.qbic.datamodel.dtos.business.Affiliation * @author Sven Fillinger * @since 1.11.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) abstract class Person { /** diff --git a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy index bd536a430e..7e378e004f 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/Project.groovy @@ -11,7 +11,7 @@ import life.qbic.datamodel.dtos.business.OfferId * * @since 2.3.0 */ -@EqualsAndHashCode +@EqualsAndHashCode(excludes = ["id"]) class Project { /** From 6cabd64d8e27e0acbdad936715dd6b93d0f816ec Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Wed, 4 May 2022 17:14:39 +0200 Subject: [PATCH 18/62] Feature/fix testing (#314) * add new test case * use new surefire version to re-enable tests * reroll unnecessary changes and bump --- pom.xml | 4 +-- .../OxfordNanoporeExperimentSpec.groovy | 29 ++++++++++--------- .../{ => nanopore}/valid-example-pooled.json | 0 .../valid-example-unclassified.json | 0 .../valid-example-v2.json} | 0 .../{ => nanopore}/valid-example.json | 0 6 files changed, 17 insertions(+), 16 deletions(-) rename src/test/resources/{ => nanopore}/valid-example-pooled.json (100%) rename src/test/resources/{ => nanopore}/valid-example-unclassified.json (100%) rename src/test/resources/{valid-example-newer.json => nanopore/valid-example-v2.json} (100%) rename src/test/resources/{ => nanopore}/valid-example.json (100%) diff --git a/pom.xml b/pom.xml index c0291b893a..8e6ddceb7a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.16.1 + 2.17.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. @@ -171,7 +171,7 @@ maven-surefire-plugin - 2.22.2 + 3.0.0-M5 **/*Spec diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 7a404849b7..dd74031bcd 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -16,13 +16,13 @@ class OxfordNanoporeExperimentSpec extends Specification { * according to the schema */ @Shared - Map minimalWorkingSimpleDataStructure + Map minimalSimpleDataStructure /** - * Newer map that stores the Oxford Nanopore folder structure - * according to the schema that puts some reports in its own folder and adds a new report + * Newer map that stores the Oxford Nanopore folder structure according to the + * schema that puts some reports in its own folder and adds a barcode alignment report */ @Shared - Map minimalWorkingSimpleDataStructureWithReportsFolder + Map extendedDataStructureWithReportsFolder /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -37,23 +37,24 @@ class OxfordNanoporeExperimentSpec extends Specification { Map minimalWorkingPooledDataStructure def setupSpec() { - InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example.json") - minimalWorkingSimpleDataStructure = (Map) new JsonSlurper().parse(stream) + def folder = "nanopore/" + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") + minimalSimpleDataStructure = (Map) new JsonSlurper().parse(stream) // new example with slightly different structure - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-newer.json") - minimalWorkingSimpleDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v2.json") + extendedDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) // read in unclassified example - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-unclassified.json") + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-unclassified.json") unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) // read in pooled example - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-pooled.json") + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-pooled.json") minimalWorkingPooledDataStructure = (Map) new JsonSlurper().parse(stream) stream.close() } def "Create simple sample Oxford Nanopore experiment successfully"() { given: - final def example = minimalWorkingSimpleDataStructure + final def example = minimalSimpleDataStructure when: final def experiment = OxfordNanoporeExperiment.create(example) @@ -65,9 +66,9 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].libraryPreparationKit == "SQK-LSK109" } - def "Create simple sample Oxford Nanopore experiment successfully for newer structure"() { + def "Create sample Oxford Nanopore experiment successfully for newer structure"() { given: - final def example = minimalWorkingSimpleDataStructureWithReportsFolder + final def example = extendedDataStructureWithReportsFolder when: final def experiment = OxfordNanoporeExperiment.create(example) @@ -76,7 +77,7 @@ class OxfordNanoporeExperimentSpec extends Specification { then: assert experiment.sampleCode == "QABCD001AB" assert measurements.size() == 1 - assert measurements[0].libraryPreparationKit == "SQK-LSK109-XL" + assert measurements[0].asicTemp == "32.631687" } def "Create a simple pooled Oxford Nanopore experiment successfully"() { diff --git a/src/test/resources/valid-example-pooled.json b/src/test/resources/nanopore/valid-example-pooled.json similarity index 100% rename from src/test/resources/valid-example-pooled.json rename to src/test/resources/nanopore/valid-example-pooled.json diff --git a/src/test/resources/valid-example-unclassified.json b/src/test/resources/nanopore/valid-example-unclassified.json similarity index 100% rename from src/test/resources/valid-example-unclassified.json rename to src/test/resources/nanopore/valid-example-unclassified.json diff --git a/src/test/resources/valid-example-newer.json b/src/test/resources/nanopore/valid-example-v2.json similarity index 100% rename from src/test/resources/valid-example-newer.json rename to src/test/resources/nanopore/valid-example-v2.json diff --git a/src/test/resources/valid-example.json b/src/test/resources/nanopore/valid-example.json similarity index 100% rename from src/test/resources/valid-example.json rename to src/test/resources/nanopore/valid-example.json From a6d24cf3ed84b3e23ae68cd1ba484e0e70d6b244 Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Thu, 5 May 2022 12:42:13 +0200 Subject: [PATCH 19/62] Set version to 2.17.0 (#313) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c0291b893a..49b0209c1e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.16.1 + 2.17.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 6eda4e32f078be5fb0d4f51efd8cc71b2909ff01 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Fri, 6 May 2022 13:38:14 +0200 Subject: [PATCH 20/62] Feature/fix testing (#314) (#315) * add new test case * use new surefire version to re-enable tests * reroll unnecessary changes and bump --- pom.xml | 4 +-- .../OxfordNanoporeExperimentSpec.groovy | 29 ++++++++++--------- .../{ => nanopore}/valid-example-pooled.json | 0 .../valid-example-unclassified.json | 0 .../valid-example-v2.json} | 0 .../{ => nanopore}/valid-example.json | 0 6 files changed, 17 insertions(+), 16 deletions(-) rename src/test/resources/{ => nanopore}/valid-example-pooled.json (100%) rename src/test/resources/{ => nanopore}/valid-example-unclassified.json (100%) rename src/test/resources/{valid-example-newer.json => nanopore/valid-example-v2.json} (100%) rename src/test/resources/{ => nanopore}/valid-example.json (100%) diff --git a/pom.xml b/pom.xml index 49b0209c1e..8d5f128e52 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.17.0 + 2.17.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. @@ -171,7 +171,7 @@ maven-surefire-plugin - 2.22.2 + 3.0.0-M5 **/*Spec diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 7a404849b7..dd74031bcd 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -16,13 +16,13 @@ class OxfordNanoporeExperimentSpec extends Specification { * according to the schema */ @Shared - Map minimalWorkingSimpleDataStructure + Map minimalSimpleDataStructure /** - * Newer map that stores the Oxford Nanopore folder structure - * according to the schema that puts some reports in its own folder and adds a new report + * Newer map that stores the Oxford Nanopore folder structure according to the + * schema that puts some reports in its own folder and adds a barcode alignment report */ @Shared - Map minimalWorkingSimpleDataStructureWithReportsFolder + Map extendedDataStructureWithReportsFolder /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -37,23 +37,24 @@ class OxfordNanoporeExperimentSpec extends Specification { Map minimalWorkingPooledDataStructure def setupSpec() { - InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example.json") - minimalWorkingSimpleDataStructure = (Map) new JsonSlurper().parse(stream) + def folder = "nanopore/" + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") + minimalSimpleDataStructure = (Map) new JsonSlurper().parse(stream) // new example with slightly different structure - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-newer.json") - minimalWorkingSimpleDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v2.json") + extendedDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) // read in unclassified example - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-unclassified.json") + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-unclassified.json") unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) // read in pooled example - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("valid-example-pooled.json") + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-pooled.json") minimalWorkingPooledDataStructure = (Map) new JsonSlurper().parse(stream) stream.close() } def "Create simple sample Oxford Nanopore experiment successfully"() { given: - final def example = minimalWorkingSimpleDataStructure + final def example = minimalSimpleDataStructure when: final def experiment = OxfordNanoporeExperiment.create(example) @@ -65,9 +66,9 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].libraryPreparationKit == "SQK-LSK109" } - def "Create simple sample Oxford Nanopore experiment successfully for newer structure"() { + def "Create sample Oxford Nanopore experiment successfully for newer structure"() { given: - final def example = minimalWorkingSimpleDataStructureWithReportsFolder + final def example = extendedDataStructureWithReportsFolder when: final def experiment = OxfordNanoporeExperiment.create(example) @@ -76,7 +77,7 @@ class OxfordNanoporeExperimentSpec extends Specification { then: assert experiment.sampleCode == "QABCD001AB" assert measurements.size() == 1 - assert measurements[0].libraryPreparationKit == "SQK-LSK109-XL" + assert measurements[0].asicTemp == "32.631687" } def "Create a simple pooled Oxford Nanopore experiment successfully"() { diff --git a/src/test/resources/valid-example-pooled.json b/src/test/resources/nanopore/valid-example-pooled.json similarity index 100% rename from src/test/resources/valid-example-pooled.json rename to src/test/resources/nanopore/valid-example-pooled.json diff --git a/src/test/resources/valid-example-unclassified.json b/src/test/resources/nanopore/valid-example-unclassified.json similarity index 100% rename from src/test/resources/valid-example-unclassified.json rename to src/test/resources/nanopore/valid-example-unclassified.json diff --git a/src/test/resources/valid-example-newer.json b/src/test/resources/nanopore/valid-example-v2.json similarity index 100% rename from src/test/resources/valid-example-newer.json rename to src/test/resources/nanopore/valid-example-v2.json diff --git a/src/test/resources/valid-example.json b/src/test/resources/nanopore/valid-example.json similarity index 100% rename from src/test/resources/valid-example.json rename to src/test/resources/nanopore/valid-example.json From dd26c4c92fb24f25a320131248724c50583d1bea Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Fri, 6 May 2022 11:40:52 +0000 Subject: [PATCH 21/62] Set version to 2.18.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8d5f128e52..1561b5458b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.17.0 + 2.18.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From ea717919a709137643389e44e0e67a7630d1aee0 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Wed, 11 May 2022 17:24:30 +0200 Subject: [PATCH 22/62] update maxquant schema --- .../schemas/maxquant-result-set.schema.json | 6 +-- .../MaxQuantRunResultSpec.groovy | 2 +- .../maxquant/MaxQuantOutputSpec.groovy | 50 ++++++++++++++++++- .../invalid-project-resultset-example.json | 37 ++++++++++++++ ....json => old_valid-resultset-example.json} | 0 .../valid-resultset-example_latest.json | 37 ++++++++++++++ 6 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 src/test/resources/examples/resultset/maxquant/invalid-project-resultset-example.json rename src/test/resources/examples/resultset/maxquant/{valid-resultset-example.json => old_valid-resultset-example.json} (100%) create mode 100644 src/test/resources/examples/resultset/maxquant/valid-resultset-example_latest.json diff --git a/src/main/resources/schemas/maxquant-result-set.schema.json b/src/main/resources/schemas/maxquant-result-set.schema.json index 36bde0bf84..e09071e2b4 100644 --- a/src/main/resources/schemas/maxquant-result-set.schema.json +++ b/src/main/resources/schemas/maxquant-result-set.schema.json @@ -115,7 +115,7 @@ { "properties": { "name": { - "pattern": "sample_ids" + "pattern": "Q\\w{4}_sample_ids" }, "fileType": { "pattern": "txt" @@ -154,12 +154,10 @@ "required": [ "allPeptides", "evidence", - "experimentalDesignTemplate", "parameters", "peptides", "proteinGroups", "runParameters", - "sampleIds", - "summary" + "sampleIds" ] } diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy index 4d72d797b4..826c16040b 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy @@ -31,7 +31,7 @@ class MaxQuantRunResultSpec extends Specification { Map invalidDataStructure def setupSpec() { - InputStream validStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/valid-resultset-example.json") + InputStream validStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") validDataStructure = (Map) new JsonSlurper().parse(validStream) validStream.close() diff --git a/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy b/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy index 10cc845c82..cf7b81d943 100644 --- a/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy @@ -35,7 +35,7 @@ class MaxQuantOutputSpec extends Specification { and: String validMaxQuantOutput = this.class.getClassLoader() - .getResourceAsStream("examples/resultset/maxquant/valid-resultset-example.json") + .getResourceAsStream("examples/resultset/maxquant/valid-resultset-example_latest.json") .text and: @@ -101,4 +101,52 @@ class MaxQuantOutputSpec extends Specification { then: thrown(ValidationException) } + + def "Validating the outdated schema v2 shall raise a validation exception"() { + given: + def stream = MaxQuantOutput.getSchemaAsStream() + + and: + String missingMaxQuantOutput = this.class.getClassLoader() + .getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") + .text + + and: + SchemaLoader schemaLoader = SchemaLoader.builder() + .schemaClient(SchemaClient.classPathAwareClient()) + .schemaJson(new JSONObject(new JSONTokener(stream))) + .resolutionScope("classpath://schemas/") + .build() + Schema schema = schemaLoader.load().build() + + when: + schema.validate(new JSONObject(missingMaxQuantOutput)) + + then: + thrown(ValidationException) + } + + def "An invalid project code in the sample ids file shall raise a validation exception"() { + given: + def stream = MaxQuantOutput.getSchemaAsStream() + + and: + String missingMaxQuantOutput = this.class.getClassLoader() + .getResourceAsStream("examples/resultset/maxquant/invalid-project-resultset-example.json") + .text + + and: + SchemaLoader schemaLoader = SchemaLoader.builder() + .schemaClient(SchemaClient.classPathAwareClient()) + .schemaJson(new JSONObject(new JSONTokener(stream))) + .resolutionScope("classpath://schemas/") + .build() + Schema schema = schemaLoader.load().build() + + when: + schema.validate(new JSONObject(missingMaxQuantOutput)) + + then: + thrown(ValidationException) + } } diff --git a/src/test/resources/examples/resultset/maxquant/invalid-project-resultset-example.json b/src/test/resources/examples/resultset/maxquant/invalid-project-resultset-example.json new file mode 100644 index 0000000000..db9de06722 --- /dev/null +++ b/src/test/resources/examples/resultset/maxquant/invalid-project-resultset-example.json @@ -0,0 +1,37 @@ +{ + "allPeptides": { + "name": "allPeptides.txt", + "fileType": "txt", + "path": "./txt/allPeptides.txt" + }, + "evidence": { + "name": "evidence.txt", + "fileType": "txt", + "path": "./txt/evidence.txt" + }, + "parameters": { + "name": "parameters.txt", + "fileType": "txt", + "path": "./txt/parameters.txt" + }, + "peptides": { + "name": "peptides.txt", + "fileType": "txt", + "path": "./txt/peptides.txt" + }, + "proteinGroups": { + "name": "proteinGroups.txt", + "fileType": "txt", + "path": "./txt/proteinGroups.txt" + }, + "runParameters": { + "name": "mqpar.xml", + "fileType": "xml", + "path": "./mqpar.xml" + }, + "sampleIds": { + "name": "0010_sample_ids.txt", + "fileType": "txt", + "path": "./0010_sample_ids.txt" + } +} diff --git a/src/test/resources/examples/resultset/maxquant/valid-resultset-example.json b/src/test/resources/examples/resultset/maxquant/old_valid-resultset-example.json similarity index 100% rename from src/test/resources/examples/resultset/maxquant/valid-resultset-example.json rename to src/test/resources/examples/resultset/maxquant/old_valid-resultset-example.json diff --git a/src/test/resources/examples/resultset/maxquant/valid-resultset-example_latest.json b/src/test/resources/examples/resultset/maxquant/valid-resultset-example_latest.json new file mode 100644 index 0000000000..035e9c74f1 --- /dev/null +++ b/src/test/resources/examples/resultset/maxquant/valid-resultset-example_latest.json @@ -0,0 +1,37 @@ +{ + "allPeptides": { + "name": "allPeptides.txt", + "fileType": "txt", + "path": "./txt/allPeptides.txt" + }, + "evidence": { + "name": "evidence.txt", + "fileType": "txt", + "path": "./txt/evidence.txt" + }, + "parameters": { + "name": "parameters.txt", + "fileType": "txt", + "path": "./txt/parameters.txt" + }, + "peptides": { + "name": "peptides.txt", + "fileType": "txt", + "path": "./txt/peptides.txt" + }, + "proteinGroups": { + "name": "proteinGroups.txt", + "fileType": "txt", + "path": "./txt/proteinGroups.txt" + }, + "runParameters": { + "name": "mqpar.xml", + "fileType": "xml", + "path": "./mqpar.xml" + }, + "sampleIds": { + "name": "Q0010_sample_ids.txt", + "fileType": "txt", + "path": "./Q0010_sample_ids.txt" + } +} From 587e656786b2d809c538075ab85250ef2fddc139 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Wed, 11 May 2022 17:41:18 +0200 Subject: [PATCH 23/62] tests --- .../datasets/MaxQuantRunResult.groovy | 36 ++----------------- .../schemas/maxquant-result-set.schema.json | 2 -- .../MaxQuantRunResultSpec.groovy | 10 ++---- 3 files changed, 6 insertions(+), 42 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy index a64a9f924e..a888ce5df6 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy @@ -29,21 +29,17 @@ final class MaxQuantRunResult { private final static Set maxQuantFileTypes = [ FQDN_FILES + ".AllPeptides", FQDN_FILES + ".Evidence", - FQDN_FILES + ".ExperimentalDesignTemplate", FQDN_FILES + ".Parameters", FQDN_FILES + ".Peptides", FQDN_FILES + ".ProteinGroups", FQDN_FILES + ".RunParameters", GENERAL_FILES + ".SampleIds", - FQDN_FILES + ".Summary" ] private final AllPeptides allPeptides private final Evidence evidence - private final ExperimentalDesignTemplate experimentalDesignTemplate - private final Parameters parameters private final Peptides peptides @@ -54,23 +50,19 @@ final class MaxQuantRunResult { private final SampleIds sampleIds - private final Summary summary - - MaxQuantRunResult(AllPeptides allPeptides, Evidence evidence, ExperimentalDesignTemplate experimentalDesignTemplate, Parameters parameters, Peptides peptides, ProteinGroups proteinGroups, RunParameters runParameters, SampleIds sampleIds, Summary summary) { + MaxQuantRunResult(AllPeptides allPeptides, Evidence evidence, Parameters parameters, Peptides peptides, ProteinGroups proteinGroups, RunParameters runParameters, SampleIds sampleIds) { this.allPeptides = Objects.requireNonNull(allPeptides, "allPeptides must not be null.") this.evidence = Objects.requireNonNull(evidence, "evidence must not be null.") - this.experimentalDesignTemplate = Objects.requireNonNull(experimentalDesignTemplate, "experimentalDesignTemplate must not be null.") this.parameters = Objects.requireNonNull(parameters, "parameters must not be null.") this.peptides = Objects.requireNonNull(peptides, "peptides must not be null.") this.proteinGroups = Objects.requireNonNull(proteinGroups, "proteinGroups must not be null.") this.runParameters = Objects.requireNonNull(runParameters, "runParameters must not be null.") this.sampleIds = Objects.requireNonNull(sampleIds, "sampleIds must not be null.") - this.summary = Objects.requireNonNull(summary, "summary must not be null.") } /** * Static factory method that creates a new maxQuantRunResult instance from the bioinformatic pipeline output. - * See this @{link example} + * See this @{link example} * for a JSON representation of a valid map structure * * @param Map maxQuantRunOutput @@ -82,27 +74,23 @@ final class MaxQuantRunResult { //Check if the required folders are in the root directory Objects.requireNonNull(maxQuantRunOutput.get("allPeptides"), "The provided directory must contain a allPeptides.txt file.") Objects.requireNonNull(maxQuantRunOutput.get("evidence"), "The provided directory must contain a evidence.txt file.") - Objects.requireNonNull(maxQuantRunOutput.get("experimentalDesignTemplate"), "The provided directory must contain a experimentalDesignTemplate.txt file.") Objects.requireNonNull(maxQuantRunOutput.get("parameters"), "The provided directory must contain a parameters.txt file.") Objects.requireNonNull(maxQuantRunOutput.get("peptides"), "The provided directory must contain a peptides.txt file.") Objects.requireNonNull(maxQuantRunOutput.get("proteinGroups"), "The provided directory must contain a proteinGroups.txt file.") Objects.requireNonNull(maxQuantRunOutput.get("runParameters"), "The provided director must contain a runParameters.xml file.") Objects.requireNonNull(maxQuantRunOutput.get("sampleIds"), "The provided directory must contain a sampleIds.txt file.") - Objects.requireNonNull(maxQuantRunOutput.get("summary"), "The provided directory must contain a summary.pdf file.") //Get Files from Root Directory AllPeptides allPeptides = parseFile(maxQuantRunOutput.get("allPeptides") as Map) as AllPeptides Evidence evidence = parseFile(maxQuantRunOutput.get("evidence") as Map) as Evidence - ExperimentalDesignTemplate experimentalDesignTemplate = parseFile(maxQuantRunOutput.get("experimentalDesignTemplate") as Map) as ExperimentalDesignTemplate Parameters parameters = parseFile(maxQuantRunOutput.get("parameters") as Map) as Parameters Peptides peptides = parseFile(maxQuantRunOutput.get("peptides") as Map) as Peptides ProteinGroups proteinGroups = parseFile(maxQuantRunOutput.get("proteinGroups") as Map) as ProteinGroups RunParameters runParameters = parseFile(maxQuantRunOutput.get("runParameters") as Map) as RunParameters SampleIds sampleIds = parseFile(maxQuantRunOutput.get("sampleIds") as Map) as SampleIds - Summary summary = parseFile(maxQuantRunOutput.get("summary") as Map) as Summary //Create new MaxQuantRunResult object with parsed information - return new MaxQuantRunResult(allPeptides, evidence, experimentalDesignTemplate, parameters, peptides, proteinGroups, runParameters, sampleIds, summary) + return new MaxQuantRunResult(allPeptides, evidence, parameters, peptides, proteinGroups, runParameters, sampleIds) } /** @@ -123,15 +111,6 @@ final class MaxQuantRunResult { return evidence } - /** - * Provides access to the information stored in the ExperimentalDesignTemplate file - * @return an ExperimentalDesignTemplate file generated by MaxQuant - * @since 2.10.0 - */ - ExperimentalDesignTemplate getExperimentalDesignTemplate() { - return experimentalDesignTemplate - } - /** * Provides access to the information stored in the Parameters file * @return a Parameters file generated by MaxQuant @@ -177,15 +156,6 @@ final class MaxQuantRunResult { return sampleIds } - /** - * Provides access to the information stored in the Summary file - * @return a Summary file generated by MaxQuant - * @since 2.10.0 - */ - Summary getSummary() { - return summary - } - /* * Helper method that creates a DataFile instance from a map */ diff --git a/src/main/resources/schemas/maxquant-result-set.schema.json b/src/main/resources/schemas/maxquant-result-set.schema.json index e09071e2b4..97e9c0ff45 100644 --- a/src/main/resources/schemas/maxquant-result-set.schema.json +++ b/src/main/resources/schemas/maxquant-result-set.schema.json @@ -143,13 +143,11 @@ "properties": { "allPeptides": {"$ref": "#/definitions/allPeptides"}, "evidence": {"$ref": "#/definitions/evidence"}, - "experimentalDesignTemplate": {"$ref": "#/definitions/experimentalDesignTemplate"}, "parameters": {"$ref": "#/definitions/parameters"}, "peptides": {"$ref": "#/definitions/peptides"}, "proteinGroups": {"$ref": "#/definitions/proteinGroups"}, "runParameters": {"$ref": "#/definitions/runParameters"}, "sampleIds": {"$ref": "#/definitions/sampleIds"}, - "summary": {"$ref": "#/definitions/summary"} }, "required": [ "allPeptides", diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy index 826c16040b..623cbaf8d9 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy @@ -31,11 +31,11 @@ class MaxQuantRunResultSpec extends Specification { Map invalidDataStructure def setupSpec() { - InputStream validStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") + InputStream validStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/valid-resultset-example_latest.json") validDataStructure = (Map) new JsonSlurper().parse(validStream) validStream.close() - InputStream invalidStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/invalid-resultset-example.json") + InputStream invalidStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") invalidDataStructure = (Map) new JsonSlurper().parse(invalidStream) invalidStream.close() } @@ -48,24 +48,20 @@ class MaxQuantRunResultSpec extends Specification { final MaxQuantRunResult maxQuantRunResult = MaxQuantRunResult.createFrom(validExample) AllPeptides allPeptides = maxQuantRunResult.allPeptides Evidence evidence = maxQuantRunResult.evidence - ExperimentalDesignTemplate experimentalDesignTemplate = maxQuantRunResult.experimentalDesignTemplate Parameters parameters = maxQuantRunResult.parameters Peptides peptides = maxQuantRunResult.peptides ProteinGroups proteinGroups = maxQuantRunResult.proteinGroups RunParameters runParameters = maxQuantRunResult.runParameters SampleIds sampleIds = maxQuantRunResult.sampleIds - Summary summary = maxQuantRunResult.summary then: allPeptides.name == "allPeptides.txt" evidence.name == "evidence.txt" - experimentalDesignTemplate.name == "experimentalDesignTemplate.txt" parameters.name == "parameters.txt" peptides.name == "peptides.txt" proteinGroups.name == "proteinGroups.txt" runParameters.name == "mqpar.xml" - sampleIds.name == "sample_ids.txt" - summary.name == "summary_1234.pdf" + sampleIds.name == "Q0010_sample_ids.txt" } def "Invalid fileTree will return a NullPointerException"() { From 2b484f2b39c36b051c392517fa0a9fe0c8672911 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Wed, 11 May 2022 18:10:13 +0200 Subject: [PATCH 24/62] fix for other tests --- .../life/qbic/datamodel/datasets/MaxQuantRunResult.groovy | 2 +- .../datasets/datastructure/MaxQuantRunResultSpec.groovy | 2 +- .../life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy index a888ce5df6..6f7e56c8e5 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy @@ -61,7 +61,7 @@ final class MaxQuantRunResult { } /** - * Static factory method that creates a new maxQuantRunResult instance from the bioinformatic pipeline output. + * Static factory method that creates a new maxQuantRunResult instance from the MaxQuant output. * See this @{link example} * for a JSON representation of a valid map structure * diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy index 623cbaf8d9..8fae0883a3 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/MaxQuantRunResultSpec.groovy @@ -35,7 +35,7 @@ class MaxQuantRunResultSpec extends Specification { validDataStructure = (Map) new JsonSlurper().parse(validStream) validStream.close() - InputStream invalidStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") + InputStream invalidStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/maxquant/no-sampleid-resultset-example.json") invalidDataStructure = (Map) new JsonSlurper().parse(invalidStream) invalidStream.close() } diff --git a/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy b/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy index cf7b81d943..642f1249ff 100644 --- a/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/maxquant/MaxQuantOutputSpec.groovy @@ -1,5 +1,6 @@ package life.qbic.datamodel.maxquant +import groovy.json.JsonSlurper import org.everit.json.schema.Schema import org.everit.json.schema.ValidationException import org.everit.json.schema.loader.SchemaClient @@ -107,7 +108,7 @@ class MaxQuantOutputSpec extends Specification { def stream = MaxQuantOutput.getSchemaAsStream() and: - String missingMaxQuantOutput = this.class.getClassLoader() + String wrongMaxQuantOutput = this.class.getClassLoader() .getResourceAsStream("examples/resultset/maxquant/old_valid-resultset-example.json") .text @@ -120,7 +121,7 @@ class MaxQuantOutputSpec extends Specification { Schema schema = schemaLoader.load().build() when: - schema.validate(new JSONObject(missingMaxQuantOutput)) + schema.validate(new JSONObject(wrongMaxQuantOutput)) then: thrown(ValidationException) From a692a000136938ea3fe6d5660004e405c7de0da9 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 12 May 2022 10:42:26 +0200 Subject: [PATCH 25/62] Update data structure png --- doc/figures/MaxQuant_Data_Structure.png | Bin 108415 -> 83435 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/figures/MaxQuant_Data_Structure.png b/doc/figures/MaxQuant_Data_Structure.png index 61b1a33813bd6f5b97a3f6502ec96dc1c43cb4af..bf793296ac043b82a3d07a204f046f11d1e190b5 100644 GIT binary patch literal 83435 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

+Ye+134IS{$&{O~?p!PH7 z|20Ut;756px*P^r>UqE!aQNfZG+zL&+yGGg3nRfqdv*c=D?#(8S@;%a53YpS>p6c1 zega_c-PMrCHWo1e>#_h(%M<^5tn0cD&j{wN~uh|-#=NR zvUPT9;o&>yNp-gY>$(H$vaNn@oxcJ=@fXtoU$%~y4sN$S1T+mu`r=aN&6E~;#Xm|m z4GeSb?x|=n4DcJ;_)_51NX0m*FQjR)S_uzlA)PYaHl za_Y#|EeL*553$eRKb3r(IT~ScT1Ji_Xb1ej zwZfB47BL@Zi7+x|#)8Dpv_%&dEvs3XIwb9Ji#gU@uoAdAE;H(!TuRJs(hO2;UdU9_&c^pLyjh$y<_ zeDdYC6xT(G!){G&y8Lj9;^gYiIikjWP0<(ggI8s&;qQq3+W&#LH|WTv&(AKHN?U39 zCv7p>&av8jb+B1Be|1xyt2DwTJokEwy8Hgb9lTG6dV!vOTfO1Tk~Ix=dyxuyrJTK3 z>HQRMF~y$atbmv}ZX`4%4riRzC0$Youv`ZYa4etJ-avqKI8rwt!mQjUo-YT{9!Xo2Esdu|| zJ2(G2UC6bXc+`(o;c-wL{pP-DPY24rYdhW^E%7M!!NWZINkKwmpX0{e^Y>o?sZ>bM zgYh6!71K9+{^47h!);bn5)h9fX7i6)FPXu{HJNFal&#MmWO&n53ORtBFmJes2WfO4unV;B4CT_}3h(B#2Gh zX^*XV$-K)ym()|B>>0R`GV=al(}#Y;i`Cil^PShH51n8hdU!&RmbcjYq_W<=`|(M~ z(&?cr!v3Dkld4yEF`i!O*6SPu2Kg>?A zbXcb-I8NRR7v0=Y+f&LYBPl@Yar#U2nW~KPiX8&reyZkun#iB=JKN#{^ABTpvk&iFWwXwNd9HrfNevoO;c<1kq>%0L; zYwH_bcCJ4UJMMf^&z74lAKvdw)i=otKZ_;Ut&`I`qtD+#$G2&x^ggS(_BNS|yMIA+ z<`77L%kDPPN|RpnTPk4B>+d`)I|^wvuWMas@fhC%tZvqwbzJp117s&(o^6YBi!2f6 z)ouLRtND7H_QlcPt~Bt=Cc2$>#NxyGM{i}pcOnkeZ#wup==85G*)fRls_D6C}rX{HQKT&73r=%KfhM22phLi+tm!ZwL1t$;?&m@4wiPUWn@;6;f7&<&Fkf1fBt-2@Tg=-$*1pcNJh{f z`a>x@LfUa1a{WZYjPkzyrN`Hws{8ipJE9@y?63`E-yQvZV#Q70(Yjd~(+l-Y_dtVC z@oKGqanzVjWi8v(e`?nOT`GiZXZ`4RLV5nYOH;G1KOP>LA9Q(F-7v`KcWLb0G4AS* zWS>263KBo&p6NH3SY>$@mF2Bip6$mSE>0IQJQzjhrAr)Y3!gZxmV}&u z>GJ2m-4Mw2X}`B_4Yn)PFHHVnJJzM`N?FyXqKoNa#HZn>vzH(>;hiovmbw)pV_d!O z8hG^clgA*fhLw*40mJJpU>vtE7-VWccSgPp*7AvQr-+;>lgirlPKyIgeV)cpk)lRTO^&z{@IK1$Q?5gQJzCipkajhib zV6Nl1xY^mhj^;0}Tc0>Aj!o-SQ@=VEi$XqiIkY@@TOHsWlH^kMxy1(eV<- zAE%V^p)1n%V#d9cwYE8Y?P+5w>_k6VnEW8~I^YRjU8<@6ChZ7aQnPY=(%i}HAvJjq zu_?u8F?!;x6G2?W+~KD@ub+3G)&F*2-r7!5)pqYmIXPBY#RFEiVA^}r8#3zZ@;`z~ zkJGuYzeiK1G}hf8j>vBFSG13B2~)nB1-;S`JsvpoUIUdr31c69T}>e~vYwNRhhP1vSB)mExRHgJ z|7%JK=c&fL)oGX|P5zXYLpqn#vDbVjCFsWPSw9nr@;mD*jx{%(?rswn<^#h~!2fuv z>n(rl&E$s;Ia@|fO-Pp*4lu$umh&%AN%gz!=GW!b9E&20^V(>=CZwXd*SGK0%53c0gCn7!R2(B+2v znm56UoC!1eBij#D|G@k$Sy{#Tfy?5W?YN{}O0HLM=Gcy-G**}X&SzZ-5mPVWDe zbMwL2+*&q<4~M?^}9*=IzKu1R{mGTc>cTT|aR9;|z5ox$tH-e}h5w+~e7w z`F6W}X-Sc9XD;YnoV4yw)ux7zxsRHwr!KiK{OdNL8~1=Q{5RcD zXP_%~dyex0rjoIyUA~iPSF&O6On7qB?tXnX!+)d?vJwTcH1;wm-=s`rm)2?8d8JbHJ|qz%&T>FZ>N3Wx>E-Csr5I8 z_4ea5p!}ZEzt{QwrVFcn+Ep!iwV}#Snr~hB{OaU^z31?}XQjE1)Sp`2S;sjeRv46_ z%fCKsHFY1qmtg$<3S+6~m5!KyhZNThZXrQ9lLF^@SJIDU){!SuH$CnsTY#JP8r&e@uw%C zeAt!0^0Oe!&f40VUMfKT?3rx|?LfYcT6Y|-{#K_v9k;{*Gz@GW7gq^4-8-1O@%;FU zrlC>KE+%jM;#h%S08u@=fbY@uLlb__O{y5`zcM2J*|-$|rU*C_s)plOvi-&Yu zIt8fPQzKm$c`WW~MZ5f(WP+n#UftQbX=3NGvLEy^vgXTl^mN=$gZ=x8gIhN!cl0>5 z4-8MwzPo}idmA-t%he+Xw0&Qe9uOUf&e|@!cV@KcZ3kIBZu+CyTR`EqKv}@alK4(t zr+i)^ja0v3j{Ed_{x3HFZFcHi;k9YX%P%_Ww*gCQ_pD~ch_BC*bDFu!ME?|QPMfEQ zLyEJ6)s~FWi)7o3?WvbmEjXmT6H46Y`Iy@cGMu(m?g`C@oF(5QQhM7i_Jd#!78`IG1E6-^G ztEYp&Yx&N{C)v)Ybsy5K*C&s@GD~&cmb~)yAHw{F8&+yIEOcqBUi;}QCqWnYG^Fy9qAfEsz;tJcUHibsJB#YRYmd1_{vO-= z+#zR3_O$A(JTeUK*4Tdji$fe!`pDdM=Xm!|!vMVftYY57-xXm^E+vaACpjXdSMF+R zyGSc!5@p`c!i6^;B*!ciUsjiVm)bLr=<%ms7xlfmh8RHL28e-{mLyOG?;jjc_{$#J zeXJfFdqsVJ&n0)^HJ%d00%LMu6JRTbeoTI%>%Ml!X0#;*Jnn?UB${J+s$03e#nScV zSvc8vqd?g4OsgjCf3I--_Gi`$k71=x4IqNKE#qJGcy-OdL0MdrN)>Z-TcNS7slMl55lLLC(}f|lB_Uok%@b=0CoAZ^5lKUm{hY4wpQP*GAyC$#eY+k<{ z_TY&9X8)0&{c7yy-J8DX!o}G42u0N;v*_rdr4`fnEa-IwMu5F^k?K4C_07dl+YS&B zWxe&DdJDq%G7Z-JM|^$L#y1vESpRSe8Td}@q*lAXfy6><$quV3_fqynOvL`6G{KwE zF;5Rth&!)`A2~4TR?ev8ErX$lJV`hub?yB8D;38gTbf$i15rC6*>e~3n?lw_3}qgB z>0yJr{^R(JpEe-%Rf&mDSPcYxdnM}TiE6uht}r?zP>R~acr9= z`p%f_GUmi>uE8nWI@SAvS3%%A#x0}~MK7+tk#=qVcDpoHt$Ny*`#$3Ns4Z>XX-l$8 zS;5r(>vI$ZbI%!nm&8`Y+;IfKvKKY?aQEFuw;aBLo+4)CZSfhL=v8y&ZgkSG@=(W- zHIfh#EnQDur(9AUoB6(en`<^?U+wQvAhUlN_Z9`WC+S7HoyTDL#H7vHjq!ExTuZ zbcBnqTvTuhbIwKg@=mjBj`G zV*L<>+&_$`?cJQlRun5l_degd@{?XEu~~a^N6yCI?N46p7k_3~%Tcma7nhl}0>gN| z(tAY4)V=@Yew&tr{Zos!NF|h5cL1{F;`9=Ie-aWXo)#b9Cy!OIx;IYYpwakx2&N(?>e`!iXI%#y_~^6MVM_9 zcs3zq|83uU$5)}87A1zf*+*dQ54twhA|h`7_9Vyc$C~G%T*A&cRh<-F(v|S5cx8}v z&u9%!aJR_b-M;%azaMSG+Hv`LvtGs+4dR8U?T2#3_P#a;%Xag2`feXCta*EYIdJ~m z^p%XAUws`%UX+B?dwU%H^d-45bD?|Syrs1|m&wUL*}kWDB{>079mY>ti&8xZXS>f? z1iHdlAKV~YCi8pU5o2M(Ys}H-HV%GRqg=Idb>(Q5sH(rB?mPey58otwd;&5oJ#CvO zczsbtM}HhF|C^gw9E8Tq}E!}d2CQ(haVHtu4zyWR5O z^4n%GRu$zf^~g@eJn)YFuT4>zNp_#ISNwcC@a|E|3ZL%lZAGTzKoEd&2bA;#Ca; zr-mOd$;~{oz>B&LG>xNCwRhZ}x@nJHUf_}Y>pYhhN8j5%_s{Yt^OAa> z)WRT$_V~1tlOuU2NA5T}|N76bz4uD={K^B1rwmP>J`cb{&U@a(qrTX-bN%-Ya~!=U zZP|PF%9_VfeT4OLxt-^!wr?jkH6#;P-kE%~p>FfUS($-`p5CHej|7`j8tOo;@O#&hg^$<-5HP-%{+Js6$np-?8G0>j`~n)~v1*TZ)f2 zPc!`}d0K-Xe7<|7f$uh>{LSo#rOWId$H_ircmW#*QMR9(@+se{>fX-JSXE10;X)Ah zL7E^95y1|{yP5BO6aC{Jhx+PW0+e&fyNlO!iATFBSI+u{ycvjf%pCr3$FEF76x?x1-zhaP_jpH{$-Xkr_@NZ1@%T(R<&#<<|%O0!z6O5(aDbwcF|(xRp%W z-hBMzGcEn~+57U&g1e16xLd-`ybXTC^VlDERJw2P@xn@H>&Lpb;YvTPZ`o^4nz;RI z#J8s9>v<*8GyD;mZ;NX+Ve^%QLAI?9PT5?TfJ$3%F zu(yplE$5*w78?p`hF;OxkUjTnP-V+sULPnX?(*<@RUdia?8qCBch4a5Wj>L6ULOsr zjlzQ7FRoY120Kv{x4_KC9d` zdEUdbqdOfLk7`$YG0x}G6#I9g7ohw4Ol#1Y8`npM zdD;LkRlm-DVu*eD$pen}oJ=vxe|&kb`8fz8-(2Q zzrG3gw5^ySo01!1{hSseI*=514EjDKJEix!e85_CvM+7&ycZoEYo{aS(KoZ_9CrYr z@y0ciEyd@Q$M)!bkazlK$A79nrDuAnSvUC~=@Wls?#^yez53BoJD9aO<-+KfpN~b# zXV5?-*s@~Abz{@-m1p#4Tfv!+8N%F7ck#_^Vs5}k)OxPc zkA^8R<<&eqQeE|^|Ie5A6Z3;iYhJvFzPfqhh@JDe`1C2h^g{Z<%yA4ms$=Pe4Hmk@ zr>9)GQP)hG>2B)%w8k&X%Cu-rL&}AH@lSrS8}iCB&HFFCb+DRt|7^t%(~k^3E$zuW z_nQ8mrWv3ky!6>lx9W~}^U^_Kb=k7RR@Os=?=J_gC82fi#&tCptp(K=e5)M1c}cCh zovk?BFF1F5NrEmhkvT#7E*MnJ9DYqWwfQfYcCg0ZsC%){xg|Gs;w;i2TXSl?xS;Du z^XSWO0mwOXI{wj-v0VYm(%U;xZ*J!YSaJP^7fsa;fLKK|hZ%F@*ZXsc-#tJAE(P?5 z7Na`f`qFJD;vHCz23+CGJ`(2F-#qf!ZT<=KP}k(+kK!`6wg)u_9GLNFXsrcSH|+Uy zv;^n6p=%4#4tsIii_e{R8unwxo6Q;Y$nH1SmKALL!W^2-I3M(5>;Ow8%nweoURGn? ztUb1^qxIzws8o2^ZQWyQIu_FF=gZy!NI5@S|Mm@320Xa z-2RWoK?^`A7XxCYTwp2w6?hcaUNC(Y1hWk{G9B0Asn;)B-8$Kp91yW|MG@1Q{5C1{ zn2QZ4%EcJBehE41gK6G!`U1bTUOR2Uz_d-T0rf)e=!x0rId+i!h0g>&s-gBoH)75D zhm{O=(%L-tsDOb_WoDY7_yY*GY;*rCEqxY0@%r9=j#!dHMnO08=x=E=?bmS2~6o|lmV2N z)><0K2b(vyYQCfipa!pR)^jJ_Ne!N*ntL#7(gA+@pA|pLf~t1&w}Ft$O}97m3-|Vn z4kV$yZ|v7ES6n9_FPfS=xnXZuQwVrL)`WPr|=(CK1d^Yf`S@zduC9${4lk{$;0NXa>-~ueQ~W(|K-!P z&EOpfw|8xEEZ;mrlOJo|j%R8E@PRY(K+xZG@_~3lqp?B&jOX+1h z{P0Bk_Qgr!w*|VYnIvMlc(V2V!?bO?ls&Th#|vm<<_4tM>TGKV>|z1C z>qq@NyQgKRe&DWc=|Lr0%AEz?O<@2(v+`Gh0z3BIdr|aZRhlk&Wl?v z-P|%F%a@?^;X|Dj96#_b0su|xH?407>9s1LpJ5I_;df6zbe+xmV$gNNLUs=QdOtD9 zs2+Rq?M*3k&GuKq!ezookad15LH?i>#IRF-SFndFe4w=eVLM{66=OpRUEN@zaw>3 z^_l4Z3ReGD2Y*IZDyZDYtg1_FTyokDJ`-9l4ZND>JmS-&KVLS_9JwI*NAcO0w{rsS zMb`jC*z+;>?(tABpMS5bTk3TOG+O?4%2quhz`zM`T?Xom&o%j6?5m)p$aCb zuAnpaXtH;tl#YjT?68#7vu9CLd3tqPV zq|M5{TYqcno$&}xNtu3V{O0r84-57^kc{N#9;l939{dS0hq4Ydp#;AIZw{Ru*VpMe z?u~7um(8c2Z3Tp}ZPkXczkmM*)q`!_$qu03p6J#J`I}f7V?AYeYOgHU+ppzD$k=V; z_sZtaAXz{3jP`T9TlpRId^Y3-q5!H2%{bt9Gi8hInkL}a+){f%_W#=$V`9;T5$=+b zR{3JK1r5jitzCruzf!x{6K*G3{^y_0nzb#3?dMGn;1xA2cw-RqaL(wh;-`1!BD+4* zYB=eTc^;{MKzgI~s|UrtnBlzmmd80&1XYI5iZU%zUHr`{GcvpR83fE z^{+SS05T13+sm=MHJ2T9VfDZSkbaN(oksg+Xd2~{-+AoW>0CeD6i9cAOVg6TgEF*V;U@W0iFfQTIJ&bz?@;f zZvEa+$MSK!DHIFkIi7v(Ab4}g^FFN}ob>I^z?C0)vrc}0-tw-cYWSG_$tee2dNODI zsF+g5ZC`v=K4(|s{;dl^f)d1aX@qOg z%^Aq90ILVSRlkMMGnv;8Dz~ui~kpy|2#=M1&tCtBUttX7_oymB0xa*Gi=Ksas zTSisYweO?SAT7B;B&3^-bc3WcD&5`Pozl|MEdtUYEh$KMsWd1^r!<_od7ih<@BNK& z#`$voAI=9DWAC-s>^0|oU-xxiOT8x?ZL)g|;3@9=^UwQRSz+9)B1MwW9KTznU@67d z_FFMz8+0dE)__`Z9*9DbeWTv=6GDf3llH zbNnMdMq*&`zey^|dOCE7Ey7801O+q}kJBThR&!Rh+J}JRN2XJj^*@7&sldoJYYGAk zEKHJT)*p*6Mzg}&FWppY(OQ(|Me8iaK}sEWj&%dMG_WVe-rFMZeo%PpC(&E*-;o|z z3T};UiHtZ1F^5F-0fx_b<;RcT8D#1qEZWrQwDP*)gYQ_2KcNM-D6PFA_j?}593e5_ z6dhOdj@kf51FgqHe^D0#H9#w6PK3Ef;1RZf#MR}10P>b?7RavzsAfz*XG-y|BuH0{ zSvunFE_Wt}g>frzA#)Ahq!q|0CG8u1X+(bLuRpSg%vS1!RphCL0)hcn1FP?}ClxaE z1%)-LIJv4czvKn<4e>=2%uXm9~PhhaFkEJ+Fq}{ zD`s0AP%PxWyv^xIWt?_<4;X=HvTRV7aS+jpW}PgK^aM2O02MF@Qic;dvVhbW7K;g^ z@(1F;aB|%Un8RcmWkw0y=7X#jXdzV=#-`arVi=$G3YOBfPYhz6|71Y2w_w;{VRV2) zROMo{*)V%mPx6fd8?^=o3oL#O+xvX0+0HgvE%|B6qR1lAPeeiRT2qYLt zX8PVUsyShi1vKg?7#Tj09$+`&;^$@eobEc1zLEQLvw9a4c25#`APp7;3}BH3i-y*4 z?JpvN8u-9XfW>_ea@0wHd$KgD-^1=P0NH5)#`k#||BqSw%R>*of+}FOXo4MeC^9h= zMz8?1faM{;fiS->IM)|U#O~KP7~>gGlK*+f|KG0vug9xOu}tvY3-f63XSD?dTx2 z%JP5tHHc2E3~ANDathi!RFH?hCeYl|ZzN!w3Eg}W+_r-m%Xe5VfqpAJ!Y||g1aPv* zbmW2krwq?-Ai$Nkme3Zq;Mw#=GOg;-((Z@Xi-xE%O)dIFoWn<9GEC+3E*pp2F zMJkXFErms1fTK_=OSS}J^XaoJji|J-0L6R{a0VeUj0+dL%+>OY^-V0LZuSE`HVEoZSO{Y>wGaw`z6F%aq$btwh9M; zd#C%VjLnZaED+O?uG<_}V4R&NvIX%9fK`1>K@j`Jdin8)yW)y&2=n~#DN2>kII|4t z%)VeKkXwM*fH3h}72wYHu!1-Q@~HRmFD|DKQE!0BKw-XjZ8-8GegGnkz1vgSbi4-G z0~V8wB(b_)Mu&bG1%M{SM}Mo1Y}(<&tO-kLGVRFg1^@V0Vi_U4o~KAgUt{qm`lYz! zD1Cd&4v4oRXg}R{Of@l0D{OA7vyIoeX%1=BA%ht~`1%xVQLt>lH(+6w7x* zK<+*txgo98`~0P@zrexc&Tf53?SZYpnN(m`dkNiT8=f?UbcK&bn*}!v?I5&WSmB#M zm}S)$2Q+SgfVMNLjgScy5>@Ct6pxtrIqqLfr`P5Y`^%MSx%bl`kXIlC7UHCLHZVQU zz58{hmjL?05dRxMqOD&sdzxRph^H_#I(1LGK=lvTA>(UAxpKFc_*K@<2tjSW;ux}= zSd!OtGWZhm8)&SgF1B%(pQ2#xEaWu~19!&VZfVLpTM;=0ap!rPcu&{V(^_;Y3m605 z7g*a&??$>Gx669`3ly%h8E2-JO%d;*E&Uk-p5;;U|Gt?17rBuCsZLVuCGHCpM4FqJ z)tiuk_zgDD5SfZ;zboCPggOYGGx(h!N(=g(JmB={HSGSLJmc+>&E%UF8;46@1n|0$V(eJ>OrwsCIrqF|*4HCo7q7`BSRR>C}t( zdnNi4p;qj-hIlWl)+6pljMZ_4yf9##1_f<*@gA#BuLShkd}1}DW{qz#*oLz9LervV zDK(Fhyhamm<+GkW0wAj@)p(JbeI}nHqBoEoZSd=^wzkf_{B{q$nlZmR17K#7$Rq5rBKEexXxZ_95iKNFz zb)P1{{v09mvS0Lk(R3)2>?1dM7r^1$84#Sh?)4h0-vQMp3_C0g z(MrW($F1)#`n*u$1M$?eKMG#LBL7YYNPTLDqd6i^tp`#y>Z~&4BGQChsh)cjMgyX? za-IiPa+k~2`AXcgJOCV%3fhO>*$n0U#!L9~tkB;4-)Q-~UJh*kLCkMqx0xtKD4i;M zdwz%~3KU=b%nVj`7!Go_-<%34k?d>(B&fR(4Pr!flR|n6I4D$hJ|A$d?XtX?3@7Li zcGIVoHwK479y1Y+cDm#^&NXf@1EyHi@Lff3ev{htkbF$D!dPxvhSs*haPSh_uL1?I zzYem~NY)uhAN|2#kx#%Ld_tDKrQ0$2$yNfNSqnZ!+pS9Z<5P8;p9xJ4Kr_HJ;5q@q#LIo$$N+K|jus{|E(kNZDIWlCekYV&xq=JQLk0#EQqKJ0{2X;snV z1-l+)I3r91<_J;a$@AU+(17V-haRjSO5l%V3!0cwoVd^ZtpbybT#yK-S;lBAJt439 zUXc|35Ri3K|0b1~!NEu++Tj@2E!#<6ax8D=!!M)Bi?T02$Y$uhKLwI1E;kZaEl<5p zHW`s*Vp}12#V19;XA-k(>?XHv$msw{SmGw46+AABDIL>Rv|lFO0~w_di#}>UrGc9$ z0?@Ra*#Q1P;jQqDb*$WEeA_mb1eD#%K?!vh1dlQQaJ6C(8|5d$`C5uMv@hyQrnpXt0714yTp2(Sx{QY+PA2dYy~@lZ-Qc zRL-YVlNHsgU(gI`CO_qgB(dPXCIpz=byX}idrX!hurE6D<&e87A;p>%6az1di<}N< z6lCnSCW{8cYd^#mNHxJzLMa$%5+a|z5&nxg(h2A$#dOLSw@ih%rga92w%S7gQbN2-?I<~g<|V`#~~7%Ynk9|YPG zrMmq0o_%U8Q9TdHBOvW=%(g zb;?tkHXdNA>-RZ;Bdq9SD~ZfsR~-5bpt0@;8ta2e$_r)O)(dFeC@$Sjci)y+5RN|6 zTjLzR|!z+rEw=?HtgEMA>AK5`TFYWr{-z694?D4In{nnYgdiBQ+vitpj_qV9F=Aw`8=n?+S6 zAiAnsbAdyz#LW!)<@rGJ%iO*pjBvzqY>n8osF`BT^gy8>l&^Pq9rkaCQkYW%-=mw+ zH(Aa!KP`=z|Dt4&r5~pJ37j21eGI@JFHuKsJ|V$)cakRVN2{Mr1$TtFz8cDzTKi1- zM&1pHUZ)iw1aAowE}@M|(x+n7VD6?U`ahXeiGbG z^hDe)4wGe33+m6`i?Lf!_Z)S9Z|eq@ zy`oQn9P+wsiw#Suz<&xLJ=R+bD<+p6X)OG+Nr*$54jFszOOg(Wdm{_tH6>6yTDklg zM48AD5mM|tvx}guFh1QdW~+~C4Mo$_@Y;OOiD$}mqG1Y7=vv@>J-$`h=OR8;XB$f6 zR!OGh{ByLR0Z25B{%72!?^tq=wrQjn$2?ai)lBR2KrRU-gJSYs8EJwuxmRHymfVrA z&)yDNo!#us$1{wik1xppP4~)7pGK&pGlwQwXNTVn6J!g{4n9A+{V9Zi+aItega8Y+ zyrl3XW>`9`S&M&6CBImkVhECYKH)TrIrDtd;By&BboC>>RY!;Iu$izO*2`4%2yv|^ ziu|aSyg*W|1!1#D5nI>eLACd{X;IsGMJ$c=R!_G)ibrHSa$YWa79sA2}`1%i=tw^dAyHl(fmEUzyTZ*rkit?xPdAe}bsuXL;0+BZfp_q5NPyY^0Zy_*% zK=BYaF~1TWLd_G(lNBN3k^urtHUvO5Xf5gYaz?Dai{Cg{b3t3SS z?bY{k!SIC8;iEWa=$oXwgHB%%v7?MW?{lvxT-=;tCFW=I(XHY7T}}$fVF|YxZ03nm zh4$r@oJExhdS%{Fdo0>!{-2AhAOSQkwXtxtY!x?+TbdTDD06V1NUivHd)QyY-l3cx zw|tpOwGx*Jw|M>2M3ygIN(ftta0}v4&FCcPr&_PPp;n0A zmTXXKC)AW=1I&!D1x6N;O1ko9&rEY#U`=uV2))Z|xfp9rhZ=sEM~U=QC00+#*2d@DF>d)lR`y!(oO( zjgCps!kR)p<3^@;TBw};XYVDOPdpbw4O^AX+6)lqd}cifIa^;C%sPX=(ckk@}Q)TBzQ+L$=1rPuwQ+LLhFy__DL^6PCb zkiJ`S*q%_=wYNA-DeUgUY+^=Efgq((Zhkip?+g`ZP~&?;kU3jrD?sk@Ww8BHhoSBy0|&lBm5e27aJt zO`4rs<;C03xUF5j0;UaA^Z z3tP=N%UI;5pjyY4v9V2tLdo0NP1uHV^#lU&tS|4N24o{;lG=#CM*26*E9B|@PaY+~ zO|E%wjF2@pHBnMfEN6r&Bez9_)A3Tk`L(CAZNh9S6WM#<`V9$4WSs2!?64v}l*Wky zxPx3)aNMRH&qi7Y+F(#C5$M`q0M_4#j_7(f3q!n+*Gb1`@3ZCoefv6$=WVolV(@?N zq2;UnLIN)tNEN)vYccp(xd0`*9f70!_8hItu8(B>uz+k%6o>pyK9qY@B>{i!$Dywb zGXm~GIiS6F4{&)kG9VPyt|e1b02uifDa!w7FgQlpv&br`L7O~b0urr)nn0{Zlpfy4 z$#|(7pm1IQuDdS*pnm(r%20zvD%dX`pk2RxK;-dlA4HW?pJ)#R{NC}Pfpt>=8R+x= zEyKi#fW-+??q<-q8VEoA1;b@}a{n84*oC|N=94cr8kqFe7ym%&U_JR4yhx9L#dTi> zQ2zXp`SS)dN5oegpjqv{(9tS%7_1i>|6gD|wR>3aZ&e6fH@nHpSA7XWbeXzPm~%hh z>PKMQY9>w6_oKl+Zji<Ob;!?ui>FtCjDiza`KBE~c^yyzA1UN-4GDc+k-=F!zyKE?g?k#qs*O$;7VEkjDLIyxf#O3KE9!mbN3UJd zJnRm}vkj0I{{~h;0-_a2WdzWv^+3l8Ld$rOBiG}W6Y8#!S4@fO3xWeN=fGDxxV;eo zind%6qChtyX8!l8;a`kK9AUrnfMHU2cHmtDZ-vY-O`E5pCp>VW`lo1|EEJ|VYVv}N z^lNYql@c-?OjQ#IXq>zvhXG=G2+{=xxL00>+M60YAJr6PJEr;z#wuRu<1<}I7aCjc zqJ!1)R1x;{rNB}IAr8eHFzB{1CjLK?zG48W6>mMPUM0#c^``(_oAX^S(97)!hg)zk z*vB#%jz|BD94!SHOE`MS*R4{g4*)sq1>)0M7IQ;_P9QLsWh(=?D=OqNM7#_$z zHl8X>3kMAAt+Nij-2-6YPnFH$!z3@3RTdkaw~=9tLr1?$2$0Q{1R@0NE}3i-rhWOP zQ(v`ig?x4Z#YJ`FEg%d4oG;+RKKv=|_TDbZ+N|J(N}~n?LC)i*Bg2dQZ?F`2tvc5? zKo(f1#Rm<>Kk%KsH8f)J0oh%lAknDgZlhm+jz9QHz$y>J2c^~F9Z-?|3&a1{QZqK8 za6a0cYdm}G!V{UNUE~eV%2V}!&-L=Va$BeCW zMYOS>cXL+{t4eG3ch7i?73LP^xPHwo?9PQoh8i&$1&2mrMkdKY4BUy_+}+)`qsuvu zg{+6~=J%bNP}tse|Ae;|85JyWa{FxUJmPi6cvbI^^((j)>0#$$JsMLpS@WOX{0H{+ zSW}i`(aCl{!xnz{Qeo}=h=}8A87~z>DmbQ5ObB5?=p1awGf8`ResYM=htzK>!)Ei% zKYJmrG^I{VgpLTG?NuzncORt44##yw=FI(wWzXyb{TeiT{dVzp+^5PP3_0tpmI%b0 z%~zKEZ#(m+TZkY2Fq_u&Ghe)qtTKD!)Mmzf@Hd*i( zg+8t7`oPQ2ZW1TIC*W&;h2x;v1qe{{v-0VMRDcV>7c{Tbl}x9 z`-KRCeR98ZIN{EZd10=@%`xA+^7<;A-@*a13=P}ypW%LsXnHEcN|#--a1HX%Q%|OF@Dv)cAt~VN1a;-ljW|@XEF)Y3`<+;OvzFGlLaX5 zF-8mKWAwBLkvkZ(FQ`ZC|KQ)6*9ZgYfq2~_;;1`kZ<3#LfEKD}I<$GE$Nu6`NZG>h zYaBJ5uC_NSHa9wLY~LyERR#kPX-iOO#|K}d^{V1k`c)+zMK=X1oYYVxmR3_#)1d!a z?N}r`z|tvMkd5k+>HT9lmvyZ+TlrA3z|7Y1`aoDdhd05O|3frcQ%&;0?yueTA~tscjzuGi}@;-bEA7IrYCoy)Eb zZ55(D#1!I^ym-xw;FqmdMY-eBn8UKOb0>GFh$BqBVPbR$`<2I+kFkU_2#-<=pQNtyTLrKZzt|1=y%a=0no2r% z@@LojPy4f9M8rQ#I_88iIr4twLyD_Bz*;AB z3NLvD9tsAN?zbPMVCvQV6;Gx%X;Xb>IL-TGL2g;iUHb$+G#7FG3D6^7_|DalcZ}^S zcROtTE}ljk3zm=hfucFau?yrcEpzbTYu5fW3C+gW;~IPr57?;aw^R-D)SJ1?!A^Yy!0>o`L*8Y%>k@-)-qgbJw|+PBq7@1cfL1j=%drkc!tCYL_I ztIgr<#zwyu`i5b-WR99G^33$ z@1+PigRV>xb3Sqn+|TGf7ytehFwX?A=5Y(q;4U z8^ep$2Us&C0zFavNWLCEW=)jO=CDg93xjQmQ2z86)_Z+}|MT7J90n{+j!g#*@faYeN5>tJV-z;1 z0--$idYx^)Pn9#_bT4)R@2p*z5EC8+vO zsBQO{U)IID@6O*n0L2;yE-!<(Ll!NCQMHcRoFlh`wi#0uedH*e4-OEw)@`t+_&*hg z!gNetrbY7eP!3p$c4{Gn#s0*=JPFFDV6F@xC|%Rz^;RV+o6dV-?=eC=8mOFSeP-~x z%ky#HbF(F|jUVf6a);`@{!<^r;Wfd`{c19*Md9n-=EgIvvzF%#Y?oq&B6rud;}1$e zJndkZ5I1GD{oR@kCIRE@GAZuE)C4m!RIoa+_`ZB$Z1cN`q?Szp4lL$I8xriHeiSy4Skj()IE{KMU12uSc0EG^x(pE3Mgs(k$s&i{=} z^+KH;pLu(lkUv9(ep5IQPTJbSh&z%U{rzFgvt9-yspJ9zzXHYYoU+0TYfSWK*da%^@T&i;l|C#Ug5$8*`M3f&`I?u!8HRY)g z){P{WY6&Re9C8HHbsPFle*?>tA1b<}HNg8^qyW9c(m9A1FP>z^x}IG6xY;zfPf>HJ z-JUK8P6=e@RrhJd%y+y?Mq4m+ppk357+Yk};g>rJeXmeu`NZYTw{@{-60hr7+Cn zndQWCW&3Rx_$%#+gN8kXFN%Y6?zlQ%5!zd7>Au}!P%Gl*N4(fc6ju!FH9@0#FKAl& z?ELU6`M1ae>!YM=bG3AaV+iS+wutpd$t*3H+6fH444No1CA9exA>t91?51QX9$`r* zAC$Kzz$sluV3K_dz&@DHq-;Rs8PG-(fHu$ z5jpj?_)Ra1C#vdqr7Yg)-r*l5$i6BMl7(qM#FCp$h;?c`%g*@f!zxv@W9eK_GjK&n_98BPLPWwnhvDF1lWoa5~3(WoJZwRfqBD171+6R8zh>hlCnYJ{ZP z^Mk;J9ruz#|4H?PQ-lmE^bxAbJ$W7?MQy1DhF8`z#&^CqHVDu8WgI_T_e}Lg%L-@X zf5;^?ar?R2;OtELY;U35IsSEBY3Zwv z`Nm&kH^0@IC#lnzPz=OrzC!WOfmqBm<1M!Og@U9qM=y2DacPRurFWa7#QxGi2u%h) zaR^&Jf9*Ya^!xMI2?B3x6A|7?pJ6YAfUKy^p!ZVPyXELMk<7eI`hi`IAY7I{eZgi* zio_VN9U~0M4Ol#7l3=%9d;}8|bYro0rjdDQ_8J{pux#p^^V}Dj8@)l$2v08TBU)h9 z(@2c<{=<(}Kcs63?kZXLlQ=z@^c}ibmRzC9=3@RrKV@R17ZCKg%cVO%(ckdDd6#4U z&=2$DvY(okE5RdUKf$1*qbpRjowx1ecTYcf{R&9F?EGlJ9!}@#2HAj*o;*;Q2QMKe z#?$5BcIhn;e;9)C9M{HEP>jN0>x@P$0C!j+T^^a5y`+VeEH%%RqB&5OTB7;$2ZOTy zS_JlSPn?}A-n@MSq6&?C=KO>5wC9T#-idZM<5b%j5A>{N|hzvI-j>OM=1aEz=kZ+nBeogF7 z(N|e1b~ueND9l7mm@*lMN0DBAV7w~ak?Msn>~oF0j1x!}cgVkJp;$0}5V-%j3{&<2 zgRBu|IGmV;;Cc#+HoHk5j!v@+n&o6sPlaxaa;t}9jCn*(cbWv~?3dA6ik8SH@Jm;1 z&+Sh_rhiaF4X~(-5Fg4KsCt+vp!G&FYYgBIO`FKBEw*^$L7-+4IN_#yjriB{aNWRE z8CQ4_Xs}-Myr!W)D+ggBnoBLXt5`2cYdM2&M98&r!VR=`a1vY{$Oc}<`sD-%s}x%V`RVzC`?o*dEI{-h}1mW+1(v4l*NlCZUXG$<%2j#;y&@v|&? zWwuNwfbbl*XIR|Gp;Dl?8XELa-Aqx@z5q9)N6=id6lekk1u8K`ZfjX6;+Ne5N06}> z5)xuCo-dgy?91=v`D(_s)$ii5G}ew- za8WtTUE1mAbzFbYQut>_B-(g_K5WFjo;30uNGuFO&4D@qCzQ2|HTsK0>7 z;@}`g#|8F=iX1CAfjn?SW8+|uv`g9}J8U{M*UfQgBOhHtKUDNMdM;bvzkIerR{~@R z9qxSN)cNd101}3Ni5jAypcE?Q=rxdaKm1ZSc6oVebh2qrd1%&!*{Uran|x9Zr=`t92^kbGmU!+w6Q5RkF2TQ83$B z`dLe?KgK%6Xd}fnGgrJ_WgaqJS~A;+L=@>l#utF@$fxA6@s&2_$&jPhx|!BW1M}wE zX0)m)qrrKA-Sy-5)wJ->U2S?5|EwEXC20i9Aoi4~Wa>0UPLI_W2ys{FBA05lTkdPJ zD$9Neui6~{Dk~kH?=1Y@eun}!s`H^3sR1+>m1=o-mO%j&I9!OErVAhZq~x;&As=6t zi-W&&5#xqld?h0*&QndboC43E-|oif9>X-+2a=hd0%dxgeKD5WL`sPA`q}M`_hTWi zB+d=xXt*XENhJMlXPm4ymE`gi=ZsoAxsn%ipM5SKjf{*C^E%|3nFKIStA=XHX)2r= z(4$i@oB&!X#eSudT}&vxDTx@bH~wDnbGukEXV!g&t;b1Q zML_92G7kdGDX|zQn`6}C)q|;tWzmn-?zcBhN`$*NGz+ZCVHxwD=u)EUU}Hj2l#0F@-?T&YwWoKk*ieBX`B>N&{UK4~zs+D^ z=fSPJ6W`Y4r}wcK%3GGEzD(lqyxE4|dT(@c%+k$qzVgjCd1j$|gOQ{}7#C@nVGoLf z+buMB1PQkeltsiwqEmo~Bq0D8w0N)qGe_9>`BFtWyQy1lh4S=zwFD4+;>P0jI^01+ zVb*PN!o|}?Ug=+ZV=-UGawT7}(A%q!%+HcRn5#v%sPl6ysiF3uS1XxCFU4FetM+!7iz@>#6cc1AS{G>NO^#17LhTsA? zCjch%n_C}=dR@OT=OPzc9*zMtmsDJJXvVBM#;W@Ogwy+W^DUOHxAXFJZuYL@-J)&V z;arO~6VXwAWb2beX--^XelMu7?|FbBLi3Rp{ibX>1r9k5`%hCcUDbp0Lt`u(-F81; zp8#gXU9mpVsU8A?M>wybxxY{y#TGR6~655BQNDs_Xde{aQiwo z8H#o9u(M2IARa(++Z*AGk!Tp!lw_*NQAnh}L8}Zf2a-NUTjEItF#b?uf_b+ORgI9b z$mhzPRq}I&b?dNzEO(g1haw+1>6jY)_)i5!(^^%#^XPxbNTM>7r`}dfpR)hFGIEWo zpFpydLM~%qkGQ5s@D&2GL$+8?nthKMw_Y&@1#diYxU4PTRyP`sU9+((+(AGYS$xxQ z^_&(VsXEuLN1WH|H=61P*{_y;>C+6uCd+-D3#DtSQV5rPxL8&%RZ=6ZRro)tUQCE~ zz6pvKDvCDDSKd9-(a~(Q{D?LGCMX{WY4?GFsOh1HMo0|`ggPR=Zd4u>IZ2xTu;Yt(xSWS;j2kpB1p|_XEEZQguG*|uW zh6*eorX7Hct%`I7QlM6Wytc(cRemf+p-lWkVCkn0DRX(>{5c=@EtE?}7P+}b|DXoT z`Bp8IH{E+wn3GJ2le{05%(AeR0$4PwP6m(C5Q$L2MlI$0?B|_Rj`3$pl;hM=np&D1 zz-vfZ?QF1Upvpz!uZGUD19wr_s;h2quk7&$(v$i-j^Z9nJ2u#9M1UjW_ch6er$RS) z+Sn}`nMhtS_5KtWY)=X*)KGPxZp=Vm(Nk(q#t(fqUpzUzb%gHi-hCe4h>j=Tmz6|?UVlX9!x~}t zy~mM6Y^){}gt3WnaDxG?Cd+qg@>J!Ld8Ij!b}qd~MP=gHmPQhTlwJeQjB;kM5u7qJLQ-kMl&Ar!~^jZ9yFX%!KO7G#>HG=>Jyw6Qs&;~uM9Lm}ZW zz~=pR-BAK}eWSBanFAlY9Ve+$C-|v$MjF0l!<8nhgSNIsB+{fx#aTjkMBmD z(?7w7MwP}|r@98BA`MVGOJEYlDw-S5%jzc*vOwBuH9f2qe^~Q z{wqq;>mht~Z~%?oj5xB9bp5lBU(z<2?mc%vphJsYnt_W`M9EYK5 ztX?H3E5CJw#wiCR`96dX5`F%U;iFT64c}}KhVnSeK+0^cEYl#fRA8`ncj&QCX}5E=S}6i`TY00`6=!?~aBt$)pee!(}iT6#j z{P^jIu1o+ANxWhG>>2?4XUJy(o()9EAK$PlZ&m^%Qg#z&Z}j;#SF%cd;ji%s-i>k& z{S!Z%yx2dfteNL}?S=s`J?)r4-8_Cj$}Iu!-+Uknw(WCYYTzSDwH3t$_C*G(mXmq^ zptV>m!kcZ(3(|RIH6?LJX?(D9BQWC8;P4ZRHAt4r8Cb;6D+G}mvEF9+ip+gG+lXvS zDrlEp%HwSniAGP%YP<}(vrXSd1&pmH3s=0M2qp^yI2gOL5N&LofQ`CCkE3-;@tK`p z&BD(qis{XZhBQ~8g+yQfG|8WI0Lhg!2jzGuB|-|HzN0JQMVkd3A2>%18J?oS2L;3h zBDx~O+B-i^gHR{u3((MFA`(HOjI*q@)eKhA}Th(`r5i;ddOTpaOghH#@2LAY*A(I!1Ea1K>I|N0KRf#L1cUHnke zwt8s3N^Sl5?+-bjBotsyEL^jihz6IZYYq&+31yPtTYN#OZQ8K}T^L2tQ?gkprZbCNS_sN ziVmD|!abvA3*;{t<&leJKIGR`qM{jy_znD$;Bv#t@(2nY5 zzz(0&+F`*}renZRLa?`MhdqtoS6GDMEN-HNMWgzrg^gv`AUPfpPAtIwfy9|{Y{5&E zn92`gpjhgUp&81@{HBe$rXWnvx;bVb5=}b(*7p=U^YdGB|Lgev2bz;SdwjsPedOF> zADh|KWMJ0RmB#Kf^m6WWbJXufNZ>Y5!F!Yv;8+y<52(-xKF&Nu=>zd|j=s*6h2YGr z$8+NQhOHeYU|lmX<=L+SD58d7d3gIBy*B;Rdh%wBjQI=THc3Xl+}vJ=XRJu0 zv5s}<_PaiKa<;!9);pvb2Q{@)D@rm)3?!Bi1_$MVCh%BS|1gURxi=}|qzD2(8 zfVL!RBElWx#O+6UHbS=F|D$Le&om+1$0!WLhx#Mch`>7)pa&?C0T%pG4L8cCMsVf? zn3}xjg3L9!3IX}Vz%c*186?C>MG(r7OepMEZcF%bp&?ZRec=L%e&I5PzNC)FlLvN& z@3qdHQdl(`@?uG5b#52%4rjX2fa&8jj?d_H)P8ppFo87jJ1Da*_^+Kp4K|1j^gRpa zu${t9D-mw6Ov?-x(TETZY=mzr`%OB4BVloce?3*_W(i*E@esr`mt8DCpyCUF+Qy2t z9NWI-o>(La#~eMzv&^NShd~bpe2D9&wtQvA#0yeX_pomUQvj}Ze*wXL> zR(TSQtU-cX7gz*=jj=GMLNnr1{dREJ_klV3_nOiZ;n3tK6nVkW;>^OL={oOnYQ~6AG~` z;O(a1Hh{)2GuM7$K@0)!KV$oE$Im~j!2vnlt>9;G-UD|O6(AdrrXa9K*AcJ;Fh-y+ z=EY&iqvLn%+JA5X{*P(Y|I3Deut$31aoRaN*Dp7^*5QYG=24)(=9T z?LV1X@Bo4v5(p0M5K8lJ?P(Qf}(KR zN5Ku}Ec)NFK!Ma4U<#-)_y$>#0yV?{FjCfGS1lU~)Df)GWB^_X+a&_}MWbU_5zv7R z7bGnT-@3Yw3ySeKWfHirKe*%W_U25V5&=zmu|^G62jVjcFehfp1ER25NBu$qX3YrG zD^26Rz{VI*eC=4WsX6+R>&4vr7y{)edGUD6aL9n5ouiT9UYhk|P#AH89g`s>DE z*o{w_G)wNUT7hoG)lz~Yz|G*TnBvGoK??l$T{d_Hu2nHQ_8EZ_OcWwH3`YU z4h1brf#XB?yTWuT041vNnzG-w+XxA+8sp2u9q3;*IFf_a>Zl)9gK&Q}1fvfEMg&$O zJ36>x)=8Un|EY=*45CIduL;L}sb9#z$1h}>{c=dK-zvifBNOw!2t>GA81sVAW&#EV zBf@=zE#6lV5`<4--4LCJ&A@zoa@ouKtJVLia10+*nBK(@{MVE+p@y4Myf%0zdtXEN z6|8?(&?K_^u>d_9fsH%tgC@Abj?VoX_UHr!z~JbP(l3-zxUgW>>J%743Ui73BE&kF!CAEuKYR?~K?sdeKK>Yo5 zO;avIn#r9Xf7D)RHWB*{gSJT@o8sU1)CdpUTpiIi#De<88MdhG;eZFWbd6i5+z3NHuTv^_6v5a%LI!<& z6qafFE=aTtwh&$$G|Ux(Z5R2I{QYVXjRvcQqBl1=5Vpv`jlu|EP#Szp-NBH>v4fF~ zV_#=(!AAs74QM5NOAjpp)PSSdl2`H@e0^l?l*Fh8r&ur# zu!(h~;x?a)=+lql)fyl<%m;}rTS&5fuiWvx zt6-l^CwuHMXj!_1)hmRDz@XvPYr8Q?i!dPst(J*{4O7t^_U?~RR@<$W01Jf!E>J6F>PR`gBfS4x5aJd9^%M)A9j>9^k0!&{Zm>y?ueQJOW_6x<4Ak6l{FrV9 zShEE}LALGkNz5!qn|&Gu)&0eo8%l_uC>o^I+v(^=qY{Q z3F8W93;O}K3<$OUl6UU`eq$WJ0{^XmrZC12Ajcb(_!VolFL0qx|A2=UVKzJD&STu~ zn1DV=cJJ8X@Y=G#dv_|I5azQt0tbZ*$m+9SW{M-HR4lzwHDwCZ#?mAT&uzM5{q=b> zF>rd2kiue**~jDViGsGPsJ^s0Gd7y&WptV*_l)>rz9(~eQ42U(a3!OepZAGIcaRv4 z-9GVV@2HP7rG*)=ViaPOqDz*45ADdjPw?H%0Ro_C#$M=6R@<&wJ?8Z$=c&{+k8NNWoYapZt7g;IhZ@fQ9s>=)dAwVL-9bXmYWZLY-RGPBz|t zt`1X28mj|H^DPT@W~nRj++HaziRC|!P^q?f?XtCq4U&S^U12CTe2PtP*F`pJ_6FJ= zO$JcYCoC8Ztyn-<(zH8Bg@#2uf9u!naJVD;_{B`;|GC$<-$K3j^8QS0)1P=GkCx_k8UZWEe2EvM%Dj7$U;p{~J`kOJ+R*&14(#XI(5B+Rw9G(3P-Sdc`3()Jw zi;UfYJXZ{de98`;iz9J(%5F1-?q&42AY>v7wi&mN2L7An3e1;qaL!;BR>Z;GK46#UaQ>tQWJ)I^^2Z<#~izL2fXCzjn`qwMtSY;Ms_W)!*6+=k5G$7(4^YnLmju~DDhceKYB~P*j*!e>ob_m z<8SD)GlK$T)+Gm$O7a@fAX>!fi#|fG; zl3fG0lEV-xh3xf>Yi*++DrWmLfnw-5Jr+R5D}Z(~*JMg29_0HCI$7o_U03V8tbtnS+1eRfvGL9`jtz}zza?- ze=ya2>NFJ}$Z|D$%)-T``uww*{Id4l4xe+a_FHk}%uAOEq|WA8lJMsdkE+peJ|%dn zb@O;|)!XZ#t2SZ+Epu~_j%!N>$-T82-TmH-1=dfme2%0b25zbtR=qsDg@P^_GBmA3 zlbig`7lgE0evd6C7fB)0z9kC+#5#lTnFiCJNfO|=!n1%&mC;1y~o!>OTfk=3C53dr6QBcB6G=vh;D99N3jBPaD zQknMzb z&p5-(eXq6dwZ8EQC?&$ixM&%4QaV{FjgLbzG7~!zo%C;ck*+oFH@8R2tv=o7Oa%Nt zfJ*3r0EFFUS9@yfw#DKjHNs4pzW4)gCeFqruwoWP38x+l>8hl6G!bwd>d|!IKuG@7!Yc2?+MgSEhsDEcS-{{5NP1|gs z#X%%)8kPFnQXRbQp#%gcckAUj|9~h4^VbUO z4-mw&Mq{L2WULR$TPKayZ=m8m1CZb>z}IOPF-6d`f*Gym_4#zRzge$v8S`S+82r~H_upesHc2!(LYF79?=LJky4?Eo0mj(lr}NWynYI-H zk~0GpooP%;aLPPn!HNp}?Fq!#L4baj1v+1(qt^zorr8X4l8`<9hg+d{=%-Pa$7rvv z`niwy`>44}4N~s*`lJjG`1{RW&aR)qphqUrH63MUcIjbiT_U=BUWezGGDPtStZBi3 z)|lg2-hsV~4!9V2EyxkKhlYK^Ulz$VlJ)mRya{rHFL**xuI|**{d;@;R4v+D#Z25D zU!NV2&@sfHgb-sF@WTxNqeCiW(Yn3;_KyB*RwZK67)0TZu=LCa_OzG(x2GLHRv^ET z#!Se@jYN}+VI8Ys^7hYq6t*Um1L=!ueut9CLnrSMi~xq(@<>N5L4Lgrh!gWW|9Ul^ z*XLqze}D0G<9+UT)*@jGKID8lZ{S$#G`q3sDly&5&7iXOy?_}v=HMI@u^Ll7SlCtY z#q;*Y0-7k2L3ecIG^9U8VLnMH59Bf+5JZO+DnQ0Jzb?PrSqGGe_<5DDBjr$S4@Sg9 z$y9owq6w}023Qr3K=i`=$cb5z5XaEIc(Wsxo@fJ^S>C4Bn|XyC zNNn~m1G`R8uVsHd3-nW#xjU)j*-iTzTYx5|cKnQ7pA6$IerwVTo!%w^bkX(AgI2*M zu=pF0lrd6;VqTVLUp^&2#RT4Lg^_RX$ayb4_8CjxNqM zZ-Lm~Y=a4aNYV^~es?yBEO(lXGuNgC+b#E6HGe@;nj${0PVMcLR_~D#(K9kN&3YK+ zu(VrHP=i2S-HY(YIzJ0Wm%qmT+2%=Nlfd>p_OWwUKEIY80WJ3qK)4_&=z1rj$Ny;& z5^y_se%MgG!@2hBtk5=j#43(g|EFm-+eTY}vQ>JMadvu?>LUU~fj>dUyAf+nV=#1&7)z2{Ee&fD18MgPw%{$e_No zs67}1GD>pWTt+bAz$&~^omoIU{GQYW3e;ecIJ?) zSGqqxU7aGK3YLR$1c4#|VZbya5%k4mr!A|+gz&b$QA)d>)p*# z!8f1>aeLf_38LdtY6Q+^0;d9@P~`nFclsz{(49|%bzc-R(I*)b$$1*iaz5MfGAAAN z^>Irl7bb}^=Iu1SehNId5$0!L9G$PGM248%_{#Vl-Tp6U32L7KbZSri7sDbQItN4u zRE8VYS^ctCe!Sfw3^E}CT=PGaX2p~G^i!@Wn5X#ki2rnp;u!idEcY7(o~CjT^(Jwk zZI8(2%6oq-0fZy{OUugOHdtpnIfVs3z421)j*f+6*+yWgtb%cM|}a6K{g~v(e)-=e){d>Ia=zM_mV5e9?cCj$ZT^X)+RAqGbq% zEq-jga1sw|H2Ze*=cyvI=qDCwA~IgUga{Hv0JM^|9)UP4Bze`>6qSLG$;Yi>?e@pSOrz^ zcQ>0)|AOF2eL`1W9l96$;dnsZt*{NaX2m1eL|Nzo;*a7rvz?xXXYSg?qXQ~h5Yz~B zU)VMEZQFm)4iw%&^1u}p6~u!keVq+ypTFsqzq0(9(~|cvy*(q^>n92AX9th&Ygi_E za$^cBjC%#5TLzph`#ucu4$D3zV&szP=3)rsUfhTx<$Z3gakTSe`HRwv=uY_vYdBij z_>e`NB9+%{i>7fk?IX^pJRj46Gjd4hsRHs_urX`S+wfZUhc>^VHcPfXr#JQUdAaO~ zRESV0xyKgI%@7B7di6q7^yNc5WwdIvAit7mOK70Zr^4SWPg83pLAS$Yq9_KAN?6@J z_(F1{`|p5IJJF*;kFDp4DKLJfa>j+26KRuf4=~L973syay~bV?Q9~-K86bEwSn-k` zfJvtJ`O1bmq*ro5X?Fz~TFdt2I~Ul{jfq!hpBsS<^q2sW^>nyD;tXH`I~$PrF%SD> zg%~cty?#RXs#_X)02=h`!F#tyJDN>Czm}oSs?2aP{+o9D^~YN9&>n0~@xG?1b&SB!6Q0q!Q#TVmn5pte zy$T`YmI+^!KTjmt8`hB`5C2^EGfEjT%R&AhxHg#lhkX@)QX^pf>|1mFch*nLO9BlD*o(aBq&CbY zUM<`&abn?YgaL-HaZiG)Ht9y!H=K`Bf`Z5xzY_|cgPPgDajl@L>i@@^8P-+-ErRN< zD^Ld6KXiULWLYfrYLR5&TgO}!#pRd<{Td}{S@tPvic_dP-*OE)vv$`PPKG32oyyGF zdFY&b!4S$?yVjimf;biu|LiW0Bx+l%x0HzAI~6|yIzG&`EdZM6ZT*8+2;*T^7wJVB zd;nv7`Y>WppMaLK%NzPeyM~Jp?XCr@(H;|^mq-t{@GwWe>5*fw7q|gazTb5YUA}Zo zkFjZ-Rw>~ttrnezDY!iERp}_KMjMJmWA*Y8^ddz1L(@;WL27NgzBx7BQh?rt(W zzC2USi+tzLt0YyA!YGV*-bO6{3-d}VJmY_He zQ0RvhXT!yqaY1rP0;_{NT)~K#U|-WlvS2aKPVxi1g=~;}>!QCf0S9p;>>v)-rURu! z9`GY;b+_P?|LPA>J)sc?Lqa3|Wgz1*92)GA`S7}@Qyu&`LgRmnYEe{nD=l8Ne*i&H z1;s3W#_nR1yL5&Se<4RaeibY-((y8L0a+j{4Hn;-=sC=6d)Uk&9|u*Mb{AO27^$J} zd3t+wMz8rbDH;y#iDIwcV`u^cqCaA&Uw7XljpMzUmYTA(I^sh?p7LL54FIt6`fpS$ zvYIeLE;AjYfx#f1N4<~wXpWtfC#x`-POhvks6TE|k*O~#iL_NPpm|)*WYT|TdkO=J z4pm+`ZmgN)@;f1TnXjFfBm%(nSNjp`^}TW#56K;o@7+W3X5I6g@gHpOij}#nr}0JZ zephYojf!v309p@*{t57`<4?3ZY<`^E`~&pNVeQ>xz50aDcEvC2ofqDRlaG-D$ViCG zV8sCmht==btd#Z`L|JLAft9pf$*B&?R7#9#Eq8?~wDq892w;w=`ch9v4|MEuuWeK_ zRIU>l9EgY{b)G!T_&ebyG9>wzu$%YBcmI5&ezTKFq;`Ck{woN8?CF`KQYaKv>QxK7~vLId-o6j-Mn` z0P8}13~CQnGE$&MFbTet0En4rR_`BA2vt;`s7l*4{TB6$5(Itdx7^J#tdYQli47H> zAt;+w4F+HXmgvQ%b$^GY5hYVkNjN{Vz=5#2-g-HH4lZlqm|!Hs@dSmjG5hBVXg#9< z{a3Nk%2IH_abs6_5a`r(krR21@BI~W+m=!o<#60+whcK9N#XBvSns_~%&1i!Ksjvx z=lUEC6hC{qg?72^JItED7{6g!u-C3L<`^%Kivm@`W4)7QkHOYO-RzPsig;Ene$tn; zX9ebKVh zE=Fanmh^F8GCFImTyMw5@tG14zj@s}B^$bnBAp%j{OrZZ=~igiNTx6cV;I0TpLkG& zjer1FC*#L(Z~mFZir_*--$LVO%2_P8l!5Z{|0Dz;&tN1?s49q@N+(h~Vbc0W-0LK+ z8Hx$qg#ls-<=}Fe>gJA&sNU^>_~+sxB~3fk+Nf=8mBmPoW~nZ)jmnRP8&Zx)L)YFN zABJCuVSqi?p;+v53iQ4O;6MFlnUwBcwFE?}shOUBj&+jkTpwcnoUaKDfT~ zCEOfN4#m|nTABZhCNR(r;+N3|R|CyrwF21)xC^^gfgxlMG`tTjcDP&)6Da>D`U&YD zWdj}ll20hwcmG>G0fTcfEv6ib%@>*G7kDO&Ei{6AFUPZbu&1>>UO=|XWg7%iTPje3 zzP%X{(XM_^u>NM@s{m7vdZm7w3d#}CPjF&zxNZaC-SwZBtd|TNc36e7qKf*PxBR8F34S3vkbbjYY_uHBg426T!XeO0$A{OkHs!8g~2(3s5{= zJmURZ4-{ZWyWdcdUSn=m&i{+5@w4_Hszz_@>uox5)0O?wx<5NxMip$fOh^~D4+idq zM|~gT^{EJINVuNXS#%EmLpq%WI5zBtQ@kg2bi{f)4|<=Lbyf>cw`hIXdXj)9vL6f6 z6&k+EB6W;^;JqQ=yF<7{Ijy))-piEX)C{Yp-?W>IIfBlQI&WU!NbgbnYPK##Dz2nA zYG@o*0F=QOF&WrY2!a?!ufRF}&8$lneSZuCP3!PcgQ&`@L@uidAPYUXx-tb$leJ6X ztKN~^C_hRt`dHrbCe9y~GGAr`J2~lidTbyW_#Iz>5&5r{#j*YXM9&|>YgK8wAFEbpOi9{yiXMCs{H@Z`w$+HfIznF4u*rcX}afm2>y)PJ{I?ScR4Mg8&+IB8zGCpf{{uy;V0s#FFg>+#-3VMKW z02mYMnG+(^Ts#f95l;L5+yexs{8n>iXlZFLBtqIk7=6sq6a^$vKyBm+N(hdv=H+oP zCV2%=v64^ac^W~&8&p{Mq8!w_CdDPbe_DH!@zOhVbW|CPd4N&|J~*}rp%khR$D?6| zix-8Gb!!{A8T@i?nmm0EMpi(o0N$xjBJk%cfb1($J9RK@3TK{kTA7Y05rC}xCyOy1 zN>D3QF4jQ`K?kOJPr;Z-)GbAV<^+9Hnm7;n;uK-lPM^ZF*T$#Op;Z(B4NyEgC=~i~Flo%unHgwA7c|d)EW0g}9Nj9M@i}42F`&6Wm$_yGT$B8KQ>CFL8JrAI? z8IYZtB1s?hV3%Q6zLI#>M)=1&mNJ3@%9dPZ^J8UuEVoF%0aC2~<%4NoZ1Ts?4ZOpf zzc~vr?K;zZHh*)tvpU}#EH)85V^n{ge-4;gd|rRpb*nA?flhI*`A~|$6+pS~&`Z7B z{@LJ6Z`fSlwJGu2X{!K&Dbh z&qhD44mAM6Kj{_?e?FbKPPo09nR1`OTdo%gnkM^X8~YpWbu0JTsTJ-s_=_npR_`7t z^MaBXyX7pOt$tIu3C5E%gr>SLhhx#`MSXb|4{yTPFMFXq_TK7dnV|CrYU`0R@vPoR zal=nmMKwvB2AnR@UY%|*jD3?(7>1ZFG!WoFexIw^Lf4zY=^lR)mx8_Q`^xeJvBeZ4 z82wFPrR`khEjdGU0hd}PC+Pre3bH+hb}SUhowp!$%NfF+%7u#00n3og<7`s`Ftv{d z*xJOgQlsJ26rH{U;9OF0>Tej@;s84Yhe%mp96d2x8wsz??Ybdnka0vHBISvy`i|rx ztlS-uO>%dCVfQBn>|43IrAVX{O+GUWwz_p`Rr3IAi8oWO{~fGoS63tuS#E6oR&y;L zDx4%zt^yUkjQ=W4z-cy>EiVMfZ<43+U)b$W)1>@_U*w5`^lOr!G>kHPnG6y!3Q{m1!UnoL7 z^#V2amsB9;H#<3LT4{VnS#7V)p$dT>3g4wkmh@-*cv1Jl$(QPbL~?$}vACP$wgpJI zB*Geh@wt7tkeCbEWYrG?jg2*899eW3^^*mkArYArLP!@QbK_Dc$tnRVVsw2Uj!=9qbKn z^=m>Xa~{Pmp{_F~xL_Fo*7T^Cm<|JiX18~|zCHQLL63HDKO|adcW)IM$D@C@Sovz_ zfJ&65i_}JknJL^iKh3x&qy3~PAOD#umdG%uaGz~h4w?Ef{{d|5Y1%>Mg>0WG_hL+O zjv!b@h8|+vF>@r1A_B^{QCKAAe0&W{s`J)P&$$cvwwv1S5xZw%&}{!n!&>DzZQ)*W zo?K7Kp}&0_c6y()0PqYOj`+7lkp#)MMM&eZt`AcIko=ti{R0p0HZAJ#N!RuS zUW{l!mvAevdcr#M?KVd{eBCLGAqUFw-H0v~D1b2JAs1xdI=hF1vA6)Wq zW#kJM{i1lhTb#Vhj&35}mnL`j>e{Z`+YD(-^W#J8wQR*_Qgo?Bv2b1D&wotku;J?7 z)Hy6i^Sw3py1z{}5zW^j2RZgvCAvzgR}_Yn$HI^-+i5)2*NQ$D?;aOCvzG+*xR1uD zM1+FPY=xTz=uSZqs$6lRHh^~u@AY#Pw>fmtC_=-Zmj>ZS@%V&YRa6g+VvoYP?KaP! z?y47Qs44n(QjwV*a`nK}O%i=SD9cRm2tBP#pClm0#Lk;GLU9Smi81xRz^Jrbh--rZezeu$Ouch*SvK%L^GSp zMXMVB#TXnAjAtBblJ^kjy2#$1xpuaz$ruil^qosH1Mi*dGgQ-&6gYki#g(4ml}Pda zc@asv!nGOi60k{G@_1GKKiqA871U>ZEuMQw`};T9msu+MX|C%j`T9MU6Z2-hscl&L zg*T3>INp%s+d14^LPRv$ zGl4*YU=!JG^GkeKO4H}HhAzTL{wrZm&esU#s%opvkMlQsWwEzXg_Dx6-$#R^3ni&#G@4B@=4lWM(C3 zhOH5t8{XG{{HqRCYCMXK;=AZD3x^N4Ha@K7_kW{G|6isnX-F-KT@RriNJHs?z7JQ( zVVXzALbjw59U$N@i#SoG%{MAY`)&U^`I;X z62Y=xVy6ChMoxA)wlI0T?t&HzoxVbDY@KXG>UiSRT^<+}+zL>^!@UcS9G#x^7(Sn6 zDfZY?Oga)y$7TM5SUw%&Pqc)l!66?5`MmpTa->)LZ)WDe$4`)R6;Vto1o6qDcST1Z zxZk~dz%Wsgko=NVG;Y7#Osu$h(^>m=TC{TMogzup3nelt3K!h@S74;Xd(5vY%m%5h>2G*#F48<(~UVpS<+kV_B|HlidXh=4Yk8F2oFd;;g6yOrLh! zwl-b1KT_sXKiuw6FE35ly)+ZgTSl%lj*j&L7#Gb`4~4pijfJ<2Sss8iZYZcDf@&`F zA-bmN$~?Wd9bkSM$}pZiD*adEB`g4EM>&ot=4lNeAiazn*8h6`-}@|_MD^Z##53=8 z>z$CBM8~|W#tXy%QmX4|$q}760T)m-a=h!O9lj_ujh}SK4aGPdpK*fK>PV-t&0~#{ zv=NO8Y6-#K#Ej(nRh|aaKPyUN{8v1xIA)v~**@5($$To%tg<&T`1Ss}X^ljQ_W&S; z);eRXr$Fhfy+k8F>MI}p)xisegm42V=_?_hUql!Om}=?eI;o2CNJ6)wv)w_u319jD z@FWv=Qvnp-i2_e|PmGN!V44HPFeh9AuT|{Ji5$LdpoGJh;P>RQjt0El=fgkYOU5ZW(7e)F#BmQL!msa-sT~Ulpti!SO;no)aV-Vh*wK0kN zTa!IsY76^(HvcrG*m${6(nvAN!0Xi`8)$<$U8uT`*bOT6K2x4j?G+OD&_f*aT0 z;N&yARlacj3Tgyxi1Y#et>x6ulsPX*H9YBXY0a$OUH_pxO0FbQJ~wLoMB%37TS(9b z4nSf6^?n_pI%cl`E9yfkV}LAQes{qU0(YZ-hR^^xXqg~;3!)ORWRs{;BFI8nr{Z^} z%iv%sja<6-*}R!)UjocydP)arvUprd66xY#DG0~|Sl#8U_!r1;Knrs}hFhLOO$UJFZoxgSAdQxZDPJr;Z>2S((phXn4 z_4{o&_v7wqR-;D~LIK)Q4bEo*(pH+ie)lOM=*sM+IBMBSNClDP!>nSH_KWo&u0Q*B zfu0puExph)9=Bpb;sL+BeXVZ*oYYmO@m$~M_>(Kjsp4NeSAQUcRVhIwGoF|B`P0v2 zQmJ~$-c3_!Bp7SG3)ziRW&so~3O@lN*sx64;!CXsZSZ&% zqHRw$&ddjAqVS9bvhbQk1B)SM!~HL2gZy$lRj1FmW`x`R& z-K%`(-Q}SYBJ&*S@Jvkc8L=m;%K_O1!SDY!s9>_OZusIlO%)nEHVoR|ru2717|6(h z__#yn)R+A4tZK`FRU@kq^<*O<_d9x#M*fS(^&aVv+tR!+sCS#o=~Ff}dIY8rmoW)e z=9r;GmSBZEQ;OaZ1SZh{AbW_{v^iVn@V&-wd)jMcc!-d{Hv>&4b{LC@NE>gZ8)Qz? zAakNkej*)Q*23YYZ4_yemFj?sb2!^fH+>|~SNBl8g=V2t$vO^XP7TG1xvXBHieNu+ zI^p-eb*$%>kVKNUpuA*k?8pT85`yDA4u*=v-bXu<){p_Mtcu+Pyt&aK?>SMTR}!!F zYL8Hll5st3sStok*BgU@MK;8~xI*zBd~SY&61y!!ZM^LW-Sd>=jB~RxJWtw73X2!W zwN!tC?K_tY^jsh@#7GGqBI54&3VrRJ8iFdVs;)k8SPS`y7z~%ztv)VLnJ@VZkF1~h z40I-AZ2x$5V$tmKK)oec@D>kuvY+-<63`Q~*o7c{5Jd{VS{8oqNC4V6t5Ez?XOh>; z2`pG#Y%y>UrC1}{n(b>iLm_um|5mbD&t0Ay9MwmPEwU1h$3GF$M4Uea1cw|)f6+Q< z_?+#py?xZ}9iks|zBbrLoh0yr@HadK=kqHFamrbaCtqG0Mb=}mNmoP1-uJ-3#B)iq zNN%L9AJQ65CAH&?iIi^}ci<$F)yU{*$KJF*aV!6JG@4{!0-o78_y*7;tF2Un9sr=+ z36LQ+NQYB>&k(IHqER^SC7TWhIg! zW;MV}hj=%_^?h@n)&KNKy~0CI8yC`0^anvXoW_*|^}zkeh)L!%ma{FpJW zX~>-gh{LS_B#jrPY`18iS%`i%=oX3s^wz8(P?Kd!I;??en8zFhyRb;`h=;(sg*|eA zQ>?2nB;Qg2f~rY+$j^_cc&wofXfsq+m6^(ebPcRXrUj{J174^5kK|p*5N}>8ZVS#n z#?u=I;!}nuuv`(Mq94nArbktk6b8*RZC5uE?}lVO;N%zyyw`~yh)5~Vyobwws?2q- zY{5H>2(7z}u!(=YCmNTM@3^&D=08~@x7x5*2 ztA&-3uYfJ>D$sJ4=a7FOnE>c+HuFUY*V*g|v_1o*=n!A|wyy!Cw#kTCYDc^5qn1dB z&X|F}aS^M|co@z?1IC^$9@xIkBHp;pGu%=fwP40cbw#N*)z2iDGptzIVw#^F@5Gzt5$}TjfCzRvW*#Ym)f?HT2vjH$)H|Xu*trAIM>|x{&Z!|#pX2@rkr@9sta1F( zl9}i()+%UbOzL7rF9^tPMtI9lZm-mCHNVF14sR344LwAvW{nLsf(Ab*jm0JVEWro5 znr6wIxse`0Z=%33#sqj)0P_)ML);%Wv}X*9S;}SL!~p^$kA59#cn&XnO7cOV9v`Z< zDmnmU;G50fd-E$<Hj!72%e zs{3Leyyh?+fr*kpn*eINil^cUfjTn+UWHngBL_x~&%-@iJVO$kjeFV?0%p1%L#zsX z&=S=SqcJvr4*I@GT3srz_U+beO5j%*g*q&2;QRD@)1{Ar(D+`z6tG%@Nf7d`a2!G{0Z_3rbe4q95*NkCs4X>S|eH6JdvE8bv|3 zdh0bML{4%BGuoJ*E{X&d)h|cVCrI457c=^n;+c`uX^EPr;<8cn4+@(A10b3hX9=K` z!E%&|6_FMD)AO(p;{Ydg=^DtyVT!1E0pD9H#!k!3ua(U*L^>ISH zKXRMwfZ|FWkH$;7<$3QOa|I=ieD+)fYQ~J}^kgP$FCRESTBhyMVOj^+>I zfL2!nYennQ<_c(Dh9y^6qs*Q+kck3f4nzSd_~a; zeutt}7N3Gwx<6SFH44bGQnbdxG467|w{#e8&E-P1%}={)ODy^BUj`bB1F}_0qm1fB zs&Qv4NfJIe-Ou@^$ST8d;-mdD8j#MH?o(qq^!b6ix?hcb_7_%IDA%o?^+Z)134RQ-@VUEwcD5bNQ{gS{g%Bo#8AijJnpH=g3u)?BZEr75cys~*LX3sTR)e=bjUv4 z)qfn&y|Z}S#{?ABil>pzZAV>LEM z1`qJ%;VI=dimCH{s(jQCN$lsc!|4Q%Yh&{wl5BJ;mEFP)G(k6wOK4tn(V4cBikp-v zHPa$+ASZ{zcuFcTqLcb)sOJa{@ZvnBk^QVXa)^KF_RN{7)nx|VJ-LCl`UxuudT+XTA9Uz^7cF0m|lO$XDSxpaB|N2YES zwJBa}+56P;kk|Say=+3v4w!^LNfAW*C%EV9d)(k}yIhTge0lKw&zIE++le6#4F#TX zDRpUhjZ4?`P25QIaL}(H_qoN!wfJ+AhG*k`)k(yx-$4B{f$eYn+@3UI{%IM&=DU$K zgp%@j{LyL5FXYNL#imFk3*Az)QTI+d-Nxm4j7HFXX**^5H}tM4E`)1qKQ=xQ|GG1(gWxUS-v<%b zkQmPlr;kYiwcD&LecQTkvbDv(Ivl zx__8T<#S^vB~p$nCpM2?>2|*`T_S0C?9rt3J&0Q_hFcHAbTIyz@7;NVFVOGgFUzms zwPmvSTGE`<-cXunvS@DZ5-JQPr0pEKcN6CGb%NCM$3W3&5u9;;Ly zyJ#T~Cv-9)LWxj34v#CK&nmlP_l~4gKI^CE0std(#F?86TtCysCho2A+74>6mLd7= z?DXnH^%pxp)&8T0=e2&o?F_FqHx$p$MDQa=oKXE~Vln=N9X~^hddu`uEeBHrEWZ`i zvlDRJ^2s|s{8@=nwRz{OMWLJ6HiFKq!_FoOk9AGN5WJ_w(oq?41Ej>(7;gI*PgXob5jJ(>ghxKAjiQ(AE5kX)UU9(Mw~RAVPqr zmhzH_LcXBkUgTmJUZA+drprOEIS~35(_SJ>?`@&H(d5su{maVUhrE~q|8OjnLi?3nAFnq z>YrYr5+o*yhHMQUcXo=@NnWucUMZ*qS6`3|kTuoWwW~+P6gz0K8L1=ZMWpUyHpPF5 z{}=+5*^RG=JqyW;vJg`$;*63_C=FpA-3%-&y!DX|p8~D=>KVx6~_Ib{5L;;tJn}tsJ z+$xPx*)+@TV1BmZjaZtsmcHF!iB|c_!9nT$OtqC-Kz_S6q+%tCCEDQ7v|U5UozZp{ zw;1UX7{ZB{UMoyyIsS-0;lq6|pDxc7pilI%zx)^Dr5auJ&h}Sx3Q;98i3#2Ox0^qF z1@C3}Q=9`dnUhOS&vOO*r)_>Jlg>672wF}@%&j%}JULGO=qjl6F$V67Z(dW>#j-d5 zxfarC@Q6tJuQLk`Y>~VQu`*zE0q9^{)=P?|Owrzd%%F@2hD4aXP>o?|Yz_SBl&<1j zx{x!R&s}MR0M_sOMZw~);X0L~=JXpl=2Tdx51vXtq4U3qsC)gKmnjK_>j{8@MUH_8 zMH9;5d@FY4CKQ8s>a+hsUD>d+L3N zg;Hj*D~c1vmtMbk>Jx0DBISml>zc2b(XZMDvwH1=AlnJfq2i(&mwNmz5;GZP#n#Dh zWHTvoWfLDHm=K0BB66P_84wXpHcc8ubf};CnI&AVhofN_<4uq z`g5pOi6d27j6_O=;b$9nhe|R|ZKlLd{0j?k9rmdVZ#xc-X!7x&cZ{#2$ddz(koO0ThS=aE0k53v&=OBR z%PwnL$8)DymR7T|qi=Fbzmc5ZjH0_*7NBo*9Z}Hih=96;WcvpV;Dd-1Y0!wNEJ~G_ zH#>N7BEH;V5|7ubv6@JnbaR6gLN9#bBcFsC-pNc10tTrBE*Ec>ZLGp zy_FesjcoDHZogkh;ghJ4WPQlQ+uyxDvpA-9nuopF0h!d5NPzQ`>TJJXt8PdEPta$o+KAaW{i_~g?YH# zjaYYY-LK*_qrWIrJu-j?;PF7>ysJHvRzph3+_8R7!PBqpek_3mkAT48d11Q`+Ri9AG!=&!Bn|FC zvi`t+t)pN+h&pj&dB9Ju)pVeY9~_VqwVKNw(2_bbjfcqo#CZ|k=c4|i65m`_ZEKpM zB#~&A4XE)U^rRb`k;JYffieCd5-L%T%3!rG9^O*QT7ZrbWwP|vw zwfr&2z18VcH1gs51epTV_}_84FFi~<=r=k_KE1e1Zw!oQ@ckYfMLv1-LN-ad)RWKa zHSau6S+VKr%~4#5+rXh@=PT9-bZJkidV!Me-dHNyJ!E~)`-kizh+>Q!(j5fL=k!mu z?f}Kr?ep~Ooy8#a@vutss-CzPQIiDTF==h?nVm;y2vgx5lYUsH!?Di+omKSE>v0Wa zbiPBTba}M5-G9P;l8?R_UHUrm=ZnOzl+h=;O{~H-kSv*BpA@}Z&7kHCG-0`7GcSuV zWQby02jqtUwrr~Y2nb8D$?=WF$>8U4jEHv_w7O7vll z*3e-4{i5DCAyd|ATft(tpKomq$Wd@UW2IK&aYDap9k%a$RvK&QcBI!Uw9uLos9I33e6@;a~4(?T+RbG7>{Y^pH^u+K{Z z)a2q>%a@{nTS?JF;@l&J>jY^XKv_e7K=>|bBGFC{pSq)q&$PK@R^Y@dso&X zxYpZ%44R$g{oQD~m4@89rZq#b-M^2}{TSmP1^8AVsa3@nF6-Ml-eX3rZ$jm%V zVC4OD=CePDn2KyMlKsK{a{nog#@}HDQseW=RAIIs&OSi$U6w0yVf~+;3F`&Ce00K; zFnSjkGpN&osRjI%oJ=b|&CNaXd9b2tgz4K5bGW_}UyNdn4M@w>@)rff-cw}eVgjmW zbjyNQv<6mNV@%eJ(U8|QN34SQN>7xL)?~7bX9tg8V1X2X`2PML7_ziQ)2mQzjAWAU zOcVyUv~dL=+ALZ(s4QbTqe2YBlnXDxv@`vpuu_T7<`_}j>zJ-l^R2k%JsF$ zxReZkf9#ZDes}L1BZy!$jm&tt$ZeZo9=gsbqbz|$7f(#{&D#F)-uMem)2 z?mmEUQPn|e+(NhPk1M~e?6w3@#GJ39waP7?HwE*<6Y+^<=t5qOO5UTB=*_vsTGKCz zCO6-#zulbtChc%X>EZNQ;pDX2xrW=4=OzuP^m`t(bn1=!ZI~3Z6MU(XyUOh-zm-$=&u{ksRlyvwa&Jqme2+Vkz}ngO7+tM)N2(d;W7r|>Dd5-rcK zRAP@gm43hMh7e#&d#_heXgzK9k!Wdssygi}9sv;2uhf)4%Z*}yK z_iRRdVe&ea63Of2hDhRu1xm!F_|Q*w{krhLztMUZP(TQtfy^+vbeO3jeks;WDZO?Xevff*obAI@9T@R$^?8Cda-9j(RMFq z4*4QKqTu8x)oJ!72p3*=QS+MwNWJgOwsEKlHE?^ZU3Zo@FDeIcsW_eGm5J%_K^M;I zf{*)na=H6A11`Tx{J9+WsNs24D}S?@>YxHKBDT}PUmLWRX*UOck6#6UtMvJ~UjF22 zS*W&(n|J%YIh5-7_U)@e#dLLvpgff10*M3`jaE8`r3zW@9PvJ2*xrb{RzTa zNfHZANt&VY3>wAirinsY_1h!Zt+A=8^?5dlCF(;PRWCLV3HCVCpw*^OBi0;sUbCE3 zfyYX<^Ed%hU-jL0g$Y@^UKHVfLf>DmGH4S1YIb#e-&XbkhXr zG}gAEs#Gp9ZOl*Be1S1V^XI0RX36+pALLYO5-SHqEisl>E^>m}2%F;&!zKJ6ubE@t zR+0Amywvs|A}P~%McI&^@)%1l;qz5vA!R5`byw9+ zn2z6W)lNsTsp;(8Zfq|ajHkB=g=iU?Uqn5Rglrk$x67h_ z+c)kypfP!r92E^^MoAJ!G96&!mlv&V9ltYfvspj_u889KN5@ofI2BKUujXDPry0fj zlV>PN5VO#E9fsoMM`|F0IJ_ok(d@ZBJSOoL*Tmty4&gU?DFgq50?2x^OLl1^fva-G z0wJgr>G}Bw2v*A<3{pO!NO)m^EZsg;5ygwRmjMBG#!KKi1h)Uu! zNdGA~JYdwcqM^7vltG;+;BhfklE_E$p0p>D)Nh}i8rk$NTIey^&$ciW`@6S}%ZjeX zUrSPhFFg49`80O9EEm2t)!OrGNna!+8n~Lew*i+b(b}B&fTl^elwrFQwQrfA4vwTz zFsM6d)XLCrfS4K^w9g-{gC_Y+#!lwg^_$NLlJh7n)_<3wCKF;gf8_Jl!U;X)-- z;z-vw1u-tGF)}+r*I>09No!2sm|%d&%+W53*RC+;+`wX0gEGc5yl0Qu0FwLmp6Uhv)^$kzgiXR##EKQ~H0pw_C&7+?Zb3D z{|{$6U3W)_Hj-&=mSrR!<6lSME|vhWs$HU-76ogx6@dl{k537#NuRh?X~+_>V_JJd z9Pf6`fWfNC!#nfnMf z<|57y;NeRhsS%8%e)Hku_C)EkO0$tq*(P+k@*U`eLgToA8ESO2BSY$qWZC1W&ZOQLRhl!emYnlC&Zv3vU?@;NO$SOip$@HA__SyFV+m$t zIl!Gn8Y<>zCF(^0){DF>Sm>(2L=D)*XJ8RBBE((*!|y|B5^l2`5_m5mcJE=;nxhBM zM*^x+JbdS5=tEZ`R0ubhwmnk=1nNYAs031=87!Shi921c8{{MKMU=JcN7t7TEZ58s z|3REyV)#Y5T}$;`n%ISW@lEEr$*)}>L~2(So9c>S8|_s6plC01_n6pCJeRaVGq|Eb zDR4zEr@wwew2gga*523!9A}lhp2on5=~6N9i_p}mRXqY8*rLFor)wXY$4^>a7)C-S z^4<@4bp$e806u6v*k{Kr1`!3D)PvN&)G~SBTqqTiS2tK*>a|4Z+Kq^5S(<02Uhq7b6jjdQB#Su~F?xWF@Zu-gQ4+EBvj(PWvf z3?#A{*?v3Q=Y&~9M??2Pcxv1;GFr%h5EQ%S4en$NR={HASWEGqxPNe}6gQC$LncDS*{ATpw&3qyneSaXuI#@Gpb| zt{)mcCb9Qw7+oBVz=00@7ZUg{uGc4;u=gqaE5LVedQks=eRG>CI+&z1SWZj@2AxGR z-5Y!l1spXtsH>vTfcGfCd(lut*an0LyBjDx2OYROjz&vidQODrzAVp5E#Cb#5`?0! zmv*~^Tn4d}n}ZR-)k;&qzSCnV^p%h2N%B@e3NjBELK5oZ1KwqDlgyj@tgsOzi~u)j zNw0$id!ZfP&TG_q>>SX&U1j{&ZT5h>IN^I|EAWpIx0zo#{NDo~4jcH75tuQsSxBP- zSEaW4+T^bvz6S&KJyZKz{$CUDuRR?0x&Oa^)SmqJjtjm(5;lR1iujVSyT_*l?}WX! z`0Jao9>8p^`J&Guz%KQl-4Ql7*s!^&IHCOO4%EOMyk#V{1yRf+l<(x=-2H>gR2vT) zqTgVgj~8LH^}q2)e4Op>V02;2rwF!uy8Al+dO?KJ5x_pfX%R&}mz#e?hEI9xD6arJzY2nVmFefF}HQ3~$C#CZ3QNxCA z9o7ZNWRRnQ!}&uFKIz(q3XAF3Jf%SB3H!}jY>SInL}pm@gS~HF5)XOJGx;?HHiYt$ z;Qt`i%t_$I|HIr{Kvlhdd%qGAf~3Tv8>Kr$y1To(L=*%Bq`N^xQo51u4(V>`5~M+- z`##IP|7Y+0f6p1?p7*`y-aCe4Y!`0U`mJ9)&z#@+`Oe8^w0H+4+3Cu|7w%{9noRmaFB=4~l7&b59mGLfqfNNo@@GN% z{c2m^XRu6ZFUeh6VE-m7gEn`IQirk5D2*rE>;(c=C7@wbrrf3B%6Co#;6U}co)juZ z%`TJ8v0#{U*$#OA*z0Qw!~l4gc`b&nv74WBYj#kZSMSddo6~Ekzi>_b1Wsesdq(}| z=56DcMz_D0DR;1l&#;GA`1k%=nt%IN;y&ZMnwvbR6PDlpq&6G2DIE_sW8s@KMG)}3 zNjD=qxuORnpz*=X`!;53hn3E_O&J0XYmo+91ccLrU@)4QZY;XUa`S%t^}1|pi<^Mg zWjN^HU+^&vG{amS52(Cgbt0(Vx+q=7GrA)(7Jn^(x87%m2 zrB|7))B5wIkMf24)f3SEvwM+`I}TN?KpDLmG1C84(&$E*<>?ab-f$Z4L(B(5>Ln)X z;YTTu0@S^^8qD^}Tob73X7L?}^!fT37-y+XAz--q%ChWc8HE|iCkCXpsDg>iN=HEs zt2qK^=K{GK+?iKL(1n)&pNnS5cLun*OzQr0J4s7*)g6xQpSS3JQ>FI?l_HNjzZ$a5 z#LdEbk)nT@b(Xu;Qt|#}DdTUxd$x9zg&5N>bhJ>gBEX2@L~xUviu^0tH%s!YNWA%K zCnhn-__nby#moAeeev@S^9%S%CPSsiYt0selFbrB>TVx?jMKvDa((FrLc9!A%xZ{g z>)!~gy4~Mf5cEYAb23!37Ks@`Wq6btAl}YS`BSg)JN&O7%-OfMz?);VQ4xU8n~(Si zhbgj^i=J@%zvK)&VW?XhYIk&yP?9c{HGUYvP&xzQz zlD(J>t9R9Iq!|fX-rdP%vynOVWiFuUU*{W0_m6;wVGLAP?D_4Nnl#waL$GKy_^>00 z=MZm$!qp9@H!tKtdC6rIsLvd>6UeiU>lzz7u`rlu(u%*5&uM8Q-?jtQ)W}9CxPKx( zZDUxI<@XnRYi@K(Dy!x;mDyTT;0&e%z~GI1mRMb*u4Z#wU9i3>H)Hz5h$hl4r@cC9 z$wI(sYr9t4<{Xv>if4Pz;HHTU&muuA!3Dx8Iik&cgeo>AW>pqAgs2mL(QivLjgBY{ z)z>(?&Z(UNm3eAO(J!;KL2)APzSVPzZI9Pef8!_m{${=>qwCM4V)0D`xv!uaz-o7f z1=ej6wALx1kns&x&x+P1x3m4Z%xTzn*US>X)}5`sRV86P>T8Uz$`QSGG42CpNyBC$ z9M6J`&dhgx75PdWMLG!#whs)N-2yhk{3c(C{EE|WsgV@~(=vQwu=9$Xu=bPGR0||L z5F;c2n>kwHp$QgV+zpR0Q2*w(f4Z&RTgi>2z2AmIN1mSg5y<7(8`G32CzW`_IpnP{KDpXrm96NPkGXmpyHu z3y_?Ke9^6z+b81ysVgI?Qrqd@ zfo(2`a#?U@wLa17zE6GOyj7HU*(pa4q)4RD?rgyAVb%HAQ(Jop_paDuSm3uXoM zg$IZhr*B_D#om@ZVi3UEf!J?GB4t+gAF9W!QY8iSS6Lt+NbDP}Faj^2aVOkASBwA6 zxRV;LW=tIftWs@QAP?0n7pwjQ3osJ0Uz>m`qGgla<&YKNi;A4dp-Evw9IN&y6wozW(zOUHM&d|&P;;Q{g~1`3}iOL_Ap z%R3*%qwc=00#vHuoH!JK1zm-Y-_KltQ_^io5HFLB+L>cj29-*vFxX)&;(RC(&(m$^ z19_acr9T$iX%*KItoI4s04hG($7FcnGHdZGx4l6YPzrwTT{hU+iBP%3-P>L2g(00aj*n7&bI0+}`uZulJIszdO-@k^+X z$~IFsjCI=!U@|8^1x>3_MSJ8l?CQW@0#EkC>s#&H8eQxuixny1WHk>(z`ir(m?r4e zJ>sfry7Cj*YQ6xm=A~AIk(a$*{aYBEqRGy-RqUhHukLTH3<$YPZo_~_EVJ4VThFaZ zvXbj_xy>a-wn8lKcbe<(d6|MmY@kCxpn}4!QiWU>%X_nQhBeB2uah;?Ucr>#9k-Q= zM1*s-m(ggB5u&B`O!arEl;_4zO(ht&cWdv5sGonlG#l+&r>y;cj3e*UHiA zJo+DlCo1=bdz);5&8JNRFTp))A!-*B3VqavWx!(%l_5|+_%uPVj3!zt%SIAuGf{62 zQRr4v+NY=)?2Al`@3%9l2%b>c~Olo}WuUB6_ea=yugD~a%Of@6Q zR5twcdJwR?wf$9q=;=sLv~ft9Emkc)fe) z#qc=@+<-s~PG|90ss_{0+?|vv@dRSKR}L0+ksfL1^^a8*D6OuIzF4;J#h*f#_91v- zgLSqy6CNPU4uv?t&_{fLGe}%BH7n(<+9$AoMPW7+knHUz#^}>!6MO)ehG_qWRV`g$Xi>JcnZykqAIFr2a6#(r^zcIH%MSLe=+P& z;x|a;uZRtJ?xRC?D)}>hD0&RqaCvbqZrhT-cD_(#qWY#^JJK;&F7KiD!bPHdw(h)& z;7gDq_V|l?P#B9tWzenF^dOGkwEZ}gXQ82x_9ApeTebXn3x|{a&BiZRC_&_|xTI!y z8elj2;k2;e*M{e|@2rdiMVL?at0_9e2Z$pJ>V_91DbFLjIc4b}JY_D8OKvw!v?~{a zh%4KC=l~g3gHPt|DE(5QUCX3G9%hiFP-(b*${+3S@n5HJRM+CDM@ z1?U6Qz;D_07-N(k?$|<6(mN{8rYkGxoZQcZE=T>*uN;2ORM-pmp+_hC zb95rRJ@1CaQf~sP*j{g*J(hDK^@$t6E2yHVU#Bkv>|5!0MKJf94^(v2k_b6LBa1yP zi}NSb-|EEOso_*_@rp`+IGFdRJVwT%QEUBFjpV6HTgbdnYS5wtHzKE9DGrJzG}+o0 z3@918+*c3r4m`u(d;~4k3Z}872x3kIZ^$&+@n0?FR(`52LERF#U+ZG0h6@^AQr#AG z;H|Ot2C3`X(juRY1o=(1a}P2@>TVE~bZo&#iu%ZVN2Q$ipPNq=9{=Lp<>C<00O`bF zA}<8=7*{@*-O=zF41r!IqU_q#C(h1Wo0AgKLeqP^V|@jsNvvbd6uRtW>~iiduf{@i z78D`DNA#94h|m6$z~iL94K(zdViIuZ(|mJo?bDm^tcc*H%w6k`aWK$GxP)fW6k7Na zz5@?q3>d+D$eT$Tz;BaTf8z+hTslf;v!yqJ(GCD*pkvT|5J zy^FuPgnv4dW@OV=B*G+K#)vms+PA3BhxEHe7E(Jt1Nzt*dh@AX{d-L9%GvM0$2HSn z%-Q|;FmJp{jD%D39R$oJK{Bf)!=x_IoMr>r-r2c#-=kchW7?%WO<=>I?P!w#5_PoD z7bJW}c_~UbMG`?VFzSTmT{bOI!o)otk2X#L8@~dLulBCkE_VIgHuYPtw`v;s7Pl40bjgi=F)zlC^MeJI`in5l zSDKZSKJ2unM+@48hM-KWKJQwx_=X4>n@SBOuF`y@KuZ!AE+!BRoBIl~zMJU=YzqZQ z)GRyAGswG(mDD9SH@+I77GLqv%KO(%Zl@yq1XT{lm@_#tIU7emPHjI9#!FOdPg8Le z8ej>=7og&UMmF5x|_86ay2K9kSG`5LN z26e-7`^CCkeoLdhvX&iz#p36uQ+d3WLd%2Rdy^9l$~e^qLQJz=61aR($4NQPYu10% zE<3GUmY9pk5w`36|2zU0rO(!dl zTdgISOU(RDv0)OB-0QvbUw^hYNdO~F{o#}-?8j9>B3fby!9pH;P zjpUha^sj)d-noC#S>ps`I;{0$Xk2aN3gS^Axui=FL@(5N;(%G&zMu6ArNW|9JRs2n zBBqy;;s_hg0J?Qq_QB}H z^9LN{l=8C?Ql?Pd3*I;vfF#-d(`=yH@^z+bH-$t%>OVTTMhL#XO_(WxICk8`!)LG8b?P!tU+;?|sd#_ViQ>It@ z%Vm97_kn5iO;wQZHvI@F+klJ?M!_QJ0qLIWlpKLNO!yA^CU*t&W zPYLk4avL=uw%i`@foDygxWj4npy%nl$H9s8g`!K(upQw~)fg<}Ib1J8>Y5aI3asD) z)TVbwB9A#-yYyiJoF)=OAr5XHZn2jT=*@#K)(paiw^2^<&7^slU{t zqzRwb`1zedGZ82?yxEzPeSf`Qo3FP((yX_jR3!$HOXMMfP6h(?hRMDTkY$K6$7A+J zv$6xZzX+~;p<7Ws4|ib29VDI6#P&q<9BskK6VYILhtq{-n6v(*BT$onozuxBH&e+q ziaogEs}&D(jO{5dBQVfas#mn23TF**ulLnotO&g zuf!|ndTIpVh&61Vt$uGQ@7h}KS4&MHypBIQ^GfFQbp3pNSGKmKAZ7Kvm0!VaGc5rO zNKnI&O_&U126yE1Bf>NP!uDIxg-*H16PvR)^^aIom3BH5+Qv`)R;R>4&|D-ra@Yoe z;$&T!qgb85@>P>?DbtWTuY*ak9{s1mu04nW=wBDUq-FK*1%Z6kuxq~RG2PT&A^M<_ zxmb5|2`bRD9^|WhG8>9P{5_>b6Rze%-o4&>Yzc;y`w3UoDd7yXRAHz*d>oM#sUXx6 zRSoAEJVA5^TqX?_S#M%gd)A{Z}O3c5fjV}gJikZs*S{hX>K z)}0Kzt`dS86rZW)NVIo!RhiqE8O>*e^?qQK#D~qF{=yd}k6FJybKqsH$=fi;{n%j~NeUYLcbf|#w;^Cv^1JDI_b^Nl@ z#;&8wF|XXJBu&O?&SQ@Ni%PDyHV*zvsJ8%QRLVOWzEAD}HJN8XGw95luUlJ^)V>P4 zc7elJ^9j0UcVM&VBq^D(0dKtq1A1Z@z~9$EKknDRJr1|$0S18mkMYr-SSa^Ab%19w zfJ?;0XB~wA>Ra9QHiP!AJ-{&ov*uzl8~I`27x4mzI9AsimM@0Yayge53XnW-DWS#z z@^{c|sdMAKwVPLoty5)#0XWrS`b55N$lu>w_EDyirP zD0ocpwYU+>M`pWFNkRw-AG9X77HZf!8A6pJ@hBu!&2q}3vuXC$+kbv40G=B;F}_flJPwg?YIKXc@QANd7@kh`6*)&pubGL#Ro zRMLeiZ>adKKOE{+uV~^T?9wZmk&Nta%GR{_yKB1d5q}JZRkLb=kjlJ{=@oAx~8QF|iVUiCRh*2nG_+inXBfjOA z7=lFob$(ZqgJL1+gnz*g0F;$g%Hm|$6i_O!QAs5;i6*3pPrc%8Tshd+wV78<)q1&= z+;+W22qr*`#DAjX;lY21f-83UYa@n6enwF9s93RPbm=pnOQv4EL!HYZ$?#{spxf*7 zEbEEft)*tZLiM6taS$B@)cSY;Xrs&-mL?uX_Q4+tzgUr51gctz2CdG>kpETO4$9mVMsaMf zw>z{`UN}GP(D5y8e&m3mQ!g`B)kxv7?|GL3;3OMZIqZr9ZvVf9N8ai{0{4$>rt+y% zBrAN_smF(L{{6ffR|TO(B3O_X8iv#`I=v=jG(P!qLL?{wxz-*t%HaVc}Xm073P!UrK;;^Y0|lvy;$5B)aZzm?IE_ zMG8UU@j=KEoFs+(+zDp?$FJ33F;{ZG1Yk1p-NYg*Ad}r?j%JKKV)!MQoIV@^7vEG! z^KUYFhTWutGTi# zVrgmHc@)5n(*xJ}<2M%t18>3zrxFB;@|i1%NQrpfr;Q3G1ItA#bB&adDem6oU#~@4 zwh$S$OOvQAVR|)E{UqHptc%BIJTI`=EUPsQ&j#>@!^cS2CpEo1H2=d6b*6mKVztmj zoB+BZ5Vq+`wfV!F(7^?AZG#8!wSz;)&Q#H35C3yW42a@`S+t)(!$GZJZv#jIxBGLz z#j015@Ha(GT8|ePY8FjBz;3b(vMwn>U1)a121=^w@tq^o^ahMVFqE_kLD>Y<(n+YI zlI{hTQTL7*j60fbz)N`IVuPJ=ZTiA8(+QClfW#Ikp+BTD#^anxnlqj2L1M5~Y*J12 zQxG=yqYtq53Zt>l*VrXr1-A{{0BQM$7Iwb%=WFL-TD*(u0q$|-!k5(4aHN9oM?*XRkV;@mA;;=;BVg+Q48ncR zL%o*QxQP{JVQf8uH-p~211Hj1M>`uR7YIzMm4F#DZDnGJ0*p+X8XK9P7aktoLZb^h zIXU@9pRIr{D;HIS@W2lbe_y{YBz)?BV9&$=82<}oejtCw#b4%>tie#}HVI_V|A~V~G4(}Arg)eN0>g=?G6Dm9>eO$L z4-*+|g@5wTMX79Kj{$L%AYfTAX8`Qw^Z8l~geh+5fdfC0cOWr7x9&CH!3o)EMFAj$ zcR=d#7~uIaXYE*PoRKL z-se08*<_{#x!I?+tqhL^gUMj#$6*vOq9BPxrN$9F1OVJfUHKIBc}|xFxd;nnaHJDyzsBXy?}EmWJ2Yw@_2NH)km z%&;6u#n;Of#yJM$GmIZ#8BjZ(*xP5KcFvEMum1ihY9L>aeyp=zG}Nl$K?3@?FEGqi z<5)up=r(-llK_}W;0sOo`;IVXZZr@$1qy)VJGXN$2Jx=-=efwhrby=zg!gB8Sj#2l z?-T{TKEg{lLU(DfSRuiv4tSH>t?=hkg0eHQ?x)|$^bcrp8qa!K6qf5ZbSMl3G2YMe zf#d!gON|Luy)Ywg-5kJDXIO~;Ui{d=&tfyo+rf+fgjje)dfY%u zZ~-a!-?ap;wLyaq-s0e7Gx#pPi~~-Rz$BdC&qp5=CJFrX5Nu?i;CoFB9{c~nuh?z$ zLE~R6!2i_O_5J`ezeV@^vLeH_+!kqN>P%ZBfa}06WP$Vh>X^U+Q^_v?SD5sI$~@T2 zzCf2*f~4@D8@v_xV^WH+)3Vt(Et25pz8l{)BJaS z>Hm8YyCtz{eI~xhCAGUiqMQ|+?`h#S0aKZ}Dmn||&&JGuQTgBmtt1;P&9_2rrg!K5 z{NM}*JHo#gasFEC702_9iK~|fT%7LJUKQx&Y5M?Pe99hakZ$XTJ|=u^|9{6gY+HN< z-@l6jniX_zg;Wwp;w7DhJk?K}-|G<&nf^{twP0=ji@|XD8-rohOkMlR;A@|0kaDeY z<MBlUZ|KzVQ3sIwVTH$o83zPViEeK(X~ zuK>@biU-y{QF*YA{RL|OjN=*bZv2Czz=AT9Jzye)`FERe$T%SoeJCssZV+0Z{e?CM zJWZ>2y?wOQ>UBO<5rn=KXexR?Kf{ROlYhA zG&mPbvvi$jdUv;nJYB38*yU)M;ZXhD5Qj_@axho{M(#gWQx+vKIDIJqD`%jnQPAryJncBQ8%UT+ zO=hlxNdn3t9fdeyas%D1SkPkAAo;zIgyQnyZWh5W7GiokBNyo^!|-gfS3)OYT1kD0{hRz?na# z2Ruw2pnH(jat@xudVd)1DSf)Uq$T{N>sR|F(u z+op!#puM%$kG?7a1@Or;gMO|%4HgsTXK)h!5X3MLX0)f5Nkg{*40-S@z?uIINGL{V zdjCZJ>wqxvriE zNK{3I!Nj`LrVBqkZE#H|S5me97ck-Cw3h2B07Y|0v>yRe+G|pN40&Ci^jJqPJ3auE z=cek{JjJL##_g<{l~rr}I^Z3wu(~Hm#$v|UuU;6~-?cwB(DfKRbL}5PzQ%yrGyq^g z1F4o36u6cO#NTp}twAl(Ip?pmO=LVA_C5cb^&3(3 z){_hXU2KgOmwwD>O2aTkXlt2>*hhqz=^p@#(CPN5l)SzbgofOyyL0bM@Zi}^dFC6$} z2f4Ny0USl4(hz@`vV63)dJFnMz)nkDY}Ux%?zL1g#k`t+Xx9aw^Lub2ZF1mfsbf4rOvD4~D@ak3iR%la!P z+hXTa$a9N|EBhhXbx%uVQNUKkl(HAk93#?7EY)%~nxNgNVf8e`fB&1_eo zrZLoyFpHdU4N*YJ1h(+kXD7&Uw#?rGDl@E=A<_CSRK$Jm(-a(5zwZ5J;+a#kRF3vu@9;~}!zBd_ z2chptfCRH}5>NVbOzAT9ubcdqi`Mr?sD9UPr-wNhP?Ivo-vB4Vcnk7UrMhlBGn#Mh zHBubS>E1RrXmqGv%=`0*ptv*J{JI42Hz@=hpm2i5IPavsi)FS#rU~TZcS{V_Pj%r< z=es#&ti;kEJ)r~5&n-=d(qt)my|Zn%8<`u}MzaI_bSldZCmHv@^lhNrhx7p_L80?N zlCL^Fu5o(`#OBubOBah7B9-nPN)XuK#{QWRu~eW+MZRyOnZl@h$LPtVD$Ga)*!n7+ z1bWvC(Q954fG5thS~e2AXELbQAL4-@PWj?I8Iv}Y@_e-jNVa8asAJH)vn6w^%P8GSTpvmOQLN^v7k*}1@v&c{lkeM$i#C#(|Fukoc2Vag$R#%cs&1M}u05oWer zY8W$`c`6IxREh7uL>{Ne z{%z2NHftvc)px_P0tM7CGISsquJvx0t&Ga%q{0ay1pHOL|4O~5>zXNm26-s6cef|*IznFd$utAh^u}KMsj~+ z(>v+GZ9X@z9LX7m1i$1aU*sTPbVT@V?VDaaEBurZFk3e&Wj(^V`HnmPwDB(cUkj_FPftT(e)tDxBgz6iA zPy8LfxIMGQz@k>jtl{1ehaCg`1%lCvFI<>GKG_w{_&X*23C$;I!S4B|S@KP$5y(A} z;0T4Gxo0`lP>LfU03-qo9H_9+O8W0d@;_j{RAMu#7>DW^-b2_w_eb>eznoHoEy>nw z7HUb?r2t8zZYbBa46FqW_$xacx1$rt)Zr|hpwEO6EV$O#Lgq2x#XazGYMm$l8>;ZX zi?jbvIRzff{ezPK!MKVH_0|Cs9dx<}n8(EiTR{%K)Giv=-@RCs{cVDX=b4)EKR`Cb zC({6Ad9fDXfS4fxy!W(GU7+Z>x{Xb=AKc_|jUc`k8{}H@y8MIH>@X(d9Iu4-(qDB8 zROl3#=obAlU|IB={|QBs&w zH1|lu9)O3K{PH(`O?-ehQtk&$qf9xz(hY#S(p;N+1H2 zLBAP=S|(m|#N+M;BDg6Z0n(^+yF8Ma3S&;+KhPPqFDlq@L5lv_)&Dy{edwk_PN(GE z{Z>~`v=@(4DTrayH3EEJZ;hh>yFrmaRN7wDrH{Z<%>n`q{#WEpi^3}V#HxT|M1V;cT%W+X2iT|5hPETpu?UR;JN|7y@Yf)oTo_2>h_x1KlMdu zO8v3%g_b=|Bfxr1YfAI5`07D{IH8oz|0{>^semmr!%s!Ezo6_T% zea8*)f9CFmAMsYfbZJ$1=37D(IFIU$y#FF)S5l#1g|PQ29>rBiDkMaz z-JoM*G;dM!RRf)0Kd4YfKeu~cjH=i24tFF~K;7`m;Zl8pS-MPwn+<{pxBSzaHg*=X z;;Ub}r4E>H9S(wE1#u>H4L5e2CXLk3Wj@moKYxB2pnBLIJsAb8v6&jTG+=5ijD;K| zian!;j2#&e_F@PMH`l1ru^v$%u1~kGoi>zrxtgP2-}{-SH<>^GR4y$b(KPw0?%hGS zN#&cv?R(q97j2F$OWdBd7Ixy8n2m*nRt3%6th%8Ic6-X0?uVVB3~W?l7@;-J`}{Jt zs##|Sj51%&zTK5>9^JQiV7q?D(YAL;+ud=(+;s2WByu}&Ow9;d=>5UaeeU4MXwp^} z5PxVJ&s>P8bD35h>=WUxNN(uUksx3V4+bXLu-Wkfv~5T84rv}OrKbQ}Qa)Fi+{Yl{ zJ2%`sy1^({c=Fw%Wa&=(ydJ8*XD#vuy}IN@R?yWW3JM9dK6ZYZq#Mys%!yIL9(>8s zKr=Du$_$1vJ=~jVAQ`qJc&3Soq>|lyqW6Df>T_hAR%JN3P_JmD&x`GTWX0Ai+~zTX z1DC-UpT$3LGEOr)E*X6dc=NZuFUWL>y=rXg*F1}P;<{=*SrsRZitjFo_A^7c1(V1j zK-i;aWXh~p4>i~|etrukH{Pe}Fk5xv=`)a>s~%^?eoHkrNXJ{~K^spCn|Y#|*UPLI z)8%b!Ky%%WA^HTawDGIqWFCGngj@GwXDmyythTlXurzkYbwrfE%P-y!VR5_KHo`VJ zLZhD4uG$BSk7l?JYHv2+eXi=KhmR- zULdo>c0~6Gq>*f);N7z5u#$220Ck{SlV9(ojh2RR?3A|lf&yXC17VOixG$PWZi7tk z%R6a?RMKGeW#&*7)C5WF(8u6*n59PX#i%pNL3>t#zcpL%5V*7ogRH*Cb={2G+%-3m z1mm-KMZ`!+_(?QKVi=7_U6`i4cq3-FpA%gF$uvTR$CFo2o4};a@t4)!LIVkk=S=2l zXWmM!Dy>rHTgZiLgE$5p7Hi*9hW9jkr#BK4tK_erx(|AO+=qyURH)^=6?nVL-b;lL z-h6zl$TwE4kInfkmQd1lHQKc|;yx<~ou%$jlSY`vLdk^9JOR1y0yU=Ltuf1s1&P9E zGk(|S(R_*qr@TK?pG%yVUBD&8_X5nO?Au4yegmG6Wuz{l!Mn#E*sMQqE*-NKK0mi0 zJ}%;+eZ4os%EQaMx}_{J5$ZUz_q$BD2J91w$PmN^cdrF?zWw$rnk>Xs z^N5B$z%&dV^K&a8^;@`+WlcMt!;u{=)z#%hCpegs&%$^ZP~3htB$(7q<$TnA9*Dm+ z?Sgdmn80sppjAE1uXiwq)X!Im|+^t>WCZu<~T$Hwb!oB zQfP*rSh_1wCndM5yw+`2M5}ezpF}Drn6Y(mc8DGyJMi4kQBm_`M-X;RcPw27S?=_6 z9$Ha%0@a7;qh@l1&H^p8YZLqB3G;-dreyYbPYw}yg^AH) zEj&XF5fCIyIh9U1xxwOo&612D8|_%uSP%7=;+~M`U~w#`&EfrIeEu!*PMR!^+YV{; zAJ*g9V^-2@>_#mvxWk_V%0;htz_=aH@$lIlP4a8Gv&dlCOLk*&h2}tfj3bAm1<1Yx zPj8BUaT8C-c2ce%i<4bQ&#lfg;qt5hH=a7iVa6&%4k?Iwi7fsHaFp42ahW zS(mYd#adx@@5B#h94;H)52W%pIuVy^G+|pUHSs2K+6G1v^L4u~??poe zd?~UsBrR$Llkvsap4B>sOA3b{H4{=y$~fh-@qP(B1Yxl%ksPEC9z5}t786!0BTgM?6?H;_cwGHLG6`zVEitM857qIsnVqsX7-Ea~@>vMR3BW%o5sly)0U0^zt zl0^_pj)0bONxUXVwzi|rdK2LO?n0Djo&E`VrNjD}x%|OWeZ>2RkI3bds#uej{1DGy zU;lW#&a8!Bpwc|I_k9HM{LOJU=lYQ5O3nf*1xtmQ2e$|xmi$xIT!yWU=OX9P7Xb-) z_51g`m&Z@Dj3K9A^lcNva&Czzd8BVBZ95-`d+*!%Qc6aq19-R2^Y*!X{Y(2xo3-BgKAmDl#96`tpMMs|+w!EO4a1_BkQkIdUE|0M6i6qWf%7A^f*btzar(g_n zQ>(Gehi)fZKHx^7p?OOLn$-cepp6hK9X}W$-5(|{p9k#{MLbM9bFj+cN~dx`LX&E2 z4(Z#gnR+L`0v*3@L!$)_!RI+Gs}espLt??lCvjN&P8Dfpfr%4WhTY-JY;v?}F>Np* z1ynUhFBcndoOULKBZ+vG>Rub;yaBDJ73F$)puH2p$pe@hfV_VPBPBjp}g|je)Y_?tnbpg^C zOVRLyT14`5*;rqXS{^ZW`sIc<^7HuL4~mX%@q&iC4ZZj!V@KvY%(vcMxYyg(Ea}zn zuO8rphpO9Z6ZOoHdnf_T`tdez&xk1dGiGg!a3G``RW&lpc<7)F;0{ggweX?qhhiLU z_O{>79sE2Z;c>sBx@n@xSf@=h?y3lges>Fmtnp5xUxj4lr;_!qy9rbzt!Cf$x7qYI znRp3E1kohFE%~j?Rq|79$G>;qzR`ZWH!gYnBKVm|`r#8`$MnsMBF%CNV%i$BPq<47 zfM4?!QbX%}^6-stk{y(pgW@TJ&~=8YU^ZztUTBW7 zI!i|LKyLzh6^DhbJu zkW0u2$)VaUrTX|mignnInAIVZ_7Tpr+`d+w>T8|WSh)LKQq4B@*UJ90VGmw!ANXtR zr;Ih3yAP)Fs`s$bue)EkDs-TpD+BitQ^N^~KcGNu9E!n3Ub{7+UYX0{*Qq)P&NZwG zaGdY9S}JU|KoxMlzzh2hqU64WQBCdH%93@w94diwg8Dj0YuZCub28Thk;18*V^I-zSI?>|Kx2XVH^ zV##;6y5(ATz8x-`k|5RPZS0@BN21Z;Z4?M+dkbG$KdG!z@>T6m>Kl?plJW=RIthL) z)l5x4|HfEN{C$+3d(Wpul^o*0h$D(h)JhaNSun9x>{hM#NT>og2>u-fM=xGul);qW z)#m9y7RXMwxZi!@ss$n9``n10NKriFS2R>XR>%_-dz9uFI$ zWNJo|dpVk{v{?%cV4zYqKTMbj8PzBX%u;N14#>r({mMQjIT6bvI$ky(u^AB=ZCL*L zQ08zf{DeW}Nu`BcN7L*Q9ad*k7gMR9G^$>sL*Lu~tEVfEhw}Tv7zt5hgwcpez9`uV z5n~@~DMcGKWs5LG3yqnQH4KuyA`~fGsgR~jmMkG#k|mP8vG4hvp?>q3Ki>J=JMa76 zbKm#ebDn$7bJU-o8U~qYn|QQ-PSM(0wIg%JCyiKt$aAtQkyAP54$X@eY00zTSNb$D z;%>m7#m!b7jOMjCiDzr(^Oo!?RW5{Tm&XS!)@D+z93)^F+w87Pqln-639u5ALYEX{CRoa^H+nc|IDP6pl)p~ zZJ^-Rtgn3-@sZqSqN1#l5Tcp1TKS+N+xyTnjNp$b0OZB5!tz9TcVAVM}j)BUa zq4v`}{+a>%jkb=Zy;}0UCSrbGC*MP@Q{|Z;c)t&B$4W)gq?|+B)C^+Eu3kMP{It*H z;{#pO&z7=OWgF30^pK|KizOR8A4S~J1Y!JU)XZc=#US;!~VVKViWwcKx*k<3WpJtIQu}%2O@7(wzUs z_T^9PM9&%mpa%&57gC!cNM49QGo~+BbjF$Sz3`0dc8n5f-09L>{%DQ?hCD6tXq7$p zuuB3Lcpye!xsSEpCyj^w*Wt5Jc%U&Uob}pE+r=|zEyM?EZG)ZtCg8n%?z>b!diP`e zc@N$oUh)6p3R zU4I3w6(RBSm37YT>5>vJT$c0vq!uF@xFmTf34pa^1gx#Tax8giEx6B?48(mXUCC2oV*QXyZ9UKU+epg{gGw-F0JF0ALja-JB^44@Oo;@@uZ%2#+nf! z5~-&coiknZIbO_ANBSHJG2HxEt==Rh>hV(G6RfM%s}$1i zag(jL$&Ej&Q+|GL@6lMf$)1a4ND{CmgFk-l(cNqHbn&>K_%zJ$`bT&@sitwF2-h^GPkqNX4OiSUm9l~i6m!BTal$;Wf7SZG_6hMXS z0_z-ov)}2jjzS({kI6uXNcoNhtuKqx9Ip-kiH^ws5RLB|t!RoSTfkxd@X!9z_iP?SF8L$V(fo*wwkG5A9CW2aLEoS$_?a=b3S06D_}2ELBjXyun}cBs+0b{ z;rQNqPI?#`_#{=Xm+(Z*o&Doj;lDU4i#dM&NA(~1+XAY2d!osoNR0b~Levn=eQ=+X zX5a>pt`(`R8^Wxpt7n*V+H}h=?K9a5vfzK2jhiXS)!daSm@u}SYF7W#|9C06aC;PH zju*zAA?#UEA=U@Mb?P&JwE z$J)sff7=HjL0-pIJd`i5(iX)oJj`^wk zOi*efa;tfQB$cLG`BwwrYNB~SR^Cg+u9W+vzWO?0TY3$rt2xi_3c0MZ5p zFAu9CnG_}T3-40OpXwwlxpM;XJtfbtBx&iMfm2%1TRzlK#6v?@s@$0aEl;gQChXqB z+9nJYckl3)27DZjtx`?vsMDxD{MJ%G!!+)ID7A14NcR@YN0#{w0&Es833oP+eH<6A zgY&Ruu+G31&(b!b9%iBQoJP}5Wz=SCqSaO~7GnZs&d*TMr&&;J-i(B7XRCQ-x7Edc zQv>yRYRdv<1MksS?BCA5vKCL~3MDhN6HN|pRy&_I^hl5 z7|Lh;-{$b~eb@6g!tHC%7yI@N1enk9k{k!9iLji^>GS>FM`0<@FPRZmxELcuZ;>9? z99FnoXT3Vdpxkh7eS&gi4}70_>RY^YWU3ZFRM{*#$y4pBTf>&va@uA2{g$NYcml0h zP0H9~nO&O0Er3^JooO3O$*`cMqhI?^iU6C$lcL`(Iig)!x2Ry>7G9`#Ec~U`XyA)= z|DLgTq{V~VK8lO;bUwfD`7)Wov{hk3pbawf4%U!3>1+Mr9yB_VoHc@BN z@m15nwO?$}0Y?u9^p7)O2C1!UHgk+Zz`A(YHONgeMX};a=i3m4ga=yzL9(UH@`V4_ z@+~K?4CSa)=&dL^;yrFybodN#AIZR{5pW;;pLhELGLWSQjB|Z}Z-I3aq^$c4FCV+c)W>Dy7-a2Hv)$9OR^)c&AH31b$$qu8 z!gY?oD}Q}?(8pTtC)xc5M}^OV!Kx9R28;zn0CQGvOrkRR6asDst(-0;a4jV!aswa+ z9fO?@@^MU=Vzt=^4VQpQibu(@;U)k(OC!jo?~=gyygec(&S25Bbyh&nZqL?3Ov zP*EH?N;vzaB<}Tm)fpAHW~C1it5Ahv9T(|22l*O!QFsz#st$PH+Zax<8Mf^sc|5(h z8pKXu>U%eS2fu$qErrg6c&Ss6YNN0lr$`&$Fxzo#q0F8??8G7?+1-*@K9Viu#Wru$ z3!w7AElJ!m9Ncb#O=BKzzcy#~S68+1fs&8pcZJ9YIvGyD^Kg>?ugVQEhMk&8&g3)E zI4`&owd;7w^oB8#uL>>2#RL&~t_~!~2y=4Z*0^09 z(OCDu2&SOYvj!G`1d}EMXiXW4Plo9jGkxQm%)cF88B1Z0*$>ZL#@q4~=mst1apo$t zsye`f$2KuLy)dhwFvB#MZScF-h?xF|s2A<@?(e_O?u0>(suu{tshP5* zv+U4WPqYEE?5e~=0##!cc+AO=L{_^-7&;-4c^|j z|L0xn{qU^yetI9)8s?gFoxRW5`_$gQz0apN@=}j5h%gWk5FSat7FR+*Kqdt~^7qkz z5=VdiUIYY;adR=TH_~Ea6mRUoCgxVg2neq~#l+ovs|>*p9BSGO!50yc*#L#hBhY^h zVj&f$rt%ATZ14)ZjM4u&55Bl~Yar%(IvzeGHhl3X4=ATg6|fcGr1_&ND!Os+-)BFX z^Z++CP1dbz!gec$=DF7kPwpXnW|gJu4~RkNe!TLL61ma*0R0okECmGus_#8D5tFjc zSCZo5_eHGSZwkB`A5cI%`($Fb78Y(*m6vQgtq{_w0+e|SoblVNyPq07kl;l~x4>yx z8YTG}+<>iu_Y9SiDaH=^#3$UYmn!oh>g7m;(0xl}U)l<_3=V{DlaFb!eez<5;mA1E zIJW0V0Y})UdPiy`0h-vUQ86*h%cl2}o*leGpfd{Cr1$AfIE}laKfGd6NlebYOyp=} z)n)28VulF|58PH4%Jm$R(R5QBiTg!#2VW%)HwAC&@jg&$Ys*a-N(fFfN~L;Xk_a(K z>o8v{_4Hr0WN&|!!yB_V6usV~FR8$;x=p}2kg@&xLMM-s{0B#cI6F*+&0xiwERKFC zZRksA(wdgH)ilQ!_Kf$Y2A(V45mZV#!m8Mdf)yn#jb}^;X_u?)tCkL~BYubT>g*>D zsKE)zKV99dNs3DrEQ4e z!A3M|#hOOEr-yaUJKIR2jw=LdGp6(=Vh#EsVnY=7<4I}J`tY{ZwiROd+)Q5P{>}V~ zSHSoId-Jv|0#D!WPz51*0g|uEN+ZMi(0MR*w_6LQ$jqZ^@o4^4u|Be=A}F6l@XV03 z_3rok;wdHJ+9K<`juE9G5%)(ayMhN0qHm5%+yzew-iHw2IGh;JT*zF$r! zOh#M(PHp?>*q49tS@?U=eT-n=Fg=p@0IlD*aGI=pgkrJbq~bvW6vA{Up93DJ8__*_ zEb`b4wUUe>P$nJ2O!)1+YowI-gJP=bIvYacSdYZ^(pg_%(6r~5Vp<^$eb{_~j2W1@ z^ud;>5oIvw!Qy}|uht`Szof;Zea>@CrVqN`GwFOOzm6+j(lI_EUG>M1qRvoKq#S2> zi41=q(qSm2p0S3IJh^yF-*18{i)j02bh`~y_l9<@>ECx4UUpsvTw{IuCo)nRXdd_Z}C zb0GLhoQ1-krijVSy z-f}q!o=}`nI=#Uwu*mOy3sPlP5zL1c@nz&>tfk`@#OA8xIZJ}_LzTD{P4i9j!HUAg z-m2GqOeyNY>a*&^rkwrtyq0o?)q!zns+q4d6_-PQ5P%YM(o6!^xCTrHx-`s~9~50^ z$X1=2X^*=LYC2WVSe zut%Q)9oyfwE44ef<2)D4e3OYMc_N7wjQ+#XF!exwS$_E?u5uJl)FYY!8nGOr9Jw*i zG50YklPBy771SmZCN%?PYmP?`kLK0{@k>8sq7G$@{tTqH+BE8^nYD)S-(&AG4%L%C zNfu%($7^Sp%Ae0)(3s=va8GfnI7zCLbiiG=Nt)q3YY52%1ywUti&k%0X<9Ep z)ThgK7o zsb)(JbC0k#=xH@-t287#Uu^$cNnCcHJ;CB;ta(_|ZX?(Qb;7ovG*!b4UqhiYfw*LI>lR=kUCIx^O_mIk$S<)!%$0k zZvIi?BV88f6U;{#b7Yrv{XBBmlO&jJ2}?8W4ZVE2L)t`rsUNH!OqC<3@{)_bn#GxEkh_>lo=BM6+xV&qr3l6Ql`JL8ORh2+ zJ4e5T_oNTdqDZ1JqIOw0wBu{`dnt<~621&Fsc7|Ucv2EZk;HlOTre^wzZ)O|>F2!7 z4lebY=7*H<=p-u*zL-kUZ1alvm8ucR7rmBREodFT-ov=uv z^u~7w_gVF~nNpjkJpOi{4TTg^4{?Juy^_`c`li0asV9{Bd4`^1$kWHHPij`aQ6lBZ z8qi#bj;3uzXePkS&9_H!-Fn^LHx?V?_i?d!MC_&A9@!t;pB|p#T{2DnoiO`g#p3Wi6E}CtQ!Qi8L!8hFfz3hhJ;E%<`J2R-HC@R!t29 z4w}}V?4`YXT2F^}K-ra}8KYSI_b z{!9c1p#)`BMO2YG4LUgmRbheig0`qn+NB~xk4a7hp`&^er7en0W#>|g=t{gJ0+p4G5#|E(~S#5k=pWU?WgkF%&5%{y}G_UwNDvp{WElJyU{$*3Ym7QDVqO%7{O649}IBas-j!zUTY%f!W3^2?2<{H;L`%}`Je^Zy>gL(bo;%UW z@e+c^;spCaMTtM^5dBb}&PLNW;&Ng>!ENE$Bm3`t-&NaGmrEYpe!U9I=QaU*U$<|C z6-S&$e6PueY`a1GXot5ie4}9dHPl|U9+mKA=MOe6` zq4|+SOVd0-(J3V2*xyAj$jXk4ia?@dbiC-=MYPYIGtK&P{M{nLjnFNwtTRE@ zwu%%1VCJeAt4W)HKnM)L^L+%wAaev1;0Y1<5CI>+8jcJ^xCeYc20r5HNPpfUlcpp8 z`z#NyD5@+bEe(7t8`>Ki+c=nk9l>5bt^lh^^S5e_Y9Kj2L$EcAz7g2Kn8nrF7EXd7 z;K~O)S{pm+Q@C1N**NgI3R2$H-~*oF#jKPRcU2rM1u4})Zz#mT_Qn)kEH7AIPzqsC zP*4ci8=3GaiA(-N4*U|NG;?&ch64!N$tQ#thV8c5t(C z)OTgJad`fl$sa!A#tw$|=C+RJU>gcJUws3xlcOLdCA^`3|90`OA4H|DO!R_fyB)_{6|HiURMxCHL%|3BXR*WzE4YX4Dk^K$=9 z`PZBOo${T7vAr1B8fel{=)aNqhxqT8{}2kW!X^Jp6Tj7bR|@D^2t$DN-!T)y;2z+P zML-ZikQNtx>x#HNcdt?YguL~jq^T~t$>sDlVNX9zQgAd*uZ$$yEn!}N_s3V&;qO%F z@FHKCKq?rMq8WQ`&#vbNm+PjEW>F6&Mfmei5A{CZ`Ln+Ye0>#wBF|pgrN66*41Wjz;d95)lR;#7 zNm&O&>hIF`nBK^LQ!OeZzQ;^ERO0#58oXU>$9>{|`vm8ehJo#P9v#<)^H-^Fy8ptz zeS}k;zx7RT&ux4X`gbV`=@r_4@?nd#<|3hx3aw__{v|aw#l|A{fARuPLUhE^{T6)3XAbu}?EOdxud}8c!n*8H<;f9IC;_Q)6nU$~5d5Ap zrXxz7#o`%mU)UMk7Z=xSyBffO1Y5(|Fp3;8c;Ej&(Zq1>KSI8g(CaFTve#Q@k*2Ka zr=NS$(jmR_Yofp}H;yOb37xw9=apUpW%;R=!!ppLmPiXO*(ot(Tj2-J6RT@RI3g4oNE+=+rtd?j?0&u`Ig*Z~s=A*XPN73H+gR;bFWHtx$7?0$(I=7`tL>o2bW^wV?43u zGhY!V+~H;tL{;RK-WbN>u$Egp-nBh2UvyV8?b(87l~8w#_Q_^j>qUc$KNHqgzjlRo z1HRMB^irDf?0DVbSXsegJ1aq!O4Ek11zW%AFtRGR}w4c+QS7EvQ|JI)?4jm zYP>biet7CZ-g~94yt=%J`+h|q4Zapzxq%tlY?u8O1^c5uk}9Zm=@#5-H;Y1a4~r~1 ziF>cNZn?{_KLOvTv9eIRZrn+THjF$%7jrx23iV5E>}H5(4dy_$)l&axnUmLrKCH%h zu0aeYJv3Ofn&xv8!SAyBIxJ43`&c^DXofqT#?5A~!wMdz z4AWS|8o;ArgJ8y2i^Fd3Gl=2U#=eo~P zoV1}-e7Qqkcnxj$jUd1Ej>I($^Nvtbl?^Q_20?|}$xuum!Or@7h)sJU9+w`&nIqoR zjlhm>Qc{slof_uuf}y3<;{+NfBE5*;I-qS0uUk5zBHxq zVESco@T9}qAlQO6u&)$R(0cyabK2L?W5U(mY+0_?c6f_i5tPRHu*>k;qUtD(t%EiG zJ=qh!N7l@NyQX29QA|Ze8&J#efd-!;7GCe;Qo-1)o=E9kPgE+WM5%##-R;ZI)D95v zdRXcfd)2Q#W_Ah@GxPC|gh&o`d*bxtjcLlt?ZUf5;XZtH9|owyXML1!^EoS5<5h`H z=32SUM6OcS^m6s-SIACoOzuNYmIthpLesR)H$q!r`W7Ro%9xL+?u33G?6onO?wjus)RH{ zXNxzV&?_h6bT(q?7JBhLPKx83f62)>(|oPu?&2m|+3xm%fm7RfBLH^eq?2T1-uji^ z?Q?W-B1MC*@ZFZ7|2W<4U3`2ud_U{J^vmbmnpqR?BN&QdnArL}Daj)(*D6M zKU03Tvd8AO_SiJ$T8G25-ukoC;B9c>t!IL^N~x{hqwv!m+sMQLfz_Tzbv02t2+dL48$x@XOXj7$juY zqt_4Ie^iJ%QeMgWnda7n?H;|JCz{m^3`w*~fF@CGROra$-8 zS%IHG28|+3fdf0dD(*RxO%9x*k`X_%vqssgvON#Bm3TDmr7aSL%*QhQn)v#{ry687 z?eTW*zawopsTzn##+)MW*P)S+i7tQs2CpaeRV-7yF*31rMpfJRH#3B>o7L26bCohJ z@0_D^>nU%i4#r1sWdvj8Q|XW5qf6cngpy@fF{CQZ*81J5GwRmWKir+^bPjeo-1MGR z{>2g29j9AZ{iShdK~Q+?_enzV(NL1~)AZsN&H}9_C164*YNXH9hKx2DchY$U->!bY zxOIm%(!C5Jy-`6%+WA=2z8Dzm__i>rD=e`wPfj;9x%$%tJv$S4=W<{>r$x8Lq-8G2 zaTDo!D0(u>s3%eEXJ;5|BCBXyKy^-s&EjgGU zD&)4+IZu&n*X~p7iy%2t`A`UP-6=CoqQQuQS|pb~gIZQCqvcWtwS=%d z2ALI4UsYh6SGP9!BKd02g#q{J2igx+v-{D~I&ibePXsYh^+5J7TkQXH3r(+E>&|ZU zy@%*Ui-`V@%}OZ+Ob~k#dQ@P3#3QiY3)Uxy9&^(}L^`-flZAj{Pz6{p1}CfQD}ULI z`%MUPQPksm~IQp2QVi$VjS0MEk>i18fP@pR=6wpUH@W zKHU8lL+y=YW!0>C_56AFyi%(0(CtRuB*}CUqfe$~ulIr<-x5~w<5k#eo zz9^Bw_Xb~8ze@8lsMAahI4(;%N(OeivvUQINyPm&%M5bhyUUu>Y9V|}q@x`!*5*&( zby)LC>B6OvqpJZg#8OIp?oJi-$e6Wr5V?~9i$w&~G}T=|qp`4qk$z&YCESJ`>% zeYhe$vZlH|l-2?kd~jzkX4C*;kH9YNj^T||Vh@kxagg%bcPt+?ACJm9yXC*l6DT%) zcGrbt{PdjX?z+OE@SX1?KGI&}QRwm3)KI8OmE)$8`E;p%`0}J;A;$#_CL8#W@O`1- zosU9s32ctyx0c<6aJ`MZq5vgw*su2DNhh#nYc)6zIQ6?7tyOVSoNP_St@gz=#IpO{ z%>V}!GaWpKVrtX(z)x{=zab%5KiL9MYjvk)!I`vxt8O$A6A6<59T(p9V7NWj(qhFwJ%(K1F{+3U_^*Atlbuq+ckNw7+v{g{>ek2m zNX%V4+vK52#BIX_Z4pBb^Y!&DwUHOP)2|sFpkIzgGZHqqep680&vvb`bdfPZjo8C% z`}g1)89^F%?AYk*>v;x0#+5}Zxo`KB1Z%Z2$n7xm+u~L@d$1(OtU*ILm@HEO_#}7&y z3t${OGup!qh&yTEDnS99W=h{5G=B>2wCarbKD1Ob0{3rfN(z7)k%LPV&i|j2+OHHC zwSc+L$^U~I5um=GUWWc}BX9|{fdg?{WkvjN>iYmLBaRRP`oj*+m|`1nR`qKrY5%4c z7Xhe|%&g#p{O{?hPe8G8zX6Z;ucKIm0tukT5i!L5w~GMJ`wf6Hri;3NqY(eFzyUCt zj|fCb|FVNCV;VS(+iWD{|EB&Qs-&<-*`049=0#P+fcHcs8Xw>?8W-d*_Mcq;b1MJS zUtqD_=gT-=U0VE0*pD|rZ%1y4?9u*{3Yf%z`slpeczFKmMMeuC!f{JrGU8tfP=p&9 zGP-1#n17AP1}iX3*Co$P{~qN3vu^su(__=hC&#-PB;&!G^_2pUwJ;{8|1pN$j{yxZ zN%#IeEfB*1xyaPjKK?yi5!BeXq7R5F_V4j7`Rs^((f0u4TNL^Ob}iH-qyEuV6ABs6 z#;|XuN8jg>twLUnyNv{Q4IGN!)g$`P>=o%o;wZs@1XcZ|I*NT?pkb{0-GF)epZM72 zfbP153gNr_ALaYqd*Zq%M4EcqvOF!#Tj~%;6`^Tz0y>aQ7BALmB8um94^BFgTjUsPyG?zqD*i*pEmayG3GC+=j2H|2x=qC%T9n{=VW7!y{&Kj_Lcg z?qgTzrDOHmp9iD<^y6;EPu@SL*|@{G-t{lWbzD7qVHb4411dCl1nw6c;rF>Ebx;Up z|F07t-y)`=kp92oTffXZg4s1mGQgI^7>ZjG@TVqq4h3_bn-qmj-sTH0jP5RKp zv1*5Ngk@Fn0?Ur^_Ub5%v1V{fYHS?Rm!;N2ySg`1W87XJ!&Z9Mr<5<}))TY-QuStE zPVR-@4@N^CVv}|Ip=|8~go5(WB#w;$(hr0U5)qse3g>^KzT) z`^;`DBaRsgSM8BkSEJKco9rgB_||-obYlQO+s^TD-U*LAVVuc5@oK1oJGqcm_MBk6 zqE6S<&L7SxlP0t0*Y&|ZrXR2D^-6+&Lt={6Ua;&!*tT-Rz}K`h*(92Y>`UbjMs44? zSHp-~8Zd`uyoHn%e~o{XqeWZ?+5mN7&9uavbv<-oeusShwn%XZO{J5Z zl^O7{Yqrkz=BVfRIBHg%t+W?x3K;9FEls9s!0JSR$Nm)$Go zWl79fOVvHBP+{%kvhe~XrTo}I@T1B#^Y2~c-GNn%*38k$EDQfFOi@(N$BtC;+oplt zP4o?+urDnw=t6R>Wm}6cVLJ*(`RS^Q3w4=6SfA&qrV6Ljh&aK|`|yWO;#tpMSu`K)T(E9Njy7mS=Izeskga(cF{cn!}x8U&JyGx>q#l`&5}R*Rxpd(h1s_m)de64%+7A7ByLs?v;*nfJM*Uw zYvbs3o(J!#8>1ERJ0E_|_45dpMIX54>aM4BotLW$Vr5{e z?jO{KYx5kkUmqxODdhA+sG9Rah8=%(*p2zD1+NUn4-fMD6l-Bx8N|@uHZ|iAOq3-ZT1#lgE^>WqSbzJnAr$xXl8J-4owtLjI9-i%M6V>ubRT+D|dF>$08&l zbUp({6Y(KU82iSfcw%_=N1}Bt5E9YHUMr%LL$c(0CxW_$n?(Y4rk7grtB5`?>!qX~P_!QPeoJvizWG>mH? z(R^_8^QLV1$g#&$=cmT$&~)g5aoF_ACjutA?m{5Ok zpy}kS@1G|}`;&MjDvvxWCU+z(^7}+m?U&~D*;Q4q zH>iueYkibEq{cf0UDb3 zt|*CSjFg}W@#sr7eE>P=b0ZXT&(E9Cubs2Sj>7wA78sNwh<5pS+MS@+aY6FNC~Q}# z*KINIS!`f3g|I7S4+m22-6q-WJ)seW*V4%G)hW6$Dv$DCkC4z?`yg9?&gR5R9L*V` zi;-Q$*+KB?b4=V7)CxI$QIlP`#>Sa4V$oG;G+LTtiur$&}$@3C7HIf5h;< zxv;g)FPf+yq2aU`S#dHZx=`8-y@;RHTDj7rZ81s46FDiTf-KK(r@EYUpts_}e2?F8 zjRpK_zhI=!-t_qj>Z$CBBy(A^>Y+9tHL8v^(JL8rZsMBCS1yas;uf2C?;}V|Axr0s z_4u*Fcg8XGyh1>E?Ipj(B$!5Ri+zJR!RCFwgXvIrbeM3A)531l{=HAmj#-0M>S;3IeAz)kF+J| zc$tcJarh$qkoThfvPe{Nf25<$p$gJ+Y$ks3@c7GEvDwo>Dc#z*;T;;mhe_c8 znEJ=w^}7#u^W#}AZPdQ@Ho16+FH|gc|L4GEd}(c(?-^PB$ooHCFcr9;^vm9^^uGms zUtAdQlQvuicntpK4*2vjfURFyuSN2A!oi3Fg%V%nmf9uNUp3(YB9SZ<(ngYDT;@K& z6A?vqO+QF~Zx#02m>b6iLNVjDm?Uthl+;xLDl(%ytn93%I`a`vT|j{PHKZ*;tO@Op zEq_51O2$y)0w({(mCA;KG8^ql_!#AaqgY)?IkF8?VPR35(wA;yU9y7cUPaVElR_s#F#JH?=thrzPMv+Dxk6?vTN77 zSS@K(!Mb)vOQBIeZ8kLst$zOH8faT4?`S`G584=L(pgxR^1(S=q&Yp@N7aC3fdMKI->U4Z8Y%w)My63drLySF_D)T>{J5!;(&vB8y2)(U7Q} z?7BXGOfAE76bp`YBxG~r&FEGq(WxoDS)*Lvp!>5j45C`a(D?!z=OtKl&IdBLQutlO zEwN%*lBug0pG3i}s}D!(D-)s2)U23Mt>2VKtsJO@l|lAp-KEK|Z{CXC8C2S%KBU!Yv$!-I<$IUO)OrGeES` zu>v19#%w{vlf}_+x5IGfpD4W9PRB>lrj_F!!_gu!horsJofe~hP2}uXpOQ~Eubb1n zEBj6q;+#RNK|2feYfh9pSLe>c(oxhk3!iWoZjWJY;G2wf#qzi6ypFbM0%ukd^bxcn z$J?{elPA|3Oa6zRnWo$JPV*PnDh+8s(Eg)P(-ag#kVY^NFp>=WhM`&X%M13TLnj5Q z+2ES$>W6bdLLpNt)ARLsddvhvY5FBn6QdW#K%`x3W~-UxIrI9j7+L2OuH4b ztFb}SVrxeO;G71$f=?8&dzd?>LqlAhY*P(gvdl)8S&E}o+UyP1uvn+gJiO5zMnUB+ zma}8cGR9ZunNwQA>gB7^1UkQ1;#gASo(Ewu^PgWbo_p4aOPIZRfbZS!ur zd0lj_bG5(@Hl2vM?Mt;9+#$u9Fo+T?X?Ux`zNe8wYQ*nR6{0!noD z^IpxRO%|I)#WTjS_C9tnyzUBF z$dP~K9^6;)0U0%t!e6iQ@MA(KwhNvyK41gr6%ZJ1(df?tP`UP#P)o_R?} z^eW7|9XU;HYSlR^-qbtwaqh_-v#sYyw=8#jT4r+g^0{8+%Tvsaxbj*DyL~l()Dy#> zCWz^kFJ%3*Ap_(NC~^q+~GT z`$x1SkVQPmw7#YX@7;HDmv?4`x+|? zEn(f}*RiarhRDR6X2V%kc>@^7+w&f!O*w<7m&E(0ns%qFJN&I$4o$mIIrHz^=BMs! zJ-Tn2=POk%Pd4;I3sN2ub3(3YOnRcvB%urbXki6H+H~zw3K5A;#66a*!mK_E&7>>m zfSqUJ-|w5mZ4H^@7oY`#;xeh=v(MMnwXNEdJ=pz?(Jt)UD`E!2wy};*E&@W@XvhgTkXB&mM(0^>Chkgh+BZE2gqSp`Iw*(vZ9_C1zj3i^NHh^2oxh$I@hG}|R zAv;}Tv>LLxkjVyIQ>b+_q*6YVRM04G!x9@uP1#|#N>*@ag1h3G50>M6Z} z8F04DNxd^M*yr=Q{EkLUiyjW4&3nxz=Oa@u3Xo=X%=(N=)mFn9Dbv_IIWwrA4dgEw z9QQLUE|#`ez}nk1t-F}KC5p0>yk_h8{Abd#!>CIRjeMU9If&avEAHzxvS8y*u4Ren zn!D}`#5uQ~Xx;)RVVmL<4~!e)aVLE{2XD*48jl3Ie^U=}@b=X~L0m6KO!(xx_V9;P z%Eyp(wl)sbPE6#YxTHt3NK2|JtZ#zRcOF%Z8T}~c@Hr0j{_1wAMd4tOr0^a*v7-=wdYG8t~adA&)Z7ODav zyK&i<%8P`Y7Mp8hzGLzlzc3xCrc@$ZvwHiBNKgGn4iP&g>6*=xG}gG@38W-R-mR29 zF4B7SmM8Q|35i82gFh)2c4valYJNUB?yUAdP4u~F$5F2`&xPY-#iNUI{tUSlb*I!L zG|KY55sYCe(SR=oE76~%i4#FO1CcHo}etr}UsSDi*n$>!DOA&mYr0YYA3{go5P^m)f})|Od_ zUFZ(a3q{|bqTczorio#KCZRpIQ)AWU(L!IRFh`+vwR`C`5=oe-!ZhndD8lky`MX){ zIj66p&{&~YU4olJ?{lN`loE2UvW<4jL!4u{IQgtD16KM|reeQ(=_NbPYAJv;EFElb z6{>q8Dh97LrRqjoC6j!LxJfrH<4xpt>CaDbE{e?DpmGYxrHeg7tW}QNP^tQ3A~RL( z7Iz7j+7tEBHJ3|%)je`ht74Vp+@eJ7TE%KN^}Vy}l|&cvk=_~aN=WjJb5&-8#$XDs z`n>B2HUF^a6$-kRF>2cV0cKb4H5}KcNI+~C%aD5;8E(!m3gg$_hB8EAz6Ou>z58Y% ztg*7JAY`2T0H2=hCm9AFv;I_xnt2j}#(3wyY3a!M*gQ|4lRW zp8jYpPWfK0w$jgoRt=P$@uIGSke8!x3p<)}H=RZ4d@8wKTiP9)xW{f19KG!{)v99n zY6VY`tQlCXTy8|;Bv(k&<1gw8!JRsmGN5>P%;SADZ$ zlPC79g|oJ1M|Nal_V^aaaGmLA4y9KZ;~c}HIzN4Ot+Fk-bd}k%b@D^ZlKYsbxgWoz47gW7SVop0uPh-z^N$EewzLn=(e@YZ{z;US*BHWx*aC%UuBMmatU2o zp4k=|dx68Wy{HfFp{Z6e;5#gIELWZ?*!nbe6_#6YrqOfCpN50@5%% z_;EX5#l6^RpTmaOCGVDJ$vWmj;djh+O+NlAtW2!WolS50sV1=j_rsl`mh}>at9vJI zof@p%nT$^CUKq(M(|kv}3+|waEbDbu3I05Sfe59wfn)}#7Rb`*mqv@GQjry6o?&vO zq&PUbMeDZitz7}BZ4JqxyDGhQaYohNbWw@5N$zv@Y>t#8*~CTJK6OLMBKw8;EpX@f zrP=7RSteLBm;l&|%-#aa-W2>+|Fs zwfeO8IYVJYRpweC8G`<&RPjgEX#wcC(qYYF+qc|~w|s|c3!=|=sx`TMmN0zVwsJU) zMtIFjM{+>K=Fm!WN1+fkhiw8Dl*x3HzF6kTWOmxmfV16U;>VMN-aU5@af8by(-EwG zAo_W~wkWjK@p2rUUCx?D8py%y5`gvta#pt2&9|C2I9oes40t;7jIQM5#pcoor(!(l zyAiO?^}IaR=2zPaIo_Kpk$xY5E)i5akvpeR@$=YjztYQyWlSTK*yI*k1{K`w)?Jrl z&nbjBpw;C$4dFs7Cn?PbIJUG&EnPx)U0cLo7Z7Ru|4_3A}eKdEPLolhO!#7 z(>S|AOI)}&<6v39x@JkkX~KxT!%DBIj}LTKHi-P@U|8bf`pnXqs(Mk3)PrAW$1!a< zI45>8SbQ~AV5dvHq~*Y&CAI3>>bPc|UhrE|E*tq;IrzlzF+1<8H4eP55XX|D)#9C!{+vih7?ThV zH+*arv(&+h@HZqz$%yjBlu1XXp^{1F;UjgfmVdFUhFQo>iPzNWbWY^d7#|j4VyTUHk>*+`QD?kM{PtUMh7`aDjj1F z6NO@u@^u3%Ia@I^J#$bZjD3;r4gmUn&7qF2GNpRPMRND^tDw%W6xj4gD8vzM=V|!% z=llAEy!Kf@3Vq+?>mv1vHDN(A=ewI3`}?Q@XF^`*T{zaKJSR;N_Q(6Iho|RQJNG5F zs<)$pa~!Hd`&UvOsdCoVtY-!^Tx@koip@#UWrG$c6cYe=#DdR0E!u^~(@~eONyq%T zLNqfg5b&^H;KPR}aX5QbiT7e9K2KmXj?9qw(whTH+U}a+{lImo_I7$#pKQ5(HV#_9 zw-c9*3*+tpGz{#z|Kc| ztdUo6*Rmhil}@w^$Y*_BGw;7TQn|T@+vvn7qA^**G*sm#Z6fbA)O?oVaMnCp`OYKB zr5zf>X4uPfbl50%>V?*HFZf0KhDq#)iri1l-!FT!zZ}lh=t>t|g0jT(*w~y`^cu8p zxuqc7&RhMtUxZ>4*0P;_ZVrNggleVwV-mffnu!{9@P)g7c-sbd4 zyNlBIMi0Z`k9N)t5^K~BiEJi443|O?U)G0u`btg-NReEoeN}h9EXoKePBwp^G2!rO z+>r{hNa3;g=GlCOs~PL;I$8503j1R(5~1Ai%Y!DH!#S4)NJKug1`H1B^g5YP%{

BW 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�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 u<8mbA1MrF|ndLo!zB*S7z0oZ{ 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 Date: Thu, 12 May 2022 11:17:21 +0200 Subject: [PATCH 26/62] deprecate fields instead of deleting --- .../datasets/MaxQuantRunResult.groovy | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy index 6f7e56c8e5..bde58328ca 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/MaxQuantRunResult.groovy @@ -40,6 +40,9 @@ final class MaxQuantRunResult { private final Evidence evidence + @Deprecated + private final ExperimentalDesignTemplate experimentalDesignTemplate + private final Parameters parameters private final Peptides peptides @@ -50,6 +53,22 @@ final class MaxQuantRunResult { private final SampleIds sampleIds + @Deprecated + private final Summary summary + + @Deprecated + MaxQuantRunResult(AllPeptides allPeptides, Evidence evidence, ExperimentalDesignTemplate experimentalDesignTemplate, Parameters parameters, Peptides peptides, ProteinGroups proteinGroups, RunParameters runParameters, SampleIds sampleIds, Summary summary) { + this.allPeptides = Objects.requireNonNull(allPeptides, "allPeptides must not be null.") + this.evidence = Objects.requireNonNull(evidence, "evidence must not be null.") + this.experimentalDesignTemplate = Objects.requireNonNull(experimentalDesignTemplate, "experimentalDesignTemplate must not be null.") + this.parameters = Objects.requireNonNull(parameters, "parameters must not be null.") + this.peptides = Objects.requireNonNull(peptides, "peptides must not be null.") + this.proteinGroups = Objects.requireNonNull(proteinGroups, "proteinGroups must not be null.") + this.runParameters = Objects.requireNonNull(runParameters, "runParameters must not be null.") + this.sampleIds = Objects.requireNonNull(sampleIds, "sampleIds must not be null.") + this.summary = Objects.requireNonNull(summary, "summary must not be null.") + } + MaxQuantRunResult(AllPeptides allPeptides, Evidence evidence, Parameters parameters, Peptides peptides, ProteinGroups proteinGroups, RunParameters runParameters, SampleIds sampleIds) { this.allPeptides = Objects.requireNonNull(allPeptides, "allPeptides must not be null.") this.evidence = Objects.requireNonNull(evidence, "evidence must not be null.") @@ -111,6 +130,16 @@ final class MaxQuantRunResult { return evidence } + /** + * Provides access to the information stored in the ExperimentalDesignTemplate file + * @return an ExperimentalDesignTemplate file generated by MaxQuant + * @since 2.10.0 + */ + @Deprecated + ExperimentalDesignTemplate getExperimentalDesignTemplate() { + return experimentalDesignTemplate + } + /** * Provides access to the information stored in the Parameters file * @return a Parameters file generated by MaxQuant @@ -156,6 +185,16 @@ final class MaxQuantRunResult { return sampleIds } + /** + * Provides access to the information stored in the Summary file + * @return a Summary file generated by MaxQuant + * @since 2.10.0 + */ + @Deprecated + Summary getSummary() { + return summary + } + /* * Helper method that creates a DataFile instance from a map */ From 6882814804a5c7fc6333f5b6fab47c33528c74be Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Fri, 13 May 2022 16:10:36 +0200 Subject: [PATCH 27/62] increase snapshot version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8d5f128e52..62c9e4f711 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.17.0 + 2.19.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 267294d6529c39ed3ba0916c114a7e2a9d9aec18 Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Tue, 17 May 2022 16:25:00 +0200 Subject: [PATCH 28/62] increase snapshot to 2.20.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 62c9e4f711..7ec6d85909 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.19.0-SNAPSHOT + 2.20.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 1fb6f938bf9ad9520da3ef90938e5939ead3263e Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Wed, 22 Jun 2022 08:53:40 +0200 Subject: [PATCH 29/62] Add PCT facility (#322) --- .../qbic/datamodel/dtos/business/facilities/Facility.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy index fb533ebb7a..1b192cae1d 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy @@ -11,6 +11,7 @@ package life.qbic.datamodel.dtos.business.facilities *
  • MGM: Institute for Medical Microbiology and Hygiene
  • *
  • QBIC: Quantitative Biology Center
  • *
  • CFMB_PCT: Proteomics Facility Tübingen
  • + *
  • PCT: Proteome Center Tübingen/li> *
  • CEGAT: CeGaT GmbH
  • * * @@ -23,6 +24,7 @@ enum Facility { MGM("Institute for Medical Microbiology and Hygiene", "MGM"), QBIC("Quantitative Biology Center", "QBIC"), CFMB_PCT("Proteomics Facility Tübingen", "Proteomics Facility"), + PCT("Proteome Center Tübingen", "PCT"), CEGAT("CeGaT GmbH", "CeGaT GmbH") private final String fullName From baae97192e256d93d3a4b34a79a9eca7072c2e16 Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Wed, 22 Jun 2022 06:57:34 +0000 Subject: [PATCH 30/62] Set version to 2.19.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 62c9e4f711..86bf031e13 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.19.0-SNAPSHOT + 2.19.1 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From f04a13acb42b437a2eaf7a5ec46a9f546512789a Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Fri, 26 Aug 2022 10:23:27 +0200 Subject: [PATCH 31/62] Adjust Nf-core pipeline result to account for sarekv3 file structure --- doc/figures/ER_diagram_pipeline_results.png | Bin 129166 -> 119531 bytes .../datasets/NfCorePipelineResult.groovy | 10 ++--- .../files/nfcore/ExecutionReport.groovy | 4 +- .../files/nfcore/PipelineReport.groovy | 40 ------------------ .../files/nfcore/SoftwareVersions.groovy | 2 +- .../nfcore/PipelineInformationFolder.groovy | 12 ------ ...nformatics-analysis-result-set.schema.json | 20 +-------- .../NfCorePipelineResultSpec.groovy | 5 +-- .../files/nfcore/ExecutionReportSpec.groovy | 4 +- .../files/nfcore/PipelineReportSpec.groovy | 39 ----------------- .../files/nfcore/SoftwareVersionsSpec.groovy | 4 +- .../PipelineInformationFolderSpec.groovy | 10 ++--- .../folders/nfcore/ProcessFolderSpec.groovy | 2 +- .../nfcore/QualityControlFolderSpec.groovy | 4 +- ...ing-process-folders-resultset-example.json | 17 +++----- ...ing-quality-control-resultset-example.json | 15 +++---- .../resultset/valid-resultset-example.json | 17 +++----- 17 files changed, 37 insertions(+), 168 deletions(-) delete mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReport.groovy delete mode 100644 src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReportSpec.groovy diff --git a/doc/figures/ER_diagram_pipeline_results.png b/doc/figures/ER_diagram_pipeline_results.png index 4ff4b681ffa393fb6fed419848d1ab569791ce6e..83f2bfe21ceb93454e196349ba6bf4461c139993 100644 GIT binary patch literal 119531 zcma&Mcihut_dgCiH;*^CfE(da9;Px>z;vZ8$Vi&ebfzn91BhvxwrSe5Y15=F3W6d- zWw;eo95@h>p-hn>;07lfWr!e4Z~(IWUeV|C`F=jX*YA(->(#r>om}Hw*LBYOyw5qA zM*GNX+uzi_RjXFlQcf(`s?|R_gTHgl{{(m54K=TA)oM^j1&=9(T3X2St@@fAe_!=A zLfK+P>1)FJ8jW13G&m)2nKDBW+yc)F#gvd1_|)HRjF8bd2(k?_TEYfPUlRhs z;L8XPwponq-|e{!Fa2jg%U}o$Fu=*fA-=pO?rxeMRY8ksB?Z9A2 zwOR^)w^8|WMJP)DHR)jEVC&xxlzNH(`);OK%;fpM@0P%%d{P(B2>sUtf2~pY&*}u)YRN#AR600T$RL?0#8(@C4`*cziKJbI3Ds;+T^dXJ zY--Lb1yioRMig>ErjV58Y%Hn;%w9HL&f+e+FQwL5PIDzyGJ_j3sKw0|3k;i=8P&w5 zLpjM@i^b}0HJYoV0SgNG$cUM9=VGQf6lRztnzmzZZ#5Fn=iyK`=j>}Fa!B4Cl(Ht( zh8bPPh+pNMahxr=19_BmAfSP{C}JeVW-^$-5w^6J<88)Fg$z(om?zNyW!Jo_o1oI5 zX^7-XM9^7j(6BF!IdO1{6%8>@*lqCBDUMaWCB+=jCnd!s;;=_a3Pyu!AlxtnvWSrO zM?C~M5)`SDK0X{ogoLRah03ApQwQA?P_1Q6c`9`P>Nn}%~i$YQ7C4HY(tkYogB zNQikQ>aIltWG(*Gk#2?6rjt5tPtHK8&a{;A<4L!*VB)x9P|)W< zDsc_VT4=@)^mr8r_NsZ6f)5n z+>C~@yjie9a+Qn2A!7szM`Ma&t1Ajopm6Y5y3?#nZ_qSI`T#mTT$BeY`B&(tGz ziiy=>TSGPhN%JOqITp6tqTm{egsP;2q%fX_eyqm57Fzbg0&72pLw3XS{?Y zVsx#Mb~&MHE?%n#YdkGF9H2+477&w#n1Gp+85ion>Nw5Yw6cn)LnRS&(zcMjpd!^g zYht}LjeAT4*YK(4yeaDU$|x9t(Dyefkq90yli(6TJn={(%mhm*h9n~XAQQ0TrLx(Y zl>-ffSkVYt3_55nkVY&{FA^gYaoAxAfr0ArnBb_hmQ1{?8sc70#(-tLIn*5o&s^3V z9SM3=++wbqy%D$1ZZ>Ab9GK5WQnC_^gxp57=BS5VVLX}f6)HKSA&e7#CFQ4c!IZm_ zaW^8a6zs4&+=ZNvkaH0@!v$?nHD3(-oUEtl!QDmhh$G}iT3|B%tQ)I3Oc-NLDq0#- zLV=L4oDI~>wW1PF#;b8h0xD(Du$bX^Ay08MWofkTpdxg_0XZ;76rvEk0v_4}M8ObXf(cHB z(zZ31f^9%v3cZI>~Y(4|DcX3@y5$P=R1+Kn>6^W~EgvST%XwB}mR_Vk+!P z;ywc#jpvM(a#RjfkXju>yeh<4HIyY?xJ{|&NVktbfWUB6Kmu4HNu)_kAVWZPV3UNPE;L!RxWb-P zoJ;uAoXa43V?eG5#erkxfPNy58W`M8=`OKYNQ4by1NNsq_M`<>JjNn|CyN3UCYf9y z?8j`T48lo*7De53AQXY!em_Pr$!ydioAWMffkRy-mLV80BpM_Vf@TT$GvP!=^sq@f z!4++4#pg;P(Qrw&(+O`$V}g0gSA~;6eG}Q5Ax1DH2SGG-u>K{0D)qdY5{DKhC5%TWN)Xeyux zPS_?0POr@#qICohrJY&H6Xh(qnB->JazJkvDVX?#fk`20*kDW+^Sm)xlFhbqB_E?x zY@<@iVye4J)=O#*6a7pvSAp1k9)KI_bP-t0RjLvVgO`tThJf2tDkKsnNuh8F$|Y?U z&2Iv}8&xZ0#>6yG;FHlP$rXVp4u8R6aZy$`T(>q9*c#3Y!9txUU`wKy3YtrjXvi5Q zOE^}@d1yXh2R##-gqgh#Ct?QuYmg!8z$M&(_|T{aDLA|Us!$}J&0DlQ<21z`r2v~S z*9l)d?qDk@%bEOarj#!yt$ZYGOOQo7rqzOufD|)SV1q6a?jYm3E}P16(u0S1gP{9a zTOpU`y;?Tza-=2Q@AH9}x5}2SQa0x{6&;~6ta+`nNVx1`lGG}2Rnma8L_n(8GX(Cn z>KJCHB&6&J*b5<6V)0ZUmaf1R3mx;NjmEGWmUUNA^wo8hFV*3Uz7&(wV5}K3cClJ; z+bK9#4Z``jy9A!l6{3NXa8+UangKCFN!n3hE8e_S=C~YVvv{n)wh7kcBs}2P5lsaW zes45W^E-=i8yob9z`2zeYs8I6j2Z(mc#mj!TrR=W5PKJzoqhe9!is?9@Q7OR!`RTH3H7S4+lC`qx=NdSd z^718Hj5em63M`4W0$i)=6dBjGl7?+rdnx3KlaY8mDjDOjiw!CT#V3P@NZAXVL(<|d z*c`G{vgXLRE9d2~dM-jsb{q;u1IZ*rljbyNO;DhRH)4(2D>gS}X)xBD(;6*D38M>! zLW*SY7^9?(f+8|j6hx>NVSP9-e4RvQC=+1WRMKt}ti~c$X9d8EQGXH(yGv;*8(_i# z7u`UyY`79C@wIB+lQrdZ>A^=ybL&UP%0`m?>0yc_85aMJDHMHutVT_U% z^X0s|=;Tu(8cUj^97XUHyxueu@yKbN%4TKAV{XJ_CQGC$833AEjm{LT zn(YRMP^}kLlU0TzloS?7u@s970vpSFJ^4bEQ%WI(W+EAj4=opbk&p}+MFVAUA*mL) zlB3MqgGSyc(@BEyRy2jPR(uU!aG9!(YN;M}NAgCS3k%7`de&h#>G%kMB4tR3a;9V~ zBUQI2rpX+t9~D@&u9CKfn&EVdvztsAUx4z5St$elwFXUfy6*G4EP~JI6)ou+*kr<6 z_fSS!2NnQ`ELyKR>M48CnaVkgdX(c}4QbwJC7Gz8Iw4cQfF+D&wwkTrX;&@{@uF;X zry&~S|ouOvi1aMRnnTXw- z3`CrKC=4_ojS4`1-ez}K%HdqDs--C%Lx69xYnVr;2gOajvTcNW0HD2bG%V#aB+ zAuVct!mh@1CNk+)3Q$Z}rj%0ArM9{V)F&2el<2|jsugy|@LC)VI;s+hi?yVmEQSJX z*+P5kepgP?dl*G6?oc$<;3fE)-H{9@lgX4;%NhNE>jwm*z@bu!qVg1E79fd6b9CJk zfyrn{paruBjfe~_Cxh-tHk>e|qm71`0p3qZ=edk3=My%r=!jN<|1;X;a!9g;vk8Gp zkwm{9L<3=5*oGX3?=HzVj;I*HQ8L{s+4r< zFk7n5ydvR|ioc7bCQI0s>pXlw_GoMPhZ*S8zc-xTr_@ z6+_+#;(uEqVo@!5AFMlLFqA@>ByNkg*gLovQ2@c|>idsH<77$Mw(9j};D6vPT%xWLqyhNTh@74-3~S-+3XkZyaK za%ybSZwq@#y5J;ja*ELrNC`oFMJ&Uipb+(o8ADFY+v7DUQ6&9oUf)i)fsi2^?yO0W z5eufYn8ri-3ZT6xVu1X-F%$F0g&c69q}LV7X|&mIvB?^32)WY%_AG#f&Tq}3a+(8;VlrML1f&jwntNGq%Jy{ zk7LoSD+5A!B4f6SRGeotT*+9nMt>Y+Gl?ixW??I68HG5Lj){iMA{RCt6&Z+T}}d8OOOV$1L0lyq$8Zn z;K1#aahKQOEf+)eK+Q)ek{?E+GM-G=lQ=JB<0?uLwuF};q6UpI2~4r*cLA#8gX$S; z-c3YHakl0r%M_!zAwgz2D}nL8A{VWQ)jFPvR?!G+;oaGS)r3kO*>6$fGHSOW6?4^x z`|VLa7|#^Lyx$eXH7z8NnS=m@t(TQ5!H08VT=epqikjobIFQ}w6yi#*?1mlrB+n+S zCQf!VY*YYM0zp@ui`Sh&cO8&(f{I4N4Z%;!uuzdvIHpzd)@&kO^hh9U=_rM*29)>4 zf*5VAd9%5C&F=QenKVRFB7@W_EMdy$EO9&uGKwK{gLR5-zbl~dc4OTWWh{AxWQ;yf zMM}s0Y|*u zm@+5CJY7X7TN$x9{6$VmM-uUf%WpJ@*@!2|mSTA+@8V%#ZeXOeR*-F;L|)c+C|VRD zZy?qn9TC-QP5^Y{OT`B7G6EIH@@2D;u4D-@MC;oYW^q<=Iua$DrHrsd!z_7N&0Adwk+0+}MF=)lUG=m-T?%BCqNLdKOhPD^oq>=c z7f#mmAt+;zIBNj)1JvaJ! z%ENNKV8Ox!Fq&{gsu;^wlaw#W)>ssi8qP#5Bm}**8L^32#T75JHCX{3k?=G!tfd7zyUa8PO{|{WH5z4CGn%f#EfVAP*BJZ)W!0N%u|3^^+ z;}ou<*K43kiBE!RO_Ede;t8m|U_pck-}+xQjB+Abr2u<@INF@3qe0qMcYp|=Dv3tc z!Lc-(4=Fi^jB`fXLs4Fx#_H=~RFW|Z;arHfMh(GWCJGxoRZF9)MC-+TAslz6u}C5W z8pmsJp&;k2ew&fwzA>%WywEaj)=f}9Hha0G z*lj9QA*&|4CvQVCNuaW*E0;B}JdYC)P%c6<1Ot>(Asn=a=2*ZTP_N<$W!!!0Xrm`S<$Tp(1Ic5 zp&Vw7X=GwaLJ$g)$%sVbUXU$uySQ>l3o!`7=AklgkpfUwlue#IKt;$aBWeSKFv)Gh zz50O%5`kNCDEKGkp>d4 zrJP`W-k{rEBWWXvSu>hh;wz0vg2o5mW&|{kZ^Ua$Ek2MJOzXrHvxwOL^;%&s=rtU}{L z!1bEp2H=k-!JbDI+G6$A10}A+aUzl}s?~T+?_zbhc}tuDpa7~pp=jJ(260TnCIS>A zkSs#@q=sa#Rq=v`YWb=;VzCiS*e>fi4%A{c&|)D>nI*zaU=B2C7XbW4tTqsh5$Uw< z?inK=w?rEu#h?^$n>U%NM1+cs6RLJl)zizDM8t?u2D=lp^1Axk(u(MFRhg(sw#P&q zc3JWM3OzCuZWx zxkQf1gnf7jY7{&nrdSJ`@^aLsYdfGofLk^^33DnFQ;SGKMReOqnlZFy^+-A~aTyJz zyneh{jAKByKISWfekimTpDS&fhKMfB%}e)LS4yF$*KruQz#t@R|HA& zc|?zyiK;Gtq>_VGhap=tHn3Q#E;x&rukPg~G#{YioE-uQ4xL%*2VbO98C(JtggDYD zvt}5jGBn8ZB~+j|golWs-jo5LVJM9Wu-)ShyBM38E}=Z{59$d+DTwp34C~L?8J#_dcrf0mG7gKgN@)o_u0V8p;?tjj z50-SpVDGYj73lw8e4d}F84GUBCD#1zpa)7*Y5@%JzkMDeart^h0D(Ecvr09u=vT!O z*i{O6BK-{jD`QeqmZFWIEue+fnwB$8heO9=K#|~t!ofz>R8%EF2$BqD^F|><+GI$W zQ9Q#1BK|BEt)%>of>;cBCT5e3c#F)owM zs;S0e1P#k1sCh)=MX?AwgmlD{jkwuR&{n~X#*zmOW)0S8O^J&h3vA65v4X$OVNzA6 zxV1z^jrj_G2gYc?=Q`Mcr5a0@8Lx`S`K+RAVO_E1IBQ;DED1wc%8D41mq4{IL4?Dp zk~u?RUJGI}`BF}&g#)1qQKsxw-rq=8ye6r}1TAIAoQAxr0Vpuq@W5%4Nmpge61CS& zG$@0`Z5F@7!7y|xXV>?ui2BGxEuk6%ngB97Xamj)4yC}G{Amk}g76N*Kx)6_vsnd$ z7K(X=N(c^t%93itc?g^fK^biMd`S+%F-2!;_IOBhDS%CBwh&*dmCOdGzoDp5Bw;t> zd@dZNOIlP(N5U@BDSf&`J6i{uzI=tp3l3LuFpWrvLEVoI@R z$g-m-$P~!q7ERU5I8nDoDd4VaAs9xzj9IA{X||NfxvH8|h7k~eOLdNd;F4A(l2w<^ z_nqmG%*D(ByDt(jz!2wPl!%eT3w0AF*&=2IL^@%=)l@=Jca8`Uv{dxv4MmSB9jylI zkYM6yML!219IKW5s_5fObk!cqm?<}ur$r=>R6UAljRJe|acUe?ia~Y2T=B_j*;Pqu zIg_>MrIDg10S3`6BMQrgB-kgSq!ZJM7Zmm-IH)?=G=yhNQc5vs)hYtjshl@rOH~uN z0TNUThb#VA+Dkb!DdyJ0fHwr663)kjBD@ zJ;{<0Ya@+2ou-Bki~%H7NGtkk!d5wBRY8gZ<-*{!iE2&r`u&AK!Ha?1MOG2qQI{Rm z{*6j3NI_5>v?Llq@CAy&7R94Paz3N4Yy=f>3)gTWtlgu8au!#@FFNe?dP4N*Dul)J z(I{7^iJCd;rp&yC#HzZsux^yowW%Hm@g{58EeA8{lq=eRjddNl)25`)Zm2s=hzyFU zR3>9Z@=7uQQ!v2fK+cIqWLynIT;Y(J!Zl+C2Q)5~LE=IRO-M<53PTts99EqHNOemN zqFN1DO65YeuDdu2gmV#4l&-pHk3kHkirHc&>GTzZAjLxg-HH=oO~Ab}UKSHvEMT#L zDoQkF)gZK3le1yOt&s^gF1e7b0H`-+1J!5|&{3BelPcgfD>t7i6ewGoD#?bLhEaHx z^qAc>ODs*u@nl63{b5(hAd_JVrxgd5agvS{AeNboGwCFCer8peSPBB{5jB{yHb3z9 zj0iF(hG@lD7tLnM6|RVpQaptR!tSUkVa9wmqL7RzS_V=WG{ie32_)ai5+#;Ek`(31 z5*Y#YcyO4NAZoC?0d*mgjcVK^nR#ENQA6^6q~Q=s6pq;yH46Ziush>v@MA+I+M?N2 zJuok5V614$U~!QuEk=Xcnyo}|Zi`IdF|Oi8#2jaV;({$h3T~AuNQ^6?1VG)3VTn2( za@$0wGwYF~ss-X@saQ^e3N@^v`Ft=!Td^9MFp~*K%I~RFh)l>>lAV?e4o3)B6M)-A zi{3(&p$(jZhy)XH7fO~=I^6*8{sG)EmN^La*|N2?Vnu2u8Z@WCX(hsSvzjRKIlme3 zS`-V=Nj_q$k&?^FC_crT3PixA15tu-#H`kll$wzZu*D)ds}7&JAR9?P;R>lbyqlcW zpgW|BRL}-Cfv5wuu@&P`UBG>Rad8m7R_d79Xf&hwbiPs%u(UM@D?TWN6<9TEH#))| z;KZe@&4)Eep4NBL$(TS{u3iu4*9l2Q-W+nLI#zF4FIlf(H!MMM7dI@xsn0*Bax6frl4pH;doPliX~IU zk{R~E2D^rGQovR+B+Fuig^FR|v0WC)R&dsHKzqb63zIIbmJ)m-YfM5eU_}LE4&*(j;Y{VQe3aU?FCz_aJXN(9>=ixg$r#9B0?T44@TP|BZ(tzt z3}bw%Xh{_dwyI0@g-cqPOBeL?L#RSg8Oq`>m<5-NBSn$U3GRZYp7s0l;UevZDmh17 z^s8=wkf=Y5Hp2d3By6QDA;Bm3@*$s^Ee7*I_=e5vsu-zsf@Y&u;Ga-~$T4xrl=oOc z3JR5c5Xu`>73Hf~s`OW&0H@V*E=l{{f~u#_^rUZ@3YsisXC1u8l}%^`3PB*DSj_2; zIU3;HFz2QsE|rTgnM_{wX4$HpOeMg3Y>b~MRtYb71H)ViM_5x?Gb%(WpHYav0!;-8 znt8cIB>>I@M88uv?m9=LGDXqpGsopX(G@B(l6_Mll2r5mRO`VDC)2D5cN{ol@p?Mr^lD6;T9PTB!L_{cw(v+(y*2DyP%LY!-cE$JQl>g zPA(SIz}t&JY0wDfQ;mES4+d>mwSl0PnB-5HBhGq;i(}Qaox^b`TIH}%BoYb~2nH#n z^I4BM;p0$TDAQ4oRtkx^g40;i-v|R!+8vsSO4KYtJw{Z(8;S0uNk4S(La1i<78?$| zksD%ZOD0$}SLJL*Wh9GG58zb8=dKG$9Lnh@V_`#@N|((RV;V6#ZU6sCHZatG-hMXW zxAr;Jx>c)Qttbo$*X}y;+*MC^#=qP0r+cft`L^aq@xZKns~aj?e|q@HjayA04jopp zEgS#i+zQilLr0IZLths?vb?n(KYM&^eXaEx(+4NEp75RfY}B?7{&7N$MlUaLto{A^ zC!$Ah2z6}Tu|w;Q16tZRUb~cYyy_YFnD|qlKE2v}-0|qwuik%h&#U*AuR1=UV~2@v zHUB`-M;C#{9VRZld6stNR`u%xA3m|KZM84BQ|Pqv@Ym-So_@o+ygv6j&}gc6(tLE4r_H0+b)4ALbjtu`9C$u;3?{OV|D-oukdODb*eVohfG)-Hp)4{XDuBe(I-+`S!N`t*HG zc$e!Jt?t*RPlr3f;7vu(H+?#OQF&wB$fn@Uy^z^Ajd*TQ8?X(V`^=l>UQ+t$Zheay zgFkIrHu%xaVD6>0(zh0{?)@FV*wnX{d~`;a!p_AT+P81NkbO7z)9b$K;|8!0{+iKG zeLAE~r_OQfE5~Mmh0bdC!-Y+U_Y~K?``QcR8xQr)?Ogm~cWtk{eT`Ne_rq*5e_-Qe z_2S7DPi6nrbHXKg&aiRI_tg$Pa(2bK%b!bYe`mxmU&5yyTm8q6a|VqV@%^clhh{u* zWZm!EM{Qp>VZzY!`|m&bO~^m!%XeMnPJMp-;QA5o+&sg!@t0qI37#rayJrnL^23G7 zGlLGjK0Y-AtpCTI$3Fopv^#t4=s)=TdwzXn*sq_N)bH;-7hhFAoIkny-Lrcu+japl z4qSQOl$lZ3yYfqRg*4`+HUB^i;`V|4+dO!EPif81@2`ox#lDMG_bFd{ee~Y?k>}cN zTX+88Lxmk->%(TSNt?TNzGLlgkG6Dvd|FHY-D9+U{Eo2`);`kBy7kF{ z@kIZ*rAb`xqhHN`=-xjspF6ekG5_#g7k)o}V@?ht;HYOc?W7LX8`$`{Ndungb@#i<(#w6YW1F>;ZA^gYO#O)dVF)Ww6FA38a?>s^b#pYZ3t=Onla-} zzB{ zW#^ke|I`~8dyg3l@Fr|z)1!T69dGG6mc}+FCSN{(Xr}hq*nX#GPnz`Yy#w1VJZoAq z{O9+6Jpt6vatvvP5b|MY_LfJEtv&Z$Ww3uqQ`vH4uMQpBAK(5~Wzv)p<9=SdLbRUgFut46_28t{BQ6}hx&Pe7N55Ep{qXba z+qFM-dd%~=9gD`?GSAlIOJq#vE8cM&4?`5!Ehp6K1W-E`vv zZ@H)GfcuwHY-s9gxbKNJ(OcGGSGT`1bI$c`|=^1?jo+mK)XG!fSRJ zJ9GaRWA8bG_aD&QrTF!$-r4g`-@j$V<=;a62b2!IG`jM+W$P1HZx}iBs%vjb&9N5M zMS)G#TRL@aT6^fx>b~lZRjaqZJ@)4Zc1EIOc*ld+$jpne%O4$n&9vi%Pe=C{_xrG6 z0Dr&wAn@*A=pSq<-+Qpr?GN_pH2R%+y#}|^dJgQoa(Ks=@8j?O>J{qj{`;?A9g@#% z$SwJ>$GDa4>I0F9x3@fYA&bZdCU+g;Zgu9`&U@c@y{C147FnYF^i>}>aVIkIc!$B> z=BwK;ayS2L;7!f#2liiy{?VoV=*OP57Ns*yZM$5HHA{gh-PNbPbKuY8H+5>)e(!7P z&z?Ro>D^lw_g?&Oc$2p2I2p8-p6v1X@ooH**S)zq@*t4;lMc%V_tl-ss^Rjji{_2I zWpv}G`CCt3745mO!>>oSX@jw;t;S-IK$@X1@0c-f{go_~%l0$Gd$U%!~Xh^SvK*^%+o_f4n&B9UusK{Ji02 zar?qsm(K0*s|;Xrjjhu$WHCkOFZcN5_anh#x})<6fE5dxs_*M=y7T>isYO?S!~WUl zpFW-FJ#t`&$Gx9KnO|i`;)V7jEVs8zc%aqfooz-p&h8fP==yl~wb!?8bMy0)CymT5 zwQ$eO>(De~<@$Y7S6;LC#n`@?mX3d(T=D&0tmjkxC#{}2>}>3*!1N0x(=W$AXg_gJ zmq~5jB;RD-dUPp$_cJd_2X8HfUh0s2r25Y#lUCmM^@7NoqdUMmHc!sI_MBRt^v{m1 ztylIBe(=2Oo0*BdTjE-F(TJzw)_KS1XIf^>8&LUS^*o@{gIj5a zu03>Lzri0LnBKYbySZ;&r*7%qw@qKbQId20OM6A9M>t$(kW5>?- z_FVb-gP!M~WH%)!p-xpXLr;8T;1o9%DgG$ zBcBEU->E43zdiX*$6527-CU7d+Pu;6i>n4%#&h;@+kV})ba-LN1M^qqUTglLX=3kC zzum9DcGqXq-e2%oANnS+8rS^`j&+{csRKBm*6(z9e&d$>RoxZ3dDNnQ4~;zA>HMW% zx9vN1=r&*teF5JJ7^NZZrmuV>C-ph${71a^q=Or->Um9S&o=`)eiUi*)Y$Q>n(#%} zy?^1kE`Ur48(w!|y{h2q4bwG_Yddx3{?+$g!;WSr{lo65Z?5~PAAoe}r3L;bmviK# zmmb)Us?RpzAN|ww`RDCGAG_hRW2svK-57wcT);L>cYrpwcQ%e&*o4T`u>Abmrh)y~+{+e&vbesxidl78>->h-n zJI`MR1mjyczmpDU=DVI)2)vRCpoZN%{f3sifHlV9^k@GXdg=5BEj`Ww^Vt2hf5h5v z4c{(^xc@clEbuvdPV8EC63~#n$M%}G+CEsc>c^Xo?_82(>p!r3r_QSk2lcP5$M}_C zxeti%eY1N%IGyG%o}N4I)T-_C-Cc(sc%UT@d?tMN`c~cSVE@EU8G zpK$5Shsztk=k|=hc=F`IhwfN@>C!!G4nH|+@Ap$D0k3BLQ3g9}8B4$S+gEO8(dbog z?e<>=F7_{~d6OlVijI~i%Xhsp?`gB}=&-XplgrhU>>eOt9uP`%^%tsB4gIqkc;y48Lp_VagZ z_pLkk{e%hD*&p8YF-rRZFy(^cr z^g6j`#ftauy*Q-fMCiahO&|0;&s!o<-jYw@!rhEwO>vR0kr?n zb^C99ZEoVje^(wJch();dgrg6p+C%WoX}a>jsy4ZSjvC;X!wS6|K5wlpT5zYr8hQ~ zG%ag=)8GXFUfIu*>#kf7_2}coqwc{=ru1lhH2lKRm)}_)d1C$x0O>9~vtY~KKE05R z^UloZJ0Sbr*ekzu9s2t>p|{AHJ$&ZV+?e-jONRaN!(-C7FMQm1<fI`+VSSOch`Zr%#HnV`P}#WmH>D60w7r9;Cs%O&aH_(IlI-hjxEpjL1r6%;~NL^ z9Xoq|srS5l_76XUMneaGc;?WDqds`>+I=rMsP;Qh=UnA0>eR3gCb?F>^^fYR95Ar-qQ5SIih) z{WfwI$UYQVa`Dufp=Ty_>(X}FpYhCdhnqG}={Y|8SbzU_(~qvZ^7|d#?yQye{_EjZ z*CNCmu%f^vUOiKrH0j7q8`l21b?DGf$3AkC<>Ab0l_Ogh74H0cjKAPE9cfdH?%+1Z}8gRf*?4(y!Yay zjkgWo?rVR|)A!vGTfDxzyJvjm>9%d3j0}8bWwq?N^R5`tv$ntWiuK6%^3B7Jz5a5i zvroLzW#Ctf=WV=rjeF4c>GfZKv_Ev)z3Yt=Cr?`P;=X~ubeIV@e#>gl0leEc=*s%% z_kD3Mf((sJ0%?LiI}g3Qy{)cl_iY*QCOr(}llr`T{?ii&0g-#G)U;{vniB{6&A)R;?AN=- zowS@A-SLj<@83p8f$;a_gWaUk&#gz_(6MD;6SOMR_tMM}S4u7Whu?c)Cy3b(Z0&uq z+bP2Hz%#S{JpIA-dIX-S>u?|VKDsb=VBlk4PFBxv-12AlF5dB5QqN}QM(Ued?MNS- zd3)z02I|AZKj}dY^Du}TSA8_>7l5FZgVVGVIpSGNQ4#eoAKHE@6KD+VAMVSZT z+*2*Ljy|&D`|-;rTsqX#NB2&2_}6z5_A{xD_Q#qY12wOTh2HYh#; z;K05gZd@{QZp*q4+fS^vLVh{+=G*MD^yhOYx4hZv_M-r_vVmg#E~<6+F|}>^+n2YJ zH(tDda@(a_&YZeCG2`_9eO+!H5L4E_J5^om+;HsA2imoa-h0D`7Y9FS zIv!a1m+#fO_Ib6#KbpI>AN<_u^m===E~Tru+Y0+dt9wdhcHQ z-Q4KKUqC%>JD>yOqBBA9eiA71$Ydu#iQk+yW{q0Cefr~n{CZ@l*y{E_JCAOo$J1Ry z8y56_7ZelVs|+|NgB#hkr8l{*Ue*u-JF{%U4g&?)P$w z6kOT7c>0u8FKj$^%bTw*{IT!u5BrRC%=+?G;H)}NcxKF?cDj__ut;K+5gldSGOFzb@l1@Hx_Pxa^BR<4-Kp~-*%NN+KIw{G|edf1APd)&R zymRr`wyn3H_uXusI&S3DTZTxZ#tm4U{(kJ+ zF_&Y*UjOukoxd*o>Fd`%yrx$=>1FGKG^HF z+Ryvp&55hp-hT4&TSI#{w!6AzNfSQsu9f#J{Ro|KIbU8$E?GZ&fGPaWJlmD?hn~B- zOJ9IUOC56-|7+RPC^!1N_R@VP7k|HQ*Y5G{rsuoIe}8i!So7mI2xG{mXxxaDBGlyL&)B9(zpB7 zZBK6K`_Mr5JCE&bUf6VHc;}TP%432bE&ci04?7K<0ljp$+-u~VNr!J}z4?zNXJ1@@ z?ZD^pDITWOyVo2vf72;nj6L|o!RGdRUtE0Gc|-rynwL8~;O%qu_k#vmPaQpRbbb@A zKKycHwtoE2B;UUMq4iz#aOlv31AZFb`IY;(44OJGxAz)(=q-+r-0$s$FFp3}iQkSh zI_59yHJ}6hO62fO@0c3fZX7+cL+7d8_TIMZXr}`m<43zDZjL-fjUFjq-`BZX`1;jT zomSGbAGvk)`j$7HRD0=FQ)a8OC^`F7vhN%2BmbQc-KC%5&@F+rAGHC(#G$E_^5QF# z`b=A3YD~RjK=bq&(R&bNAqg^`pS-vBokz|uicM;BuJ03j`vP9JCi(XBuYs&J-mop` z($V=0xca2o5kQu=Z_oTm_3nQA2ak?`ZYi&yj(C~}dvEL0p);5Qxv|~5H!lRs-8iJ2 z)3yUk`e=3UM|QoKzX9<4#xZ_5;2|GvpB-8E$#gJYeD?M#c6YbGcBjkic^^F@Gk1J| z1Cd7`n!o*@Ge;6l_(K!!N|>G;*uKZL?>d`|&bwc`aBbnjb7!pIeRB8L%1>r6obzT+ zq;DGmAlK}EvljHrv`b-hwlAFd*;>7`b?aeWSIOf*D7D4*=2QP0-D=5~x*Q$=(nx#% zRcmTH=bbk|(x7Qdt8UP6zy>!6v)DdudIS30acS#NWf_Qk@v}1uscmQP{Bz)%pH3et zzr5_&{N@K9SU>26_cJd)-!RXw&s)4mkvi8dbX6OrjWa19nk-ujKdH%l_1qRXs z+D`&)F3dZ;WxY7JlAQbPrzMcBzwy6;_dlZD`$ajq-?H^T0n*V`*X*dh@$Lp)ruPhi zhsuwS95Nz%bLLX|Id$j9w?$r`^|JZ?JtvhJmD0F3o}4yvB`8h&&mQt1K=$651Tq!$ z#&!oldb#k^SM#^OBYb_|S^D$o{btR$e)q$hAIh&kKQ_N>_qW?$J2`l}cm!_K9cuH_ zzmD8jr9SUC@e2@U-*};S_$s5P*YUQSPapW;SEuP3hG z{Yh0E*4waU`{Cj{jv=R{$9~+ljTs+-^FE$n6Ju^=dO?$gu&|XZ}1ib3`6wfwu#C znz(*1_&!mbaB8y!=9BC=@ot}zz@cV1E1YX9)U*^|dN&G>%X(XI2p`Z;m`SM5f19Pras zCm(8;EL_?f_c`AwE?xV7xckbtD8Hb8!9^F4E)^75S`b7fq!&RcVMT$ZyQL+hSw!g+ zkPbn*yF(fQLAq0r?i6^=8ee_!`#pcab6xww%X|0S=giDGXXZ1X8L|#qjh~qvjdI!L z9~AX5gSi!;eP>mL36M{znnvO3Xjr!e(+;LTrCa%u^swW}@rvfT36OrqTIEVE%TRbX z4i2|PDcT&sIK5zoi-sD76RQsdiM2A@) zrd5#pv1S*Cz5y~BRi=LwbaPEnAj+W!V~gyc7hnW41%;i=%gp`{@;KQ(3(R0hY~R#xo{#lA-ASm&FPDa~qVm7W$Gy2Xd;L4?y-O$8;z+SGKMi1ge9% z>ii&p*(hCN%Kp|Jx1#o8iNE!W#nn5?=m23AxPUL$Hiq&N;;cJZa;37VsGT=GY+9E= zM&?P>-R85Mgmb;Fhank(qz9hdCN1|V@61q))v34UsKq=w=bSL$(A0TsH(K<(^3&Jh+X>LVJPTRfqn*cdE-R|Vr2TuAZ z2sBjmlBTEZr(DWx1VNx4fev@=w%eKbwXGK8>{S-K<0ev$fM;yWE{FEJYtD{W_IJO^ zse53rW9+s8+Psum*vImp(iakK+AH=6$RgIZnGVejQ*%rUT_QLx#+jRFVy z`p_VVoyV5@GjvZ+4(!)PBe0lt?H#XLq2&0>E;Kz07PRw3T<&Y0O0u<6`TZMU4YyX z)=e7?XH}{^2{3$XNNm;F<6uWrFTn95Al-l#gQ8B{k6gJm@Wxv4SJ|SY7;aK!tUd{l*DS3x%9CjKEhrS~;Wj>CFO=D>D#pj8yh zJe6(s5KH>bEMaHFMuc+TzFwn#Sg8fbwx+jN-&2O@aAqgl%hBHoVbApmJlP+!nBZZq zq#3W6Qg&!ejal7CvE#(sJ55xgC^FmEVxHHz=Io}+ymsQozJ3?nXAhT! zF;BW2s54>0a1XFa*s>kb=n_fn_zCnGglqN&D>^5;Ap1$@vEW>5kp1lS-g+BHG$v3pR-cpcrf9`Da35DY zfy8;MSJG_q7@1{^ENiq%1S|6kr@;P(!5fzG*yVtS$ab7q;7cus zph1*hVttYg;bbwi-T^mMYt5up>y1SS7WGv&LelZ*9|N}-RjUu(&W;S3oGn4iG>|tt z>maecv$g2yep{T>n z3E~2wn;@8Ful3m>BBgueZ;9!NO~(GFzx^KBeCX#UhLBDs7u{K3q%Lvie7GS=7ORfG zJ*jYOrmwdcfGuCbGVHWWuwRWNp8$83B|L?&aLjbIFj$tKFz)d z3@+0(zP8~fD2og1G2Yz{ROOefOm@kvJjF3Op$7!GcM6uh>;)*Etv@6-r|~}(%_iJ1 zUtj#z6~nYJ>#M*K!OEt5>9%>{G5|6{mm4G)OTdmviwrxVbmon_A8B_*T z)gc~Q@=*44lAnEmu*#dih;CZ&?GF zmiOoFcm9c5slGlUyCzdlcqZmwUvl=PWBx$^TRXtQntknqX+=-U$mQIopCob08MFtd z6guUJyhKjhTO*#8!cnNTVC`fxe}~_=CtkdverxW+8KnT#4LU+H62gj6O`C?ka(21< zeH2GB^wf?^v`o`3aI2-Hw|qQ|@hnZAniAgiO`+v1!q2XwP=;QMfrh>Vw!)0qNpN=_ zc3J^yG)f4I$2JX?zDp7*#-1P(9kp~X?!ap`WV^Zc+TB^vB z8blw1<7%R+-hS&f#UMRf?WRGJCpKrq)cHx>xeYniq%o9;nD5Tkf_fYO_4V>tPEMvr z{=#TD-^Q#_#qX-f1?wwbj-#b!D=pp!yn~ue7yN{Q{wJ<}k8bDH?Gf2 zl(m_>sbXCVc=<}l0~(p;z+O>Kk=eu;{Mm-Z4&3tA89_*xved>cd?q-zMhkFH;<*`~C{ZX72`FC1AVbnv_$nUy#}S*1P>umP0mQ zAHs@+J2yGIx z!o3!sdp`Zd!lufA$n|_I@S+4a;{{xZPH6Z*TVqqGA$~zO1j>3TOop*)oE2I9Bhigf zHJiPtuUl-<&~U#`LCwlllU+BFvzRZj1Cu5G+< z^oEuEse|qlt%BF~m#AElS~?!gxi5Izd)5sTR^+>bTrn;b&zr;A59enTFK~9wG8@{QWcFp-|b!h?Q{D#X4wwppq>&;24n(RD|WlV}?yAqM`XyvOJA!zAY&>cte3db%7(aMo&$Rq@wW{7%gid zO^0Pn06D1u!Iql!k!ywoV(BKKM;{HL5uE6|HOa`UDba?GD&eF+S>5(!rnB)goa@wA z*l?YVn4LwGGjvh@RTrow6?cF_iRjzDPQ69dJ?JLr{`SLRXh$h+R+)Jdw^da1rV9>+ zv-7*7X_7R!Dmb2)LlUPwn@#AlUW9mEQFNXrqNuIA4ZBR#EJaCeQJ3KSj?VLtkaU+a z#B{can)!V#KwLksA*G8qUwMClJZy>;libses`ApB-@EWbV7e2h~6SAO- zQ+^Uk@{_tq^Cit{N0JHY0*F`L^y`wVxDI!Lm!+mnQX#NaWd!#?1TA9523|3RyOzou ztKJnA4nMZdh3fHp)Z_Sux-%KLOWrk?ccp^A6s#_f+RU%)ej7%1Q!O)}IA5wM)3s1& zxLu7yQTRRS49b0sER60)oU+R{lel-Ngi`Qqp_Web<@dG3y2NYts^hMYG^h)j>D^aV zHg#dBF%0wDw=#&l&k_q(_JY2qjaHL&WfalEP#C(0}~F^uwyHeBEcJ&!c<3 zX|&${;?~l}{aPFrbrN?HB}v_5K7UUt?r>(VmD(jQt>VZygMG4z0Z6(}faI$?Ln!Zs zamH5`1?BF;hRrvGstw;8=|0iJ5{^$y6jJ-r7VpInW=}l(x*01wrkqV%U33%B)3n(y zQmlUfJ9M^QE)S1wQoQ_H0aH+2qpVZ@^BH+BWJAEM-dE5R00y3pUn~Z8rXRUa>z|J} z%(W@tC8Q>#Z*n+vRsNPbJQPt=hL@{D)0?_{MsqM5vG=2eEveJ$qjYnR^#5w-qP zi)=(P>*VCQOI3Ff;yKhI*xIDO5!8~QuL`-^Dn>TUEbC@$wKR-KB+bPeW4&R}hbWOJ8m(pq1=n2ph1S*|k^u!y6o28Rn7>RzA#ITSfJ%D?%Y91|$edQZ&prMN zRh*A1g{-fb3nTg8^V+cI8kFbFM2iVFv1)atPRlo$2$2(Klb0hOwIH+yXprwkPrQd{ zCObLGC3I5jMJX!`MXPs`50vU*Qdgok`g}?}+1zV88D0EaJ=$Lh;EGo}8UrWj>k`Nq z6m#O2?>!B*wQ3f;6VJ*PYgrZ$zQ8iN&~C3CuoxQCj~D&nGVpo6F<-Y;1uQoJ{E;%= zpvO#=OXQ`#FW;t9fUME3At8^8IgOg+DHQlIaDo3rtB|DfJ*hhTN)-6kT&(x?tbM50 zQkSsRThSNO<+Dw`w8A zPTE4V_Wqa`nm+)&%j(HXHLJY#Ee6~6+wCQVGqEoPBS-2*T?jow(R2&!60=xO3l3JB ztyx~Fnb6F;xX^d=o~4!xI24AQuH7#p6-ys?DvFb1V^#%C)?}F}o%Fa!K1ab5>F22Y zBeKX~!8L$UW3VxtX{Zl~9k75{PT?XO4pui(Zg;vm{wmX==*Lph`-9#ZPw5bZ3E#xn z@r_@6%*0{#crIi_Su?G)pIvX#Tc}M(VYt=YR8Xo}rJnuj^bN+El{q(SxK;NPo#hhf zJ0ZZzN$o)@wV49|*Z8{T=S~PWAhu4jUnOA0ieWs8d8pmZ=n!20s1PAeF3%Y{8F7Wx z$2vYOBO{YB5z+^oJ07QxMJmAz%hfdpWpURf5D??GuUy^m<*-p0rZy7*+*aw*_YI>( zv_Sr2Z#yF3}72OU3-lQ`nCvXsQeV*^6&0YA2sx_Lv$Tq{f?sMG(bii&uM8kTSzb{nV>s>aK2y+V>N9LqS!_j zWJ)&l99!7qrP~*Bhjm1Nsj=aB;>5M@Hy0E4uY71|@64Xbr=S!;2%Nq>?*^TfcvH zIn2(r<$*WOcm$aIqtG_dTHEo6!(@9VvhNBx-ms+@CguLhl}%JOPY(cq`iN+3>E9k8rL; zIpYL?hGYfu!&tWnQeY|hE6ic9tbLhoy@2ci8WS(>r9o_*2OW}I-nNbQuS7owM-VmC zn-A5B0MeMNt6dZE?3?@ENVEL%;FDPEqlHL*zqcSEBJln=QNNYfJd5J`q8U-&hIryC z_EH6#)3-_;J0j@2M6J6$kBmvj-~Ujzki=V(TR&3IrZHe6gJRfqir<+g7aPYkmx91g zP$)@Z_Q#}*-&(2Ns!6CIy%=9h8!DXU?vUfInY(*E-^|9L-wH9ts5hm~ zt$Z;+2nF41DF(rHZArVx%V0gn03kfxohV#-HvdL$#MbnihQ%(tGk~+_ja5sfUnld1 z!G6Bh!w2UzD&tR^`T%_-$lU7shFSKfa!*Dn7u9joW`3bUVV`CHNqbDz2kZrGMg_E5 z$&FRfUab4463=T-_f^X_#9n%QGER&8MqYX-B(~8L!cJbHBF8NdS;1$wY<~v|-1g~~ zdp6%>9>4JsycPo0V$^V-kUE`}t3Q1beOST4>|hL-EGz2|#hfAME#mDIq!8(oSqR+2 zYZ`DPCPfkX+j8dic224JL?oiG2_9FY$mRf5oRt{!%nAt`E_nAst`~*rhl9zif@m6Z z@aYOgW6;M^N#}sK72*ZE+9ThQ0|;>XuanYgC|jbsmVd(E56%GmJ&t*0qcD_I6QO0S zZ*Pu+E8u+5aeq~L_a?jKM0-5RNP^hnW>3i-sDE6jHJeL8^KvddY`P9zi?m=TgeC{_UNM}WQG%sH0$Xw>tN#u$wHxO zaS~HfiTAS9%L!-D!R0j4&aoMVsByHV;Ak)}MuU|F(z}3qGjW-ra9T>->HVf|$h1TD zZD#>!Cb(@q;ZBE}u=~EO%)B={FY{-@tk>(#T^BJKBGdX_@pe=yx_s$~b}-0|{LITF zB?ZrVMUX$n#m`w(K}Di7$*C8jTBzq!RH~E2VCUaVGzmwV0enk2G8;9_I$JuN9;ipq zWJL71g^^vI zU!UB#u|#LK7p9}7KciMB%yyxG#%r$<4Qh|mLw(WdlWyKQ|Kx;|EvvHwW<~j6Ktn4F zZk}Qb<&@nDeS3(44R#MZyLo^3B*-I=XaWHdzd)?glW!GQ414-bh?prcJ;+J7_Vv9D zlcwj|FNb3DtUo5r#;Ja7W!l(5c$*n&DYTU6>B~myYYub`{cMz7le!fyzuX<;Xu;+3F{hYuM41ALGfg14^a z9S8DFl&s3PW|#mi^RV?!)J^((-9F^c-&2tYx6nsRa*!BIT9xAw@w7l<581LW$*4qC zZ`YR3`m&CvM2iQ3Jkr?dO->8e`|3PrKlU)>WB^lwb0G;^9KXF? z)Ykjy+3hCOgJFJGid96Tkg#UTw58!m)=Zw ze{5|mrO-g5012_Tq8>IcF;29?TdQ50NTUoj+r>50PGap_@Y%r9B?^+Oj{6)|A!oDp zUJpQby2)q0B35X`o-~c5w{^Rr*#+m`{Rm8<(8J0{xvpkeuFKQtf1*R)In&RqMEULHOkjTok(S_-3R?U_Rh^sR5CTzhxsmTKzB;hdi z`26@*{%#6V=OP%cD5T-)ZDvA;twT%Ubo$3MQHysgqF=s)&NF&slah|`y<5#`Se^l7 zrUjwh>{;!AnGYGnt{`>l<#r|PJG|OTmYW4j5urHy0XIT%{I-i96S=&mh?Z4-4pZec zsvU$E*6;-{Q06ZE;+_)eE4U}q{D`8Bn}~|tGxenEUa}6H3E+}Wc(WP z!4mKS?N4vY(fqktdvNMzNhF`pMmfp1zW;ujRrRL`tM0B~OwfXorpv;Q$StxKTMUXz z;j1)YL)iJxl{ykx#D+bQnmJh|dFa9LPIMJBOu5g1PKNhVCsyv`YjQafWEy;r| zwFh&}hh&;$V+DnAn4dsInG}G6I zV2Wc=*}7IVgSgsownt;7W)oI2`&Oq7nA24PR`{HkWGt;dZK-FMzoEAOCijExt9C01 zDfB9;P;$T*i$>9nNWNSk4kRVm=}1x7(pOv<(qk*FJWNK5jYBL^%EgJ^s|26q_zNJq z%06tnK{a09PaAI7HF*=sIvfqs=2CL7K>gsw?PYhG_;brqn6g`kZH{q2KE-~viE=jM z19cfeBEav_*dFV+9B=eqxq@yTMv2?t+3Z8t{^$~XJxs_5elu>jR1@ z^D+n3@W$JfUW-wm3rU*v1&KLlj34NS>i7H{@F89aq!(|7oF;W`woc&85Gp4hBxy}0 zfwCoXW&5^DG7gqDkYiiimzq668Tr{$%{2>=78DAIR|zy+jx2FFczC=%x|+uV_T>pn z`db*n8dI5pSx4V(ySK@S=<$b70^Qw%??0&mG%ekcO{5lId?RaJH17 zkc=R^Tk!6_p|kPb_PxqI;AQdCsL%OxdAK-9JdA#kd>Q3<^f0r3soAT-W|1#4qfJYT z@w-eY5pk~%3zUuVjfbSOUPCnemNI6`*9sQ(?6Yl+m8m+nr#K3^-z~hQVhA7J(FyS( z9rFn_ZCa7D+UO9Igd_7sr)k9cLImgw%@``EeaFgP2nnh8=yTtbpAw@X@`xoO)l-r( zc$ip7PI`E}Z570Zp7RSuVxhY!q)l8N(}Ie#!&ia^q{6k(B?8E~rz$zUylFw%9L#OY zDKN|o!Y?*aID&Dkm>N14Ey7dsv*GkR)8?kSOqe*FD@DtJZfsfW+5I!Pe%OwHP}mKT zHMf=-+Tw=55F!1qWva2y&}Dk}q&=~A1X+&`PeR4%CtDEn(yjAy%S{h#zLm$-aF!H} zE^eeqnY6Ucs-m5wyLN|^;#NYemMOK(q_Sh14FTiGTYO4W|Zg_6mMB)yDPzg@*&Z?w)waxtHX4teHxSDYbT&;^CjG|m)t`P)kt7H?+6*2 z@$@&v7!hl;0c`{3TjXCfi6wPq598ew7(SBQs6AOXCt;|YuDn1u>O;*bibZh&bq#w~ zOe-BwnuLs^bTuQC26-bH%+#eJp>!ayd?3pw1(_v+rY6$tKrvh)xdlbH*hL}Vh}^vs z>u-1~I4SOpY>}>95US}#p)T;>4GYHdk~}K6np*`7gb`81p+|@h_ZvsRK2aZi1c73e z!Pv;55e^L3;P7CEYf^;wWDc#yM49uyKL@1L4B{!L4Z)Z@+NiPd47mg$_N#aM@~&&n zN^{ioV=0Ep-K6!nLl;gPBiMj*KKCI=Xw-)`yb$g1jNI#KBID|gO3XF&7105OD7J6C zMNA-=49uYu!`KvbiZevekY<98eenxnMuo4mtdNy2zbm3pWX_EJu7V-0MWa2J#LESr z5}RFVejO|FSXh()tXgKf-80@dk%k017@qX-ZKa82QsXia3-j;{xjiEazhE@jUQltG zmi#)T2h3$T`$jL8G=9T06!-lMPO5w12%>~8vN_b$biki*;gny6m+*J_d+^sWyI7g;Qz(b65nYnF5 z^Mj*9LfPRSRm9hxc@s6H`UV6OUPKBx<6>n%wc-BIWF0_nFZ~e6*U@YxMh?M>%FV4k zUd|D_%1M?2{>%@pqE;K1LPrEpw|*!8Go`P*hQ8Igtmu2@vRERpRFLfe4U(=jw**kC z=Wbmj5cm=Zs<8~Qrw!-j(RF4Q5CmCUkUd(O;S0AwQpG+kpoEh&>kOd8Bre%xy>QRk zPLdclaoI^9T@hZw=>U;r3#3{bMEnKTBCUBck4~ctwlubz_r;k*-M|MeeD>?B`DY-d z-hJEeJqgaWJWG;KPjF~aepf~5M|Q(fZ6AKKu8B7K*0OZ3n}^!U+5Dwq4XH;kVfj&* zeGcH;i1w*)Jp*-2G+$7#-WFMzN@eA=;FZ`5209nOrk*9Vl=Ssa+T?*W@-^UpBt;b| zr!rYaNj_i~1+%ORD&r(2IW>YeK;q-{t(3RzeFCUlK|$vfaf%&-Y~vKOuOO%QIZYYg z$a@J4Y5#}2k7PpjWMX-HC*96n=<)<$KHGqo!OIFU*C*w+6@8s=MG~XK(9v_VdW@T2 zl^z}vH+Ov^i#CjDG?<0N<~O5FB!T-zw%iy#t#M8?3uXhzioipz+|ps(JTfdQeU8JT zLPV$+Fgn=8*V}@~D5mYLDA&>UXt=>r_`;O#qgd6Ow8{?-#(P|mE8&T43%yEH=&E(_ zp{a(5-ezv}Q@>5&k%I)d`m`$P0qhWG-~VKTD(W&VH9M8NMLdNlo4(DgxrH0U}<^oQ^fc#}32 zSIGlbum-(_{LE*+p9Jrr=j-Y{(2x(HKWL{!M%?cwG?*da(Mw@(k-vlfS`wj$4w`HH zvzk8@Fs_q#hcgZSTh!kPlllSH;Lo!CKfiNFzoShg{Te_&lR%X}TEb`{`-3+%@|u{~ zpbI|QIW>tQ8wX<)u z?mx=;y$*Eu1$s1LlYWHzhGGW&_S0Anslk+}YAM&RZzi3(OkG?nNYWhMdrKAfiN4?V zpKp4Ef)SZnDuNT<+UhJE+uD6$k6Ycr*3DK7&n%RG?JP6k{P){!5HP3=f}ozOKvvDF zUR$w3M|>pg%w(>fgRQo!-MB(pK6q+LoyprV{AN{!C z@Z|o2l|KdwY&5t8ZHab9W$Q>7`o|Am(xqqpry5u=+Juc?U)#+jR%X&mg&r?uxcq$z zs6oV}4OEfEWw)-Oe{9^Ei}RnMh|&DEqVtgky=;;~`T4f4M04L?+X=m>>%fvyhzt-} zw*qZN6@3!}lShA+2>%+t0hD_YeYTP`&GOX+(}v|NDMbC%uAU%}E*tf1C=$%7Z97JE zg5;+v(K7Y;MfCklqo_cPo)w%*vPAM9c}N0zyq^n=P<*0VTpv%x*H)UP&SdUV6nVSg z#`0j$$;lCG#MsdZl@>pbNo)jn#?Nj7fA-QUI)k7-R{{QXP_AlB{#$#z!?s-E`SjPV z{h2DaJ6STE{)z|GcLHwoQ+aD;>&dQ!YE$%)AF=yr;;-UC_YqSdLj5NKT0>#KiwyrB zA9ukcTFU&FJW43ogqT9Y-{sGvH_`ZYi#^4^>jHbX4^3^);kEfth%Vba+FrQL!NI}9 zm#y(v>h91cFejqMm^pylm4XUC!>ovd^@%Z1MumDWc>S)PH~ok^tD@!z>yW0TKn%f1UZ?xg!E8d;`u0=v!hqr{%PW6R4CdGdTr01XED;UxaS2fUXm@mzk<{ zSpyiQ4ZGB0yi;z8@z)kKN~cr$|nKG{YepE7ozEiaSW)0 z34nZY+pnvc_NDlooMdL@7J`~e(7r*?z>oZPVc-pZP=^s`0EC1``;_aSog|i+0=9#c z6uajl?H>wQCz|L=$^9aKCAX?O@WHpMAfl+-TOIj&wjEhF9KbVa1WE=<@AU|LMVF1* zk6ts3omsvn>{^YkHI=<_| zntd6ECW`T|WEY`pQ>{=7zO1=zG}qKs{?Tz_HrO=pxVG-A5x}=*-cqBxNfe5k{USa+ zO_ROh1VA@X%xe9uN+1rD0Cr0i0O9d*A`l2I(3v510)%g}yq0GSk!rKc;?8O=djqo1 zsX(!+9lDVR@RBBupuR+Ok9a+LK|$@xWKC68n3fsYzltA6UkQx`vh&+w_TG68fC`Kz zTJC>&NbsQ3gM%4ga2K)I(hrzHOgDd6gV~Ic$O&izqHr-_C+A5Zrbk}_0^x(QbaXEa zz*~wF#{^uQ0|45YetJt#hVFP`UbSWb%31ZHKAG+RkKJ@lfB^2nPqIZEk_uR^rOrpz zhJtABOB~sp`$c?9kKuBG5~JQmP`OIQ#M}n8MN>fALg?axrwOdc3Lwn@0GwriSObbB zivSyW^z;POpq8M!s8lEreQ4M_jPw1w(Y!_0(U<28vQ?T=TI+rRfu1AmBI&wB6Zg2| zN{%e_%GEod4+R^^k5~s>HvHBb_OUlyc6;prGq$q7P|qq^%coxSX@QRTK^16@l7&b@ z@xM(t2Q>I@VlZ_wT??G?3_x&ABqUY{`+IPTK%~G%PEMH@b+|baEpdCL^?^)+(1bEQ zOg&-N7IzD7mj>9EW<*TzxSelZHW*V)Ch31K3wP-MemeYnjDlbN{_;kSqtg!4#%R}L zs)RYxewTkW{`=Zvdmx8`Nneux=lt?OdpvD~hly&6C>S$clHK2Fi0}eSeQh(|H)w+G zTb%S<{I4d1!@wr9wjMqoG6wf<9mccA{o-iqM;J+VCy=yPvxGj-Ad@RhD*UivGjHhpkjR|p(y zOffK9|G0!W_^VMGaqx%*^UBG0;1E*7OEmv(>ATY4%r5$I&(#*&*Pp=S`hUki4Q3Lk zuP0ibk*?W7m-|1*`)BH%XbHaBt*Mnp%pc+ZOPT@HvAd5r7bd0~VAT$B9NV-|uPssrf;d?mnj~XjvfNUclPpwoz!~>@; zEdT5{@@v&8pi2Wx++AB3%mSVE{zr`lK(=}jZY_C07F)E4i~ne(AIw5j&^d!g0|m2v zlL`N8OxEbaEB2t;A^ZPh8!MHaxpLg*L%`W-nVJFBYAuChS0}C=iA{xVoN8%dLT=6N zNTT$O|I~rOgjhzwHhw(IZq9fNq4JDo!fc?wbGj#ou4*CX2Ib_h?9PrB$3SA3>a%RR z!hb(hM(=~Hw@Pui{2pf5z5sq7&~TW+0`=cU`<6!cyLy^b#B zcA|S7{rr%|0GlWXNp%&S{D_%VpqHAHr#!Hor65_;c)vfm>{XG1W_2IVEropBlFXR! zuir?G>!Yp7z;Q+Q9P2;1qyigGeuwc`QPcJG(aNw}`2e!Ca;Y_@GqQ-~WZghog`34n zTE*?uPvKyh%HF|#Wow&;(&ia(iKwZk0??zFGniiirG@k%1%oVWf3Z@zxB=>6F4 z!Z*@KJ{Dg7sdDrKbLF^Yi2L}p%ZoTB_StZ5&qu1K!sMgxgsMh#-uKx&Nut4e4(kqfgJ6y{jrI`p$w2Jyy~PUH};j^^@sL^pmZBFtJvJrEECxf zvG%3@)al2JpqhngkGhT-sBjysl8v;lEl{3JaWfby6{qj8Xe%q#Jbhs!0MAc0b{Xrg zGT(XnEE|x-7e6X=x$ZUf@NHD`pB`o@Xp{_Q=BgMf2;#Q4EQi;a9^{h?19o(3y-iGX zsnX-DLY)8w_1e)}c_Uh0lRfz<#nl7eW!^Oo&lHaw2iy02;vG=W zuKV)c|15|B9Jo()UN-X=416hwSM3#`wA+WP#(8(j3tC_b9jCYe_ia(vacuOsBztxg zZ*Xm|p}Ql$){$&wCg+&LXzFu>BWBXT0ZHuAdrPA-7@TvGguZ*BorHWKBDZjGDxl1G zVoceC=c&c%CoxLb&ds$WUCvdYXuFNqE2A@RtwTI`yRx8H~P;M3Yoy#AAKGp zpfcv7U@s#w+#Or?z3uv5D}br1FhTY^r4oYlIkN?x0Q|1~5P7_URvZuZ!FX&$UO`B_ z#O7_%5R}dbo>vFz@qNulx3ObHh^c%{rg0oK(>b6tXt_ zSb9Wz*A_U`otsl!)yH3Ty_G9uBrzD?EW&@6=v~PVT6isC4Cw!N3rV35gr+55dmZVX zQQWirwW|7dqx$s{J<0ifu3L=XL&$wQvW7ycJL z+>hmJRdKsFNM1bBK*HcBkk#mF07^`Ua4*(eeRJGx+rcqFk!P6FA<1o?P%`qr{It&x^wEsl~DL;x=HZ z+_sQV{{JY%O=n1{u5g=j$1F3FF~VOKB0IFpxDm6nEufTs@kQ9;VE@UHN2$@`NA4V@ z%b%>D+VtWuF_%*FPb@oGLFvw{-6>QHCif4gohYXLS>@Rx)9|=5D-ZpwG~Bt@#b3qS zCNKIW@UOJ2s@oR|3*dSPM_DX4-}}6YDg^B|dNUoBg-qqo^oVvc@a}`x};B4yc zSC-gAOiE1J>{j^lFF?x(oT7KMr&5z9XY3k;FS#uG);ufu1)Ul^M^-SF?ve3#09zxY_AQn~w~me|HaI3o*0hJoYRy9B-n!8;~B zswQ-D-{in>A&4Q?g=K!@PV~vO6 z5Dr`9$a~&t^@66A6tC4MRxU2i^@(S!>bo>z$~V{~B+om=d_SGVN?vpt8V~|&(La<} zmjCZSG^PP=<|XguoMaSFdutAJor!*AS4MZX7dRYmMScvI@0H$KW*nW|pu-J2iPm_N z!ewi!k`!6tGso?ON~xE|qs*h>{xMNL<}`>U*7g2ec9pJ&R)LM=+_ogEdAug3KaY(2 zMKRZ&X_YC{v+}`595-^q{j92)^a!P~CN~BhSuA%1SOYo+A@kcQpc~rnolUa@JP?$S zsId|CcSF@z=8uq9TBxhjayGLmZ_UskKXi?f^yQUYV zGHm`>m7Oz$s@R=MK@HBidceZ1*CEDV_>5vK^?M-3cduyLKUaBh7kFdgtCs_1Uq~br z5r?A5HbvxvX-_U^sTJrfo#f*G7a+X$1fC3Ui)7B{r$C9q>sO(u7~c4 z@Ud;B5*7@>fHXgo6I6JaqQe~O{_$a-s8(aF^8Qg%ft`5Wr#|_FTff}aw*UIOkrRSL z(lwHvtx(JI;TNw5oe{&TA6(z1LmQA8K0i-INg&Orlsr?vdTuCMn&g$X9lrIiD~etm z&w}PY=IR~Gp_PHZ7Ssj=`1(bC|M)m8|2CXfJ4E&1;YUZODT;(qtP`q4ku@1ScaW3= z<6?k|kZ2P_e#bgSq!0yDK~jxm_^tK5Y#o1-HklSsKNQA@Ox<3{v0t$>&U!}n%ZJq? z050w7HR(NiTx?P$#39sGv%KEUyq_1>CtW&<=FY1#HOe)8SH4u$4H-3!A=00S0hAZ~ z$ekcKI&usGD($Ufq8$^=F+pi}0na1+BHVpJnhAw0p`SOj2OD}P&eIImo?cV6Z_`k; zt+y}TPt=H*vW=wg@pnV!IB6CJXb7&HtQv)u%ep7pHPJ7v}R7Z&*Dm` zS5j7&UybTgMApVCpE0UBjV7^_JtOzT?54XeK5$R9nZHlo~L z)lzs9RMthtI$Zhbpy1Zjxei&ikIR~FSqch4F`_hOkYuMo9VX3nRQ8C zRt~5Az}8bFL+WU|U^cvTnEo2wvcsX3eN4sm4+v&9A@BBU^Y@9+=%SJv%crsj{is!4 zcNj}^EtImpVS87DUeV3AhN?%(J2`_NEJmV9PDZ|&C}e;0OBlXxks2pySK}sRg2k12 z_TBaVE)#2=Wro>!YO2|4e+#zv029@;;?c_ZRyLVp#_D+3ty8`(?BLWgH7&&tqv!cK z%7$d$*v7Aa7{b>aKCBbFKVLT4drLM>|0sTmMc8R3Va=kqzv8xnlUx3R*{%GN`1Hi* zC)VY+PZl32YDX|ZCyyH=ruGO9c6^293a@Xt=y#f*JAtk#7GK9r1kXxIu9zNdd^@g9 zDqGwxwxGyz`ASk+;d*0{T*3B><nP4zCP}?(T-a#{G%q$yiGs& zOoVo$i{$5>W>Jzy+onB*T>;C=NrnsQ_7ijf+AdISg^?q1O@vOgufRhLJI`#48>?C< z#H2T>hn2-l1P(mHRrC85&vw*UcNw?$@?6^#&-RQA1&1RNMcBkD1uCxM$RV_B)14M~ zN>@MDDQo9kSL`N{vpw5MCLs+M^muMHO2t&qT%7hJbfL5%OPaw69hCPV-_$VugX2ko z-ZNO@T}meuPsXkAGWYtON_Wp#uTUf|Z@B4`F`a9BWfwc?KkS+Cg*0zxb#JP<3Mgez zw^q=6Co5B13e4DAiYcuyrn3mIO&V}m?955e*;9)cbRu_uNy@kxvetULy;@|6>l_c2 zyMpaIV0dE&^8=_aN=;x?vF*8it51|j4uQ~A=(+vkC?|et+n3`xAt|tT!x%x+&ggsi za*yqwKNbOg6Xd0qb-pq{L3x*!3(*HRy(G;CRC3G8MPD@!7?$|nkdO^0QC7EbH#bkZ zDm|$)ZgZh&cd;l3r99{hEG^#^DO8}(6Thf)kGUL&?0)*3;_<1x`I%1EY{e5Zg=)Om zQnJtfiQX@SQK-*Su8OG=@TYSD9^#D|9gCl`GYyp`A0bE;*(?TxudBQ?pX?Y=Jcvj; zFGl#s&yQy)YFKw9obKqbcHCB<8P9uOh;Ajc@2@}X1pAA@CGJ8Y@`!%tO$7>``en;O zxwb!C0H-74qMSjJ4M!`Y8)j=nC%lnq0K6%={IbY#vdL-9Ro$$HLKk5rF!;LXMe{67@rub@)+yP^>M8H08 z&!zGm^T3Pm6B?Nh6u@IvXo9&_^ zSc9T;SlM~IO@xm$bl@{jMu%<|B^cIRU8xYnyLG+5c2du2g6QO<86=FD)R5Zv$gIYF z<+5fG&JH>MK@RE$WtGS_Ac33_K?3uHk`ffI2_zd);}mi$+}NzaJ!DT;{p!b}3>q?i zyiryZ-Q!{u&e&z?(s8h?Zrkf)pkc=pz6$a?A%eQs_T#~={s+}%7R0MRhX%y`8Wp#COG^R%n zMxn=+dg~*?h~DX_%G_&!P2shU`{z^x)C>!65qI=|{5KDqCGk>_MEgbH{r z<(IvDn;pz=miX(|&vo!aI>Zq3__BM?A$@Yw8ENrSZmF41A-*7$o&3K3WjXr&^MoGq z6r>ND!{5c+B$03Eu)j zTblfZvU^KwHFPZOpY_nKHM*RP%ss5lpX0YLdsJfL_x`8b2qXq>jxSxm0lmojohdi7 z%f({@(E}D*_afO#;dO!NUJqoPKWBk~{_<~bP4N5r;SslC3tWofg19QO8;6riGlL(W zl8o8DHE0A~JAMus=nf=KgkF^hM2EQCwEnGKGsaux1z$2h*E%7$4}$lN+|}*do+keR z6@QY(etn(f(0Ue`rI=B;XFgz;b+IWUh6+SO+t^`*le0r zEgCn6ZJOgd)B^ z_-QB?A@8`kFJDqtM|;5@_d)Jb;-Z+s&sb|jN`!Juf2A!`^XE5(fZD(7W<>u~`wEl| zSus9&{whVi+(OvNxsAfkd2xL(U2!dYC5?~%r$hmn7Z{3R+P$AMV}kBd^Nf<`sp#XG z3>JT~TZ<)eQDj0t0)I;Yc=;g$tT$NDzk47(odi!{7>|S*Hl)w}65i;rET~5Hc2|yc zGB56}J7*+C|35+p^Ea5E)3mrE2Ijv>3__x6-Lwclkx}S;oSSb6@1A$@K$}6*nCWbpP^E zL?(==4V^Z6z`wg(4s8?t#fl=wnYakX$pBfXpV=aheDwRX>C)`{09mC?H006yOeu)< zJ1|5bes$$-%$pe4I1`t^PkfVpnr1LM+4znq6O#yf8~p1Fe%y6-%jF^U4d)Qu|t#g(T=aq)Z2uwKd`wl(IrwR1_4xpidZ=*Zo37;N&etyt}D7 zz=oNG&b&t_jaDYb@ThJq3Qx^0dc87OF@0Vl2>?!0%6?hX#bvn|L$lhOx}UlQhcj=h z8`~P(F06>Nvl}wHuV2b_Vw|a{0A{|AVf*>80E>Z;)r1MRl=Y7|^z908m zx922e&di*dYxcFTy|F2o_gjh+qvwIaU-#ySb4zcERG+_$h zO(z}qEW5>)d;?s}Ud+#|#Q*q=qp|t;gXm)3If{$kjp1h=^7)VIPG=HdaG8IF-Koy? zI~!wSm`y+TZSL`2tr~c{-t>NY-N@_wiut|fm)Zcvq0JO>wEV$nyPUY;u<2slyuT@K z2B7!eulAj(F3hvCO9GnI9bU1exYYygv{+zipMXSPs0{w}* zP3;m*YM%@)URiwgWc?Bzd*l1uxpNUpM10-jeB0mLvh!tveDN#M3!j&bCn31cuJfOa z#H-u|IvG5Md}oIr_!}k2$}S4Of4=KcWj0_&aXOLN;AR`TH8cCJU2Hl;?qzdz_5C5< zn(x-%t!}!#(4Fq95U^T=_U?8vS_`yEG3Y%19nl@jbx_?mbl)t0DxY?4qQ3Mq!`xEl z9IYuAZ>^bYV29|qbWQ$e*X9?F?a!8;ra+7x?PZ7joSyL_@(NhNXxxC*4#g@EfQ24v zO*IZh^oxM`aW_c;K9z(}TAVrrJ?NG|r!;z8&Dt~&=Xib7lo9n=_3oROG>)^+*aOYh z{&m*3Fy+jA8m_KReuJzE=a^T>?`k&B#r$o; z_oAETrd2%gj$VLOmv2JkP@aQrIyY)#*veojluTG}YP>5QC#mJ1Dmv_+!>R42n*nMs%*p9NI`uAIQ)|_bM zyyEc8!Q995o6UDi&*qzPdJu>d=l`)w?XmbFFWgLJqY?q_L^Gt=HgM})RXH6|Gfhz8 zb6Z(IHE%X1nW>2KX*-J2sacBM6f>b6$*F6y(gt~+7u9=94D@HOyL{>81{@yb_&bR^ z7F}O9l`smtmN=VFT(sP!2P0N_Bt+0!P8WwheAPd;d>kg&6z)2i(>xv`Ri1Pz`kL`9 z)VW@D(tn>HkT0(WU?_p4{YHP8B^%}hOij&#*EKAVFg!SO#2P!_C4s|9JdNrcsb6$F ztoO}tEFR9~6x-R|5&T1Qqfjg`Z0dvMQuM+-ktFi zcWigsJ`dEN*J=7jgQ#x1p7i8vd*NO^DT=Ha3tEv{^~JkXve9Q)Unv}@Ahe1 z{L(Z3WFB8o3lb zL4k3i;v#%y`?u4p{rz;d=8W5XQl#ViSK6-%ch}d~7J_pLh$EBc2^i&ISOQ{|(N0Q1 zt2WeX2C7S}_NmJ&Zlo#$x#-p2JA&%^30OCl>egOmpq`yccO;*=YWf^p8k2l zf%!{{!64fuS7X$>3_+V}QkT3qFcF|3$i;!xFX~-N;7c;loGeyCAr1xfVq}_PntIn) z=!T3>K}5mRKYtwpWT{!g*pv%>S9!fpsz>6!#7H2iS^mFg!IJj&I@ibTl1hqzJN2+# zNn0_SLtV%ZEzsb=wW!P#Y#-?t#O`$$s~Bi3KcSpj?AExqHAgZxcnlfD9sxD#1p12< zc`o^rRHMrc5|sE%``LLK_8-1Kf3y@ia4g({Jci0d<rsb1Jmz3`}{ zUq^sM6%qjcem@O@k|nHI7n`UsT40x$4E@B_wH7lIF(VK27XrimJCDIk6~fG}pw?wq z7Qjl4dILRT7&UbP9t0`Kw~*YE=wyXXeM6z%c_l?Zyk zRZS3Rsq%T=9M*~W45*~3z*cGiPy$x~Au9v^FZJSUI1xP-aeT$NlZD39ag!M>4=mag20o79jSZ{kjQ@`6nb2&}Cl% z!8BFXL`EJP8=L*D`jH1T$a^pEj`}Xw16{a&P+DXE_t&U55J9DL;+J^}l~F0I8$syK z3~VM7z}^;sDSDdyMvc0Tk>QT%t>uy9F{mox2qjm#0wDFt1QD(^n&L(X5O6@AsdeuxpOJ0Y;^ptQCN=@MEvI-ce znShEo06K-^)-64tnJV}FAFv8Q0UqvGyXap$dc_fU^JPrcc(#a%w_HJ)W~Mgqjw{-l zZPW@mS|oXzl#~UOaTV{^8kFmMzb6;(2U4{Hex0KW#Ts21YwDwnl4>dt@RD{1Vxj5^ z7G6-i6X5nYU~VQta*KTxR!|`2quFu%lL4p)zO*upeyhMcwpI{YbFa8=iQ*OGut@F- zU(H*^kBLl`dB3Nu0=4PI+{%bQ02#yD7u2ALI~i1w>ELB}fi+0-wHt>Bcp!RjfV-go zM|+?Tl1N8RKZ}LU(;|skb_EQ;l(PXK0w?1O%*zY0=jy9CRL>D`JYWR{_Y=$JzzpOJ zd@6@zEEUM$8uM7Sy~S&PolruFq2%-zlxVNz1aTK2n72`)qT%iBosY8x>bSSTvwWtU znyz0vYAl_&B`{CY z;k3L?+(9RQ*Pl!<^?j0d~12KdQ+$A4w}$WvNoMN5FHjnz(z_Xp(}sh zaFtoc1aH~V-jn1M%dTfHZKE2|LxsevCj8y`Zmy<7b*^AwcX@GchPh60K9I(J(715M z9=o89VIk)Of9#aB7f6q+0(%%liBFM-vL6+>qS-j0@|Fgl9zN8)Q$PM$%dR~N%Qu3k zy_Fe-pZFPI;+uQDxkFvYMd+B=1-xX0fC1K6xZ*oXqlHl_OJSq=z0gxqVm7$v#%Qup zL=0hW2q~NtD)HF~%$YRs#;b=?j9M$BSfr>-6(WjRa7)0oWQ;<#_=e|E!YzYJBW*Rg zeLj?1+-KG*Yk4+W;3+mW3J)Iv`k61cqhj9BBI~%>*_EbzR*W%)T+qn1g@BX4&Ywwx z*;mU!c_PmBO$t_=3M{=*riJ7jo&jJ7v0&b5VuJd0Wvy4P%sjMxt`ein)f~xI&7S6+^uWo*W!B)dX!wsNVNV-ua~+bu8Ab6y0r77luq8E5 zVOF?M6gTCn*hx%mqKPQHAkj>G+wD&dQeiY)zusL@CSXC;xgv|=N(M{7EkBa2S|IE;yj_4B#3b2xyJ%y@9I3H|5| zQch(aYq|*Hk6}noWfUfj@b#ULGymvTnIfYS;Dz$81Hxldw+BeiQ{~!JT%bna>k`?z zampS1=ihD)CXs_12(IWr`AJR_`LuS9o zhb$3}UO#ICn&A4azV7FD#uY(rt`c1=2{G~N2{XLJiIq3P^5qvyOv2uBj+6gdwEIT( zoX1tL7ag;J*Ouev_dN_41u_un)P1oZHJ}!b!@go9j3JSj0xFwNpN>{;H<6pS7PATr zbQBfRJ1Y@8Q%O>>22ALzy!s7#ZGGEG51Vkoii@YG`Ad|7Kp=`DBUlOIFZLdi$0Kan zJIUi&OsKrN<9<)8cbSv=Z%8f)ESEBY?e9_-i^KU5!IH6BJi0qw_N4GOyPl2DRLJRo zrwL#YUB&3OXb9>&*G7U5%c+B9g@ij#iHk50lJ5=07-RjUtjUZj#mBXvBqV>xCyff! zXMc-9@}DHW{cP>44B=Q11Ecj&X&_O(>m7(-O#F77Bw_w!Ai`;L;Bq2?`R9X|eJ%S> zEXRTmxbOcx{R<0z!;@3v7k3Z=1FH&t(j7H}fSF{02xW7aNr0QsgB3&|&7Yv#EQBNY zI8f%1RSL8%5!|nRPED^2$z%ujS6{|oNyE;8ck?Ydr!*VkCUqgZ_4k$+s~iggAVS&8 z%r0c&SO@^k%Xb{+OT|th3fUKY?kR?=cX@;RufL^_T2p&6fC#6#$X<=Z+7bjyz?^XF553iYlOxZn0r(}@aZk_hf+KEF+W7xEAvU5KS`#XzgH zu!&fowZzOcY%|ruqYvf}aK6ddH4ta|=S$YAL#))m{V8o2IUC^+0^Ik$ry8!&zD$*kJxl;J%eOr$`Kx zUk%(J(!N2?Mc51`q$h(W7|2OZ5Z}Ffq&B1h=FcveK6lX4>Ro?8^JGSHjX4Nw@$uj0 z%ZMu}*i~@fwuR?K_y0fmZM_HyucZhXpq{=DEY9%i`zxbrH$Pu#1O+I!fo)X_Ff08N zaSjxS20_T>ohuL4g>?{I<*!LgFMz_L)W3fp2Y^^<6)1UU0Qp}BCbKG&TjdrlZ-BZn z(-^1_f!q)0PQ}u~{D&TWh~09!12f43&p+Xqe3*u1AoY)9r@D5H3ursLiJ@;f3?gAy zuOfq*th*tSpnxf!S=Ouus3KXYU33vqs)Lo!et%`)D z{pc+POxxZ^22xphXp%a|133}gRCxf~1Hpr6{D z#hl1s7F>`T2}o_*ek}N$tUmY|MxzH09t?u@h%fvKc`A^!9s*@QYz0C4PutG+hxCD5 zh=!(SYWcla8-~Hktay7Ium^RxeSc@DnI$MdMGmxSCX2hRFft%M8*6f(t8xXgQuG_w zDZyh9aQz*@?+rJAmOY3x*`Hfd;T`AblzHQuLe8HYgXppGdQ41A@=U#B9P1S^_gN0G zrKI2^-4LMAEC4SqE?xo3NKzXFVVG(&Q32mA;$9FHq;JnI7`#v=mkkl4-lc`q$fyNH z68C99I`D7n)Pvk*PC^ps|HNPDceZ&Bt<*)+?Saj0piW8Z%>v5I_9`WgO-@d(&k6DQ`ke=N^Kpk07$ke=2COkbu|t2Y!WJ`h@6mIS0zxB1IrP zP~ThXJ?O*>Itb*E@aV>1WI&PF7!c`sO^1B_`t?2#vUXHK0c8W}u&)VCAS};gj%;8x zh7!9VF{JLfzuivaNqd2JVhtra9ooYpDmq~k0XYZCU$v$PxbkhQ-~+>8K{oQT@BW}} z-hvwG(SDH0!Ns+K6#CDwf{wWTm602^f)A-%aZvTH@)Yv|}?0_~3t z^=?qVC`VbFsQo9D#J;AA>GnY5z?4hjmo=H`xW}}Z8jejw#NhX2#Ijoa^`iMl zVSa{%D8|;?Xk`f+WHjZ?$-@`IvH}7Eb4{;5`ixTg)&lQqeTuO6bMeqvDLmdG_nz@4 zOad(5-L2tZU^vlwRCm>b72iL+`(w85lt%w;U9bQHELou&4`k#rjc^cFf-bB(xjGg? z?MVdI`iIzlLG`Xa07Wb5cvI_88PcH%zIZ<`An`fWV54DH=zzWCoUkMQFuVGn<{{A>cbLL}b;uA{;JM|&*)MD-1z;Tm z04pgPxdeh79K5`mKoF}Da^SP{0T%Ex+i?XLccz0wyW}>JBBZZ7Ape$~YFLdAST8hf zZEYu8I5pFg3kzBB%5+G8(%_3)13+a<36Qcs-jTm^=N^|%ZdsofICCoQ_4bZV0b?JB zZ*RR?X7|C~Gqm_VdKCob8DO#gIk$t$#|8j*(5!eyNqu;rJni_E{48<8I|b|k_s{p4 z(DJ|bU$14fhZCH!G%KUPhH9ti+`G!EfKHM2lUP$rWK0>(lcsaRi9P&QMoi3j`sE8o zLrW_S95w06YU}ERx38{oqJZCQVeK(kkbg}a;Y3K`F`2+?)3AU-jWM`~rvogF#ERv> z_&~qOZ6?SM06lb8{^$zhS}RmX4LlYEAlWhjZ)AX8))?56g61rq(OeU<;_p1$j|&2t zCi>H-<-)$Z-@f4|B?T+tJRUH7{%2UPH5*$?3a@%O5BB`outpDjoG_*(@a@6mjSk>0DTd{Lp}hEQdd@vFsLxl z*lGKt;|xltr{S^pL(dIu?d%%uPC;?)Kvx)%!$2yh_hJumaP{+t@6vHCc6}7V0?OAn zCMvms`Ct<(p_!@Y;;`H}aFiQmiIwdzZxAz}7q)u8OdL?}}(hX`X zOp{8@8eMdbXW_B8>^@4Y#(LQ%vS9N8L>1Ph@ZlG5|2=VhmIkneA@E=0QTVU9Hx6;w z_aHjq0FFYbV6k^K#{(DVccy`F)m3^4U>l@6!tj&OuGfd^M)y2$p-u%Sb;ks{yFes{ zFE}rbPDm5r3?kAE-*za)f8&iK?*`I z0>sdS&%J^`gyaAMIx`Cv+I0X=Wr1*bU@(KP@t#?cBC!C0S@S~y5LbOo6#j7KQL4Y z2zniW);aKpr)gK52Q}UT`d85iX6F1}x*(Rsg%b7*xSg5^p_tS%+1`T^nXvFXHB@ja zs+bz^MSwQ0AS~}g5X~Uc6jq$2?T)+zj{pa5?&M{xW(ngV(tBq zNEL50NfdQ|8c1;D$M_S#R>0g78FQ^l zuA(Jo$l%HbyMKVI?FK19t{o}2GJl<7(v{a?PQ-4HxKMy(-k_9pWe)LLp`riAJSeJP zp+Y9UwYA!LyG#)PpzBrOZ9TgvKD}s$k9AyY+l|ObEauB7yDbzj)-qJN&t5!xc3t)r z)itU@YvMiPQ3Acl5!Mc2HHl%d)q$oc2!b=0#4B7Z@X(EE6>GV$>BLB^oi%i-(Zvqt zIOYG$@h@$Dc`bJ}3$)Ut1Z4S93CC%j)fmL6URKXu0_Elm`3IY^hxz9xljf3wi> zb>oulG)MJjq&;Ye>s6+%B8>PsAiji4N|7$ z$pyf=97MT7XXyDsmJZV!4=QR;CwJmV_tz4|Y$jo9&>ka9p>7EUaDTh^ZU_vpGhqah zr7B9=)iV`4_uLtXBefOyOIK3T)vCxx)J>~ z=?XV9q%8FE!Yp25DR4-j`9H(ZgAj)jA1Pqb&>Q5-Du1CVjCLKn*}(|WVp$X>+DS2- zD(p{^I(%5Ega}97XWijVgOs4-!MxS|!otPcwA-$@Iyo<-<;Un}Ssfi&5d3gM( zcndc#?t@FxT>d;$Fhw_hM^NQh^EApQ<*&B`{9C}&hR5r-?8+@rdKO}L>AAKq&4g&} zsNWp;SsirVKSmEs@X{Vh$>>GkdX)UaxS=WuMBF9Ev$E6(6WzqW&fH;IhBfPh#6C>U~U1AF#Dv0a9(_@+1BIU!3nTN&Ai;+yHMP4z@1hGz=Eg zx$Z@v3O&(RR11vAy?T|B;A zsHLT)H%DOmid+~zQv5ajN=9z0cP1?PJ0jrYCXY8Kwd1Hof~JI%@aLav$i$Cmw9OBi{#aZO(}*KH z7B_#-$CoMPqq$;(P->O3@@q1>(l+lCt+LL=+N~Se?P3D*#7Ow~Qy zQdNloFZa5`kb3q9gFP*|SFPXVnvzPcSeWhF49SD|{p=3k7tjmEv!h@2Hy3!Gx|%3e zprSk9njJ)vl5YRd)GW=-j9Hf!n}t&a~Uxk$GM>a=MJc}#~|@7gHaAf z&z{wrl7*j#OKWcS&XpLLMcHTavvNy|Ox#yj!`XgkdVg>|wtUm~)H(YaE$jKLmfMS* zG5d3?@+UHI^H67oL&}Z*Uy)>Y@}C!CUqrTfAnSY3Z*mIjm^%1Gk)E@9eprK-@|S1# zq<@zM)X^fTNU4|sZZqb5i;BA}pet5pgKFWKZRw3fx#4J1|? z=rq`?YmtM;w8*kxg?CgNRG8;jDZ;-*d*Khp!=^oyp5H`={kp1bIFc{hNTnD-Y1I>$)f-F#>u04iu`N zH=HZ^Vhv_X+~Y9w#zBgf{4S=}=9}(YX5XQnBMe8v6 zxge$ZaYtK$Te~y%@uk<(YXqBImAf69vg@~9ThcWog}T{WwHEgCPUdfvYHFISJy^Qw z#bt~Rb8R>ed|{y97uoE>vK~@e(w)ej%80Sjw6~z@EHQZMq-UJ?*ZnuE=4AU_D+E0L zst(VXU6mjzw_UtD24mfPv#NuADRTBoNx;m@wuK4S|N6*=y^bp(pk#ma4sEZFYiPb_9Z4$X1p z_l1HojC`IB`SZm~NNWJ=!Bty0?kg3NYGWZ>L?oPYOUcFb;lF5~0hA?e8q++KQMt!*&-*CTxfl+m56W+6$VcFFQ<2q$!umD( z6HD7*v}uD_UZ+ z-8bGqmR2vHXhq9UN+FR)`i2w<-aM-VU;uu7HX_#gtn`ZGc3nrJlL5x(`VmB}p-O0V zDUDc>OaCc((>K^rEbwu~v7#1^>=^V)MkQvoNhm~&W?#=HspEq6>R*@gLsf0&F$ouY zBnQkp(=#ON`lt)l(48PH5yo?nK>lSIOv+pmbEA>hn!=GuUd>C|_X+RaC&kjoJ!0U7 zeD{NxydJT5+I5HNLArP^A)98@r<)O1BEt2eZ7s-njMRseK9HrP_3ZLgop*%D0c>NQ z@c3pYD{5;*`8!e2^G{=?xq>fe;czuM!;*amuvcUlzEpS3U<;{HG@bFayF8=BIywQo zjQJgc5f+==vCZ*LMb^1$EPi8)EbWWVXAaF$IW(pORob>JU;0f0Py=~KJpLJeF9H4i zkQTZ9(*t?gf5+QeAz9~Yfk^VP2b9aVmvljbZ1!Q zL2Z;*r9_!4alCV8g6VZonRnwEAMxfLBi>s@*#&tD=a4fNyY^-uFt+ntHTtt1>|&k$Q{5ERq3c zf=3QA9Dnam@03OLm^dX=-?yYF%gcZF*<@+_-!1)o@D%u@Q>t%vX$UtD!j3d`NU8h8 zxU_Kh3*%2?OjlJz4x!X4EK$})K&-r{goP88oEbr?3Ns80%YlgqpbTb_vCs7RGBcFU z!%K#D>?mAOsl3Kt*h<`NW3SO@7@j*!iMDh8`X{Q7wj?87(r`I#c(8f6VM*s{38v_O z&#@pi)i~3a{(NPrVJ1_ln?80(+#wOFQZ3t8y8iLpR1}F0t$DO@id4q1S(c>qy|JUCjv3lUgoVlUK{y0ak3jSKuv{TpRH`&Bot76T9W>?} zCYjjLFV7HkHy$<;29uC@`N6DdY1%!Z2~3%6s-MM_@!&`90m;TqYW;#YIn?wH29Fop zVwJ65ai2z2I~Fwwm3=3Nk7<_X-Ye!vyI&L3^`fw!gr8Xx!hx~J19day?Po+o@Bg)& zT{&qY1}|35<&XJ`&9RI+AGgfHw;csaK-;+>To1eg7zF^ zdzC~9J@y`1lLhDD=F>q79UTX=IStJON`rU{3;-Yp#N3HP6G?Q%LYD5ZQ`p1vC;uohqz;Ynude- zMfB%Wqg23hz_X_;I=1qlZ5dc|XfNIjw|e=7C5N?C7)WLGYrUfE2ehj{!PPHDQ^rc3 zd=4sb{0QsVAbr-I8k`ECz`B!1E9wR%BGoCEj5-j*oi$utJM=EH&UP4z1lPjaec-s<}1llqvNe4*T* zT`#d=W?RTi=MG7c5ixIzpQ7&9!dM8h5?X5=5)b|O$}QR|=Cd)7Jh{!}{b>lXD{}Vf z)7@+duj00&r8sXuhByZ7ofQzCk1tt+e9CR_m3|BDSisK_pAWiM;MxGdrG7vovb5$t zKRf=jKXpHJ0Ql;bSV&GW75^{dxII$MYH|k5fCr+;89tCQ(gFMs{2v!^Nfp{fPFr09 zm9>si6){EVv2G+wACcyFIBbcgQ)@QCa~_NeC%JhWd5N5xv^sRh38+5={) zcxhVXGZI~qB!!0~DZPQ=tJW*d182${oqC6m3{yl z>m8${w=$6OA1WIeD#&m@eGe{=^O*{RT0xqAXYa-ax$v9Sd~5R%wo7cR(wWTt@9cY$@q%z~!@0z<8Y`mT z3^55RHKb&4cx}ES{Td-y3z)H=w2;A&L)?-#{Aqvvo|!r{U7$8HJlJgF`0wNMfFPGQ z7i}*?vH2{<&|YBA%m%Q;B;Q@8Mj{dlQlqYsJn2_?pOcfR0)Xo#hoGPiV8T>0JrSvT zHj;fuP5P&k=Wet6+{?URiFYQ)s!94V{19!i;AEQ_(EWddQj0?3k1vAsvd zoZ&&q`nX@jCqe6_StUT&(e!1HoWz;2 zc&HUXq8f4O5fRY5*a+H?X)&iSECSwC#|j3-%kqJTRp|oeMr3%;q`3A%|E<@3_JGeZ z_ChU*e~wD8`>3YnCwhX2iEjbJ$TlfhOKS!H-Pb-TtBCEO5ynA;JxeE{GK<1lrF2I640^A#{l)A5I^q*}{Xt;&zrZ|Xk>h_5|>V)2<~ z`#4p8vj%mL(W>}O@~QrXmz^NX#l}=^?J3IgT|-kn07qwjdi6xW%-n2tZryx)?W8YA z@oXHB_LzhJ>bX-ANBYU@x)-n`V0-(1yT0WWW6P>dzd1@Z(?30sVf2xS8?NZ5%U2OS z;|n-g@TR$jL|V!Ehzt{fmqCUgI|~p_cU1&Aow0dR%8`r|u*e66hdio4A3QaZjBXGt294~}fENdY!&8Aera3+dv3+LS z#%EOZCGk$Kg$12&*W|_d>E?2B>Ug!e_;#BTsm&SH&CRLWsiiCBiZL|+)3D}F{0#uo zYjUK#q|x|PqV#YRIRtPv<-X#s+TjX?V-@fc?E)yE?k?E^0LxO~vjg(t(Tr}^%_;j4 zl1CuDdk}OtM?~WlIr^yEDwk3(5~ZxKpLz}Md9gN9P;1%-2o4m#xk+gl*POmRGq>mj zd6nBw{yGT=c9DtA4YMl`0R+6JHvAZ?O(gPPG$Zw2yrV#Qvo7QI9Xyq;+<&H} zma2LAFQ@ol@)Z){!!*@Mz)0yyOXSXiKSD zL6GHH^Z}nk;PkC>{SMoX;Z_Thf_tNP#=}_>Hs3kl)WcZRJYDc<$AJzvzDtx)Cq?KH zi;1Y{Co&>tFc@H0M9{r3Mle*Ut3E`)B{Dp}j3!?YInt8*z?#fC*)p8Eam1!NGKuZm zO>>NJxWtZnJ9-{f7r7i`nNas6VG=;^Sy19c6|+&0Kx?!t6UWA2zry+$oF&SXgz5ED zJS|HYSgT=?!zP4k;dcN@=KiKU6*B5k+z3kvOXkL8^>ZbRf=E#Z0fJ8AlV^W|FG%2R zytXct6++v@u*Z`WcQu94>31yTvg_OMp{TwO0I&{mrD{d#8CEv7G==_WMWHa1^p^*O2#)ly#0q_=ojkA_;q1~=;10L#BF^P^m8@aln zB9f4tLYmP^;ujS%=8A}$f4QeDcxU>F^c_ql>!N2*bCXnmDO3sfA z2)DK$yti0j`ryF&z7nC0o~gU>c3D23VfF6vpOQaof7d4X9wdFrcCbUAe%ACk(N&-B zc!d*15|`%u3+Nq(45;YEY4-{VNW2aJ6$o&WKV$A6sbQPr7W8iN9Nbc(X}e7cvT}h( zkb{$ulr8%2N~tbqm+;EUsC0F$Eap3zgEf_b8v2b}kq<8xy~ZAPbD8?}T}qoZooC*a z75W}(B`969F2HnY!EN4mkoAXl=-m_N0-0e3zku0b{q{nQ^EW%+t0MpENy`>h>q*O0 zgY(s+hWc1Om6?`OnIatml`rZ2d?36`OSELc^T^n+2kZB#d9*B;(GO02&H{|T5EoIv+?lN*h zV>KS#>yDiv=Wm)yBFhv-pnr&4S>rMD*Z`#hlv#8cw(A&_K=^znot9z{-%!tm!RG=R z*6hBKP(`C$)R+bVC+zQ$N&5EpBonm}gk4{Y+-I{v+Rx@2gjEzXLJWx&jwxp2PUch6 zRy*tQZVwfEBwm%l;JT;i2_+rPdeK1p_uIxlpG8qTG8&qZn&4>BRB>)t$1-j*qY}iK zleKB0pZv?}?yGuH=qbEt`9L7+i=aTs;v^O9UZ`4Q+1lP5;NWz>c%p9m`HT$S;;C1` zOqO+YGQnB@_%Q3$Dkm!5)uYWJ`R}uqyJA12Ol}YP|0H%}CfR;T_T*0>Dsy`t1fQ|= zX34X>zL?4;3bpNu!a8l@H@``JNc%gZO}Y+?JyltmF_l=0Ah*`o2Cl8y@VtTrw;GF< z+pc6Lq!A#WN;>AeP}L*Z6iTTA^5Hu)ee|LrEwmRZF{1jOY{DRW{j0Xh9Tg>0^C2_tK2SUTghBPo%c=uJE22uSZbsw2v?yQ1~AJAcHD z4M9w(%^cN0mzT-Fh_`{k{a=)$)XGZ2A=3$Vi@WSNJwWyq@D>(}L5ajrZn+S@hKAW% z+$<)(D{Lh33&j|nP)8da9tbK)9*?$;vV5%5=J&O@JsX2yZ#YtXB=(RUzKT+`kxp80 zA0pZ60*NlWzMC;Oly#4o;o`ClcQ?42*ZRlKTPLKwbkw6_ll|Pjs9$M%e8zu!pdrX_ zGd8*ZB>&oLy0a&K5;FB!3Q2Az`9KB?D3C-VMgC&hJ8M-8vjRJJ!;< zpQ&}RZmHWi8}%bcObJ@U^OY z9dxbV4vhRDQZ6u&6fs1c0r)DN!#|ew#pF!&i3W#uMrAqc(|NJl>X}AbO&T*1NDU!l zRf+>=KG*@HhwD0gF!9oyv#+%=U3Kv1mmPrv@*hElb>3gtla&R%5?ltl3DGB67TW+x z`ccEKzi;ub#HfaaK8~1g1%bgSk8m>xyZ%R4p<%XGbb@yFQGhAT- zpw)&)@2YZqx=caMM{_O36A}%t12S3!TnV$#_R`gNbF-vubL-}$>DZuj56mLs#~q}Vwj!R4P{nnAc?4EM`q~ssxOnDmgL$#+c8!>q+Bm!XKU{`HJ+T8 zv$$-3xSwI#vR$+Lr`HYup;yv|8uPYHGk!$;EEt+|wnQLnJ_#6YEb`lm&a2b9%pImK z6L2&0eV_i^*JML-GdG+mcDEgOFMfGJSlXrR29`=VwqP;Y){n*R)MV}vi$z@}g3;S; z)n#rWo!t_CaHT9s*hONWp1a9kB`4)YR2gAx|E%D z*`W;nX!Ys2_#7lsX?fNf+LXa7IiEGFdN!5(#GR6hGHA_0E65 zR2Y=|k>TG^BEyMBdHSER2aDHMzw+F#)eqpw$l-dO;Hu#kzA@&u%`ExtRi21>yLr?1 z^!CY5r=3hHbBal%@Q62NWdpi;6o&&8+8HlGFz!!k;eS6;QeWBCRxMyui;H; zY44!*>L(IS18dp5H)%y5`kp3gm+s_ac&hcis52H~jM!d0eYcm$7v^=l?CIl64O&)S z8^ml&OGj8GuVcWU&qR%Hh0S<;9`?rEk$mu{_+-_MlwtY3RBKW>LvxgYp}4=rdwTuD zyQvKp@02Jgc2KKJ)IPl9VXS$pck{rhs*jU;rXuXaL?zef$?Xa8ORIz4^$Mdytx6&4 zt;*{Gs=Vc{c0t^@oQ*&C_>9xP^PYTpbi#&KUT_+jJc*m~Jhhpr{Gf{4n4>~EyD(aY zSaQM|E7kpnPR5+HVyG>$a|-G+GxkfAry^5(OP6nMa#-aRm{i7&8}>kO#JJ+QPo=44 z9Y=_Y`^xs3C60ql45wOlr58yDE@=mTqZjnZkjFJ}__AhH-F1LmwYSeo_nZevLWqm( zg;4M@wTEjgqE`~d^aGRo?qf)PeD^hdE#D@}u&$$89Yx!x@LWiq@J>E^K4XRst>K*W zi|N@WRW>08@CF$D3m>ffg&v}9<+yijzc{!i`RYuPU-h8@S)xLE1x?bQQJR;d4rKKOkgtvq2h}&$HbE)B)!MuI#xn|uSr~kN~8V~

    wM5r0)OFr8w{?;6%AFN^u^&S&WOF=!fg=QHywlyR~=J<{Cpj>ebUC@gVeJhw#kf zIjUgP2SuiXP*S*sys3(eqJcf}C^M6{fo-fnC=}3Y<9{S6t7v|umsDyyZhaS+DE1!F zm8jvb_q?8Nk#^GC?Nuzq78yI&*;-T=d^&qfMH3TIc4rC|zp)5fKF+f~8x!i$ch z`-GwKnzwF4Bfb7i>N%?%u%a&bde)ETT((KM4Qn|PCSu!zr6*n%F&bB1JapcOqR44Q z^P+mMGSH0kUV>L`1?Rm(l(9|faP3};a<&Tzq~y*G9Giai$%`xRbtAW>_yU{bH@Tf@ zGb)UEJ7yQZo=61gCHjz$-)C%iz}v{X@VLtDULQRoHcImoOOMUGZ{=gIm}_dEjW8_A z&-C7vY~2W0uWrl8=yGbeZ~f^J^c3-0-MBBJ`kSEf9Km=<~58rz~~{v9ElMFHSy zYR^b)t(+QQksBR`v!E7!TeDvOY=vPtXCSLpjbJNwkd++e#N3=SEv+rk3$c8N>)KWE zP1>lrc31p?x$yQ`oKz=zXRX!SWB>XinEzdjwc!uagc*3O*ri+MzL%p<&C4mI04z^j+92XGK6}p|GzO z;5~60(j$G-6qU49ZmoX%{q8W9AFXFRAzzsMWG=KNwl|}z`x2p{AggHwvT!t1ZgYkY z+00}!yd%de4tQ}&*;guL%m+T1%=eCjd- z=(qoZwYAsR-;l))cUFzBE1AerO56~rrgNV-Ad5D9LZzP%R;40YGYz^4HRZT>8xLIB zMKj*d8+@NWto)~5-6LjqNdDVaK|twY^;2s83`0xR-DmmlJXKFGoTank zm6pkMN`y@&?PXB7FLT|wA}BHd`F}u?Jf%&4G_RU)*)aQ3tid&oA00+d5%ZF$f=b5f zbvG}G^2|pKrHKPZI>{MT6z2J;8Ey4V{ktO-zu;pPgB%54amBCTDmaE>YX1dMpmHQZzZb~p983tS`=8Y^@J2^Dm|Bl%V(_22z zrY$=1K#O*QHSw3a^VIXHvR<>23~{{<1{c(`eS?MCQZ=2nEnIOF@1%3n!z5<@+-2pA zo`}Es!Qs*xo27G)0Er@7A(1&Yo}qlg=Y@(`wLmn9#o+fxYJ6$WirKk2)3FMJ_nu^r zz0sO*Lyq(t^bWiFB;GX3)&GhjRolM8c0-a4SuuSa6!|7gKR=xcttYCVFIeW4Wzc%N zh&6%C*{Z^XZ7vWsd)BG~8Be_Hq~6#=K~~o1Ir*kN8j?~lZ(Ny|E4ckP{QIlHeC<&l zU6WhrZsdspgXN&}L8*^<#WU#z^AbupJnk;?GY28HFdo3NYim(KRV|R*@F@e#N~^>< z(`}BYy&6X+3Y=5O?cTZc!mCN!y^6KjU7j^zo|CKu{#aZg15NFzo{lC4E7D3}mxZx_5~A zj?js!QSPT-$5n3+kJY-5pkIQluHC0EoL)B9IsCZ_Ua=9+pN4>m-}W4Ipx?;IYD3M%WVlpp zN_}}1Sw`yT2krpN&kDGpFaP`M`u}6=FQBUIw)X*4a3dvMBGR>yFi7d{MndUOK)Smd zq@<-bB}jKjmxP3Xba!`2-?j0a-~Ze@?ih~oZ9m^w?_6`PHS2j+6{p=7*B;Vj2T;QM zhtP`x-TDAH7fI_zg}?}}=M9?=sg=NMbX6)M?clk*a44W(sS5+{0TpS$1{nHe;N{5#>*v?7Xl3uFbS&sIfGIUlWJc3fIs*gD(bGn^_$R+YER9-kyD#)D9 zp){Ca)??$VOn2|8yx1scyh`-+bFgJ`z=?~L*g7^CRWpgWJUAl>I{N@eOYi^~i#Oy? z$teS852y`#V2bHj^*+MB6q>X`zZ4SNHe130$I`K?xXS4=T_HQf*8Z%@mNv zdHUcW7`Bn8M##J5cg$(-I4^QuGJV#%i8q`&XXM;x0n*k)R(=QE=X}Lj& z1C?TbZcLgm?Qq1}89u%rhr5|{*@)daGIC1xOI0L`Mg{dVaM2`pJu+-%8~b@cdq?Xp zv#0q)2V#)1n9Ej)(+`=+qj8^=Y0FP-YUgQNJ3f*EZ5T^pd=F~cdVrY&t;>89c?j$E zzUDe9pPQ)STRuWc=7im-W$pKpq6LqJE!N5b@HC&;H}f0r1K>Z$S)aOman*FhJAJgy z8vbdMQ=bIvtCd>ia?kVa^O$QM4+nuFQxZ*{dP{EJTWYSo5O&1MT9evUn0(2Ur-*>f zD)+`O0j)-FF;udv_)MK9r-8K_Oa%HYB&*M&+9;ee;O70*)@k&% zoW}4N-Cj|bYQUB5s;`NS536BVv{wqF)9R{@WZlx@FoRpbn0u1Gg}8WNEYs!`I&*(5 z|J7ToQL)SKu9GIHalXBda1=P#n!G@;=kL`Eao4?kG8}y8hej{r9#t-H=}b-TU(B{W z^F=g3i1uH2)p)W&V$M(Da2C+>Gejg6EmXQU$*SJEz?^hk;ow_maj*V-RwfaFYSAM| z=jC)@cjw(4bapec3f{Sidouomx5N+K@%BTGD}u~GjbggxtYSm~r{?;Yxk}mr;TB7C z;qQ{juH@#L&*XXNBNieaX~~v4JxpL~K1Q?Wf;vW{IzY_X+4H*`84C1S-nk8|zs zss-^Q%gQP$s{q091z>4bu^BL)vMCPQpQ5)2P1o9F5#qCc?CU;cKoZk&YPv{QQRMo# z6AFWo8{OXYFoHaf8APlmNyZ_=vD*u2JV$vjOxGY(8Ye%R-BrRjvvYV?SttjeQrJg3 zE=m|8q-1qPImvY~yr)D!Jt%o~LE_+_z1zm@qJzB7HdU(7oBspriZI79zHLCZj$Kp8 z$HqRXN;s4OomG{)V@>nX7HI}(0;&K0LSnFq3aaC>N>B&BD;uQJ-@I&}ysylHj_h(c z)aA{yGfI)bZa8A&A&P`Ms13nOohHbqpyD+rp_TEJA=ZB?b*(|dyEV~z`6!ZPYzN-ONS%MCOA)S zKzD&DPc*+D!3`)qYE1j01W-b)8v!KnQy0-Pz!|8k`L{)<)?ya(fC4aIAUNUeJ?O+w znF`-teqY@mtjL9n4=}+69Y23=nQ=Wm2esYY00d`B+>siqd2j#I}^_`7msW z#29cap-zN^M07o9SX^ds5L5h(_1sn$IsIwWI11Vy5lBjC+$`uU{V~<}eYaV2#W!DO z!bLm15Y>hTTB?HoiSW1YXkAEEK4?sd&27&=-~qjjrd3AuZ{K!K2J1jr=A+jgeyiK5 zGU;&ezv=479x87V{Vq@kSmpYGeP!Wh5NQnEi-v+sQzu0@^pW^ zlCSCd#7^@ckF7mMVZT!XAscY)->0DmK_gAAHvZI+Y(yvzxI85Ve5lcF9z-hw)*51P zVv_yVAF156O3T^zpb6v~seE?t!V|7?Y?6(K11s?6he$r#m0)nPoi>k`+*h{f{pLFz zaFq2u*^J}g#oxlBuoqm_@cK!6`aC$daB8y{w8WfjIWTnMVnn>Yjof~rRjW9Sn(-1; zikWpvw=7Z6xPHNFgM=j3lI#7+xyR==yP%VurxI^~Yar;sCMcT8qqco&Zkz=b0g?Yw zxqJ}1hwH49we{gddfr_2kXSWjO!~bW%~y4p2WY%0kQ{!q@jJsWjYtAi25teah8=Gr zL=usTEU^S2%SmFUg*-07nO~eIRLHqWgl! zaVH8Copk4s0lL(85BwzhjKR(X2$15wvYTyfbc4QmW;nr4nPJx_n_xGbB{&bu zxBxbDEfIj0F0x6h`jfr;h7kbToqc^hqfBdPdCndn45FaL_5P8`VcV_!Rs+1(ySt}o zr(x`hIS)Yx>TI!&2ubZwadu<5iO&;2B!#|et7_r^oOU(Uh z^RQzmlJ(ovnY|!a1gl4nKi5Ld62x=01{^RWxEsyfC)_l_@oK)Q;dsinFN+m zFl&v}JizSDJZ^#Ut^&Ap0)XvsR}D_qP}aa#kcAc=k{XL%yu^0mAi)O(@YaI2P_9Gq z-WU&m#AU6DkKu645jVG=Ys^wU$K&GzP}l!N7K}adjrR=?<~cG1X`qJrV~|QD$`c6n z9u|r~B_LVpt{T@V7|8=zYS47>2`A(VbGNLEY{X0CFO{^<55iz#E%Y7AIc&MIMj{(` zS=rBISX5@%bl6d~2}k+tWoIhCo^3NgpV@V~q{+#!jARCuvpk3r0i7#RVa|#DrFnZwvb!rF4 zJ}D+esC&BW7K2BM5)3^EyWltHjI~GvuU9Z$w!|a{FLjhO67qOy8E9d7|5=cW>&nHF zLBU!JU{6Za3x*a1MIK*+HmG;Lh|##B2H5(7BF~4w@|}kiz{+ETnerZAwZ>#fIDNg3 z-+2BJz~iNu7~cT(@x`bXQ4|uSG%&boaG-?Xiv$6&Ar2T z^wSrL+(CVNvzeRz$)|G-fUwcV-@V~3huxyyz}jrqCj;mgRDG$M+gsy{P92}A)pOID z97cUt&iP#q>GZ-0yFUB1EJe`_2`z_t&#;=xAsv;M3U_+{TZlCzJIjTM}l>zHR z|6+%Jz>^y)b|ef_s3d^Tgb;X&az(L5K3cDK+@0d?{~64(upTT5vwX;o*F7n5gLHHk zo$sf*4Vv+076);VdH{&3HNX!8G#B9DX7^F#8;C;n@DiWYqv|`5eSc@2hC^v>WDFoy z6{C6`otb6rDk9|b6Hxsn;e)rtScBOVuk;16OCzL37ft?{GRn~ev_ zc42K&q8r_mgcXx~5dTnW}D7;wC5 zp#}SJ7WVhnJ#lROjrr)*CqWiUHLWdkmMK^ges%S*$c5=wiDKwK+nW~;6+FXU}HZKfKZB}bU;3l zP+Vev_lCANP~Y@S+5`u;kV)X6o%l#%QK3P1bQ@i(2#FF&g2k70Uhfg~5e(1hA!{t$ z1xI8YJS)WhAne~W)QEEE>qc-+9$KR$;&bxm&sFIvAeIxmO(Ix(d?^%=(PcL))ne;Q z#r|6D`qNvRH>AC(r4vM`T+|CPzHNDarN;VzrD+CD0vFS8f3C4=1Ou5=3DvMbq3}Wb zrXOC=@&Pg?MF&bIW*}>5`m(Y07EXY7w>OuNNH0zYl3HpyAb&u`!W!)Dk`S^4jiRZy zynvX=`02RMvAGtq*rMd}>p2mhOzUh5ePl{De8gp56f|Q;s$PRTGIV1{YGuDTTdv;` zkN`e6>p&3<$I{Vv&DMKLcL+oJ%?>+F9#{6UNXNm@*c&$}Hma|rNH6vpRy55YG8iQW zs^+@z$`c$4lvu#SCvj(E|EvRzif+KsrLEDIn_%W)E!j@MZ1p*A;<8Tb#8A}Uqv(1Q zuZI8j0-$C*L<9DaEF7%KjLETlheTQPF`1F38-e@0*;?ZXFwCBgc;yF%g;(@@_5bdM@zPKV8WyYTBkQ9BJvXFiybefX$^~*cZelj58iLiEaE6g}qqIAE^;^=@n&fj@r$hF%9Y5tt+?~ zOh6e_eFOU96JI_xB}N2aWR4V2QS(gm(IX661Y9V#54ac2UMUSQJVnv_)DR8CAtPfZ zl+%5)doQinaIvp@w6Rc-{kh*U(nWa%0pvGaZ~_0Lx8y^|b)oldi|R9K$Z#MRgOj%=~wn$N)K+Fnm#VrL4 zMcy?Kkag0B(>iGQ@}@)jC=Z%&@tsadX$Wq5zuF;;7UV!W-NM!x1K2y>27GvG>L`n- zBMWFJh!im8s1d^8#7$IqVyqq!Eyyy2-K6S|vG2-PWl8FDAOZB=iQ->LW4wv*0FP8> zjL3*&3l*G4s#|nOHl6xlXxPihpu`hbac}q+f4@mQEvI)N1zEgs7jiSl9ssyF#!+7x&;J{CXEh z696ND6K23W`ZwJm{7Sw{@njy^(idpoFy??PMpn^R*DM=zJ_Uq+L(uP{SqOtXazDri z9pQsSK?APPqUB% zfpgE2Gha!Nk+BH_ko#JW+A!1oLwsgXoZGyr-})~VsLHHtVQS~7c2YpP*&piMR0BO8Fii6c&T3d@;OXZOcBo`UfP}72h-VNA*a=r2g zR%akm_z->WP(*1ue(CbmbkE)dq7d0RYr@$*0Hc=4U0vf*`oq5CbY@y;)4K{;@ycDO z1EYG`Ug5AU{NBq-Zn@47i(t3G}i0~m!U?*Nn?Zk*>5hE%IxBWBABZw;?LnyO`et1KD+ zEli#9{ohBXX++h4&%bhDG_o#m9QOA0oyUX^;AMEr_T4pu!ebIzc;oJmpPQHS;dyGHhWV!Nev%jlsD5H2@}Efb+-Bl;Tw}e zK6}A|582xRq#XCsK`_Jqjef*D>g%q0{MsE%@<($GW_337Sh`WO_lA#50muVR zxBG3fJL2CQA4#;}5%U9c5h#eOunhkyef+iRSmKKW&{{CCT2Z~t+u0@c{MgV(HGMYM zTTwS(Y$#QV?5p|@Cjphl2S7Yh4$gdUML(PX3IqN$_<7U+`%Wtz`qZav@h$Hi8VmzX zkl>HQ7ecgRPAQm+;L}148-AB1BPWBG&BN!in)r-5&>QX|iHeK&0`4HdZM?wON(q!e zBjG>K^PDW#;r?RR*do>|1WHN1t<@U;?iQb8S8bs@ILAF)ZRwFahK!6X zqo|0D6p%3ZqMsTFkQtGcvpAYe?rT9&vsn^{HPGifi&+Yb?LP@)4qHi&{7L_Pbnpb> zA!%etd>rK!d`YRx%mCa-B5+NZlhBLrJ=h#B4XJ!tX4InW+ZIRgdOunGJy@p&5yz;p zLF43_`8>_}8Ts?{5)B$o`%Q*XMnGV#VfEbf6;PE(yaUl5Z?FjNZzYiYQLX=h;eI`~ zZ~&i*7I(zEojFRS5LD$X16tytV#72dBmaNw!a%OP@-29@55YWn?M*Pr<&VZvs7kbo z->at{zYnrk5=;6FS5FSQl47lY2r}Gyyd_YbGvR|Y*c&JshDob#f&j$;2m-G6=`AwH z>)kS0KfiiW>Hsz!_yF(`n=PiHMP}o19Ql}&g&!G&URjN+eOIr`pW_DfO!wEggB<4? z>l(rRUt|&OVqq7khL(gkb6GgL5murAwm5vuxWwf}i)1ZFD0%~4vg z?&xy$nK}HS0NVuelrPg?mE8a3Bko_bbwbm(RX<$c*i(5#l`qvALzk%d_^ivQPi%)OmEIx?}Wf?(=BwnkAaCObwk#$;vdf6wH`(RL#7FV>YbJI2-N2Wl2dEQ(c5GqyepF+0 z)}|_1(w|haz(HLdU?MJj_>{|?K|7eQZ(Ajg?>~J56ruNX0(}i3gbFE%poSKM($Sjz zYOBZP{;f|@SRaiY1$;aU{g5Xa2WyiV7Vy7CaUv+}eEIYprSm^V`Ka1FnUjwUka&TA zRfOY41H`*A;h(xtj(gC-@*OCT8Rl+6`Y<^fWBLXWM$1~LEigo1= z8p*Kh@|8pQMS_S(6o6>_feCNG{o)YZ0vhf*ON_*6V4}5VDtGEXTg*B ze-?NRF#Kq981N_PSsF;g)JK)_YNah8>^1BI z$%wcf5FhnUt$$}{cOs^??8CPIEVV2^d<&`fQW>LP2sy8PC$0EDdsm@A{WCbn7pn6c zA6bG7XAv=Inz4V|FXPa)d+FPO?}|*$fruUSD86|{z%cHZ30oivg3Gm!E-E^S0W7VI zgW3*7lL-cQ|2~Tj=b*!F229Oa3O6M(m3+^{0H3VzfaSlX|1shwG4avB(#6qEuo=qz z1WC4JLdFWtYiUz?=tZUz&kam~>3QTT^rnr_uLQF2F>~jzCBxrXC_*8J8hTE6$2|DC zc8XhkMEPF$KIRbK!~2_V7ISI-8YO<-mKJK=2c>raCzMV2%R&%JU-*JZ2sReV`e;6I}@qAwM@7yxUltt!v4 z&SMJ(Asepe!r0XSc|bnL_#a{6Ny^E@D8#>rr7wAAaTGVf_fKcuL8_k%;n;8piC5>s zet(V>m*@p3t`EY4O&?zwH~+i$4oC8hmkz&Xon+b*aiP}a`zmOm^n+DI`oWIg4GQ=> zfu$ZMn!Nk2L(X5OE>JMQuzT<0{lb=%Qt>rF0yJ)PpYMn3{Sc9-EkZ^^>+|PLL7|L8 z|DWQ&jvl&wP~N|7(1+VI*yib?+;3Cd%WOk<`ORbhSC1!LmTI4=^Ph~8{`l&ES_Yh+ z|9VxruUgnBb`t-I78jubWwT&ZX0i6}|ADD@Oht*ydZlD5CxM2>7mz#9(IepI z*q!R}=$*Z^DF<8}8bN|fb#E_R`(Gz<17;NN3UL{@GEwmO%;vVyi0;O^YUl2K%YeVv z-aQ5E2O@i0GD7-Oq^sXu!ywHr6L_f>=z3Imi;${-Pr~%edIq%E=%$m7{9x8`E{vh951i4zp3B^@F{=* zTWAqwSy%tNvRDJn<{;yvsX5s&oYDivU%MP^dX8|v1NuCJ)Z#p{Lc13OzYn!ibos4G z@Qk#Ojp^$bja3dIu4dcN?Liia`&9~{f;Ao7E+9j^@awI8T81_x-?{yT$!<)J2V|i; z2Io-W_pA^05HTinFSkRXXdJV=VeskEqQ_3N7GK+)qEorVbiAPBINQ8rY5-J+B9r@q;g zx-=HXm7c~z&ZJGDfYm(pKdS8$V{GtYF-_YY3&{%Q{!3r_lukT(=c-pDyT{j3siYyT znEk=1+b!%a-dG#}s2wFr4dK`Qjr6AXM8&yRbU5^yw~Wh(K`8ovme#tJNuGZ?>r5pp z-}le>*KiL+FZ00;1<-OURbIETMB+NeEG}pA_v5DMGRQPK&A74ER5(Vv2u}KEYg&l8 z%gZbK3#7K{y2qfenHCC<-u}BW{m*L*_H7OR#ey#r1f3hE%3e&&kY0i7y{}d;?CkwB zHOdUuhK={(Ls?jcpj|nR9voQ1`2zcrIS0F>Z2!Xl#rgt8G)*o_pxP=PFyO!HNBM;s zs!nuGIhd!NCXN5X5_G2h3w0=Pafw+pMIw9qXIF>8jHIKjLY$*5kN;2N<*XzYm@J?Q_p$O6mY*%J-7!>qp@!{K1OAQLs zbhE_NExDU9LRx28z~YO&Vo^zJCnqO{oIS^FmOtS?gc@_u2;NUA&&AjmQ7SgtMd z_3b6gM=Y@$!0}xp>y7$H4zY&@>PahfNP`|4_VDEJC?NLj>&NnrXAX9MYE{7%FA+LX zx{vAPf4kr{zTmT3(le@+?Q1GN&ha&{a(>blgKI6GB^h2XN@%LR+)TjR&!*#bO_WQwuMy~4 zAh9&olsxG3RvO{PL6M_HH@&E#gKEsJvn%mVPWHnXXe1vI;Zl-7oVU;jINYs=`P2vP z+@{$X+wjxkEc0kRwpik=zWi%sou2dnPccc*)sf@d(ACWwLVTj2!!ULk8@EW$1AALF z7xTJZxG;UVB^Hh>44k4lsRA)YpH4STkd&RCpk@zAj|X#*ZfQ-|3Ej(_PLbcIZ|0eM zmE)T<@>e>XqP;HACantDw5hGtoy`CH))Gk5x5$VIy0NZKg4Ycpkj}(ANN2r0=I>+b zpRGSb2NCj129eK`!K9p`7_F`eGj%r$B8zOR#^T|B5O8!A(yzZC)TQ(S1*wq}Rk5>i z?yj*sRfr=p@n|)52S-`m1=5q@dnUJ#`h>4Xx!Q`CCaY&BleAu5gC z;NEOcE0IXje?PN+5dK`O!BoDhWoL8z4o5#~DMeWwE|QYSModCNLWk1M85$sZxDEsh z%IlDQD}MhO#B{$gz5q=zrGe7f?>zFVk-^d%4#)nF{8a}>)M{S4)Vz9zzd+QZ~ z&6wyFED-wqd0TZwZnl#zI#4VigFJA|2J8VjQ*xwwm+YUSL!bxboJFmYQ~EUB?J}HD z^F$y+I>mX^9W)+4_Aabe-`nv58`cwxvGOMB#oPO*$I^fXyx{Zrfp#+{C`*Lyp=t5% zCYw4TzBK>nj0s%XC=V{Lo1-NdHTM-7#F9AdM1azO*Doj|wvAkmWqKX{tlf4H$w~<_ zxLk91GE(S^g;rjKzo3)G(YAJ{2vx)x{EbAB%o> zPpi)=t;Vw=JVe#t?Jnqlw6va|Ly4~T2>-bev;kuT39QJ;u_pRZ=>)aVpR5kY?-HCA;+b$R~4 zDtnVSSkk*9`Zt~qKk2`D`lq(S{ULbO19UV`G%%CD{lG82ymC1@7>18iLSH9bmDif> z0xHW~heBeQZ5T6l|nu@y*nE%-Nbu!`64{1up)slwzfUkW!4znpu({0|FubH;*Tww#SO1Zr++x)23=R z`tmGHOeS}$q>22U40eF;pqp=E;hIa}A6_2OY8PxG-G z;qO?OJ8Xu5H>A%_|Nhz`n(VEo?Om!wr?&^uP&DCb3(>vyt$f2M9sb_6w#`LRp;q?E zqv=3|V9zx^qy0CZqdEotxV}yk?kVn>AN0M8P0*V!BWMepL7k2d$Kl%DeeXoKb=cGW z#u>5I%LCI)U|)LI$Z|GpB7r}8oGnEFL(P(SR#!NKt{rb7*Rdt^6S@`+8eCS6h0o4AbJ7fvyK3; zfPMv^qh$9nZdQp3dd;5#=^`Ul5~Y_(Cpm{b#=*Unz8%FbP~N?IgtOiE3%EimWq|nT$=Lv@*3*3&Sg*>b0NaX^UeB3STIYHf)2)F|2K83SE z`ufHX*M0aF4;T7h7c%PiDnKP=qsPD9Rz1P^))?@2Tp-BeSRC5dEy^)U%k>6hGk}J> zLQrelb6m6s_L7mLN8mc3&*Dl?h$ni&$@1Yj4;{t1QR0rV=i6sHQ|v+KBj*ckOAa|& zVvS4t-|v`&bTqP0=A4Jmx-nCO5yB<hI)dgGEu{&f}r!)p;4=o^nT0;Te*286IKlU`3Xmy>o`wDU9Y5+DH3@ zMk**2Lystb_-`y^l7auJWCMHQX-TsXB#NCRW%*C;P? zy%t>Cp+}Nz!q@flEe=c8wX@u54aD24gQ9t{P*qg4yYDaB)6`b7$UL>>H~j8y(3G$m zS?G6snmr%O@MxwquZuBg2*)c(^x5qvtSQE#pq;xF`ysoae}U>!#~pFF(+eQvBJi=C z>37<%kO_osbj^R6dl)@J`6a8p#3Orxx?;nv{K}_re)r65K|aRuH__V6#8u7&YRVy{ z3+@<|&6Yh^Br%kasf-5lTIwZ|y8_j!`{N^O!$na<;o$7Q=S^{llncK&i&0#jCnqaY zO{HZoZ&Z{8g3V#^b{56@T#$%6?0#owrw4n(THo{fEK$W^)QX(?FfAOXol&X4 zQw?sOct$9qr!$dbzwn19u|Iw#t)_Zd#9v}$T@Vw97L`iR&Wn{5QKBhCMRv^6sqCnk z8~Rd0k8Ai;EJwts9A|iRbt$3#g4m0KRP>@Jzt-a$XRquu;+>#7v=`$ygE4`5$lL3 zb#q*>z@Cc^ymSA)+paiRR0hji$9mw@ERXlse$-%Q+8BFALlHl6WXaEMVS6diGDB|b zq{U`AQBa$<#aDPbx{h~c({}rV`mhWi{@^VAG2ZaFx!AR)ZghgXe^j&yCh z$4Dl&%(iHS4Krcw5z=4E8Btu&v`^8QOuPZPc?NXX+Ca7@^W_e0WYjOmPf2APS z6NXFCG`Qu!{#pezzZRmjr7+O_`$S&E?N`qa=prXC3m;``MYHfufl3YxMf-+iRY*fk zSJC~PV@WD6Sn>J1Q(F8Rs%R(q{P-ZMueLOzscm@Fj$_igbs-IW^V0FcwJ1WAj$NMw zZw$c-bgVn}6df(xyE*i~y#O~8jmtpdpE$JjwhQ!R*;}S zF`1DiqA-s|P2{;ZJZlR`K)0ziG5dq>cJaUB9Oiozh9N%?s2FIZR)~WqZa=GP8j%I; zYbq!~743^40VvwN6hlk4{ffl4u_vQeulFer*0Hc}KpF}czq?=JZ@7YF29)LK7NMF+nrif6| zcPF?&!TyIlc@^l@#_3?5na=qWQVag_L za|_4gdh;1MGhbA9mR63ZvaHF5uf9almz`RS?TNge)CxvZ^4B=@I49mDg-Z1{X(*_O~*ko?k*7D&<|1uUOo>s$(6(hD?QAU z-u);GU!OLIhDK(`o`55k4}XgPbXC((NFS|N3mGqu)aS)GQ+v_uRm-n;>306Wy)ERj zeK6qYxG|e8wi|q;EelHn+m!yy!zjshiD2zC(PE#t5+YhAqSoG1>GO&S2I=ei?$+O# z!N0#F9{C4fV^V5WLaFSZ3(%!i!>Xc%#ZqR9#BeN_X)+9US8W2`L_g3;OcgCQcNYvmw7&lJZ_-n(b z^ytrej-}Rq?b;>q(8WBw5Nq!ol3HrE)eH>Q_YMq&lz3&$BFO`3>&B4Tth5ul!l!>i zwwQo9I5?Wr>dOk60@pB>jNh^$2`{nQllDGB<8;z?%?F{%O$arViKz`1Z(;v`zJUH7 zb>EF4;!m(t>pylXjzfJL)N)RuW@vsTZy%p*?7&iT$PUJhK_5ZYT>8LIv%1K}_~H== zky`3`4@E$1=*Va;mWK8y*=eh%6 zfFSDdO@9c6d;)$6W96I2pqhy2fw(P}<@X~>9sa2&4Sn!%e#S^PJwD1NG_KJ67Q6Qk!rhytr zDt`VTl=16ft9XC1y_1X@FD4svC;x}csK|bk|*Z>Z;&=GrFddK^H|Q~rs|b*5&^igDfp#7ZHJ+7 zuH}yh`dP9qGpMDom*+TZx33TkQNYhYp7CBtzKGu1ncN216r}(9>D%?Ar@C1wunBS- zOk><7Yi9J&r&t{GEszP3)CX3|Or$2kkU@0)J zC&UqWWka>ac3A%nye35c|7l@is^;%kPzW;#MD0JXL4inoHN1MHxG ziNSvb$${FREcU7;c@sjwF*ieL5HUtV{7$Y&(bO(VTmnwV-5ey{>Q=}WDZ-iJpL)u5 zOjd*#xX$DDX`$lf5%@GaS%^)0>s4Z+fDr|B@KI;vs8hgzy!Zr!ZNqZ|?%bVxO7TG0AA%xCbg)qR<{C+v8N4zr^h#M8RY7Xw8r6od zvxx6<3(+4~h#kG2r7zV{#`uC~7bN?d18c8F_hD`mffWPk>0hJT&%}^~=o>TkzM;Ve zl+`zvYhP!oZ)QHrlI+t3Ct)gXHz4lQX|NqgEFN%lTB_ z?p4(FjqZW-!ABYoRy-kA{(RNu3p#jU&jigE2`SMBhW^)S(2*^dG;Ior<4+C(uFM z)6GMK`2&W{s;ACP-`|53;4M0yZU^Ks3-8JmU-h)11&k$A(QrSQHQ!#MqGbqu$<^k#293krM$a zzyy#R~$ z2Q=;+q!E1FZN(o9JDLvPq+B|+2V4|ge3Z_ zYre`tuL@sern`|hmGFi7`p2TV5Uj3JyIh(Z6;5Ny7)#X7@)8dCF%I7KzVUp-&^#D4 zKdnH0yG*V(&W2CCT|<4YMU#Sj=D%*}MBy+-MH8b~ig^%sy~|T0K1|e1WjJD~QCHs* zE*iK!(Ta`u{GzLQ(dJHW<$EI1U8GJPyKz%A>RU0`bD`*1PXskJHETQT!e0El6p%Fw zN9~)g!OPI$-*}>RwQuo34kV6Ja#*1pDO{oTu2{dHuqPWLe!|mmS$Tjt@(n4oG9$Y{ zzi2vPIwK!AS9KvSXC7Q<+i2sc?NPkTx>HYk5fOA7B4$_@gTJM_2wVwh)NxUs^$#w} z#W)~;wGYFlpcLlaYr-@=R-&vx1^JbmOf7IHv&rwcKz$1@rI|Tr#X-D zG%~=XcEjz$iZ3pvtWMpW^67knD!eWf1v#dHJu{w=JO;Z!jQVD&et#I90%YFT3a^qv3K1CgU^l*Am?%R|%(oV>ZI# zNav2gppP_=t(RA?y1DSR+dP&3UYWhU;Lb0VjWoK~qV!v>>NsrMtP_8)V0n3x@^g*p zKZ5A?XJs~xL0&77h`-5zjcLa`zmFMP2Nm#zsP}mX6k!}KO`junvKl z9P}qE!-5@CnsB?YVpA%(gF-4J(1$6V!Q#ucf2YaoP5FfowgVm;} zql9FawmM0^T975fP=eqsem`(sD*l9y7F4{uU^6c2(%4OebAd~RMY9!BlTFlCreK^x zV%Ln1-Ih!h+TDt6xPG(afyO^HW2A~2OAqbPuMET7YlRV7{H~X>o2-({jTpL%G?bl| zHzCSa;H}AjTsJE#_yQ6AY+pDkD1moI9xiwk1=*H-Lu4DPbRpLRy<}NIV#G3224%@w z9xkaxJ!3;VscE~Tqm@CG^4BYaH(Il+g9X%p&K${@oZDxki!KZJiMF;Z!Y2NDr4$(y zq0`}6GDu=lU&=M&h|jUdlQb)$qTGcYk8fAD@4(ja=fqj6zTpRtkdU1QtqV`-U%g-U>2=j>w%)dm z!}ISli0J40;@a{_v;RKQxIAm33ga&_43xw`);6P*^g(_2q`IxClm(qf_N zf1kR#s84ZIwh@s}F>0q8PB|3E!-DS?c-XGjWlU=dVUpKdoGZ`XAkB}H2URuK;3Eq| zW1XSCx7YX_815eu6U9J=Qrozez^D(|D)$gZ0m zk)XemBnotzuCt)gK+BwA=6kvSF87(Fon4=|H#U9%z9+puU=sR*k82=SS#HbnN(T)c zXPWP;KN1n#Q>CO>!)Ri$+#sA1O+W)XVswv`hHy;Q)fG6>2Zf|a6Ea*;Q6@n3c#(!i z#gvwjoe|HG?YnHo-PrgSYf8B$>`z}MPJYFoN`A}U&Aq$82!B3FEGcWkh>QQ~g@#{+jI@*rp5*er9zklaiQjnaa2k zm+(Xku#Mg@J-9G?-6c#T7?y%<gOkU_+GeC=g#pXK;>@k9^59x=?3`qa;(8 zodAEJ{i@d;P3EZ5na`aBZS#EPTKfg8HMgWC!ZBm14I(QBN*~`jXE4c))n|0t!&N?- zzYF49G+x|%yYp&AIN40`$o0J=;WLX}qrH%raMD7C@3UQvKm(p>uIL2ZZbtSg^d*Pv3|2hk9NXZPfM|z2fYYrNKWhG-TO+C^n=!+g!%T z%#2Mv!aSiW+7~NiOQ9b0(?Bracoz^v#UNDtBruA8`4b<$!7Be=_)-*YS#s3GD=B~E z3$GhG12T^aTOlD|p%uhf*}pPB6?X(_s@+EOQLa$auOZP^N{K0t7|9j>Hk@ET1N`8& zm;oXQ9Gy~={UXtBRI-6qb@MhDGgb_9zUd#iC`|+Qsg=ZnAT_b8ql3UZE18 zmClST2D=;@CRtI1O4<`G%D0UuD}9fK!Q9cJ)0Mv1DaR(!_H#!POZFU{OIe{1(dj)$ zq$NXJw80*NEP3F`rVaImc8B5bSBTFw?PNfa-%A;?oQz9$^wp}Px?c+@ z{l3bSbDJuXOvfWF81m=#3i%5QHj*eq$_f^$uBm%#64wDmFB#CdEKTTus>g{asdja4 z_FaVZ;2*6}$Hb#659@6%X=U}8>8o)Z87}FI)f0rwW>zx24)W~~Y#ERFKsttzml~fS zUwFLCpp*;|>&_%MLC%%cP_B)e7_K(Qxp^)rAK(BZXDSiyASA%2c=0;^OSY-QP_DBr ztz#)}{VQ#y;9Tvnsm>b0wKXb%*Yarw>gk+Tg4lZwW-kmgr zrsu93{Ynp0bz-TaJ~+#K<7{Dm_!C1bQBVvLPddkAw4a)% zei&rd@4GvSgD5OJ^QVd)u^_myh`OJ>ff#u(=ogk<`nUd}NJm%P57fH{l@})=woXcQ z?}hZ8g9=OpLtrQ=XO02t@o1r)0xiQmCyZ`H@fJ}AIlMxP^2Vyx`iReQp;igGU$i$a z*)2kv06V2+NYQ-Fu#0k=-w;O>QFyUqVY5~hek2yDL)FK>o~-nxzSZ$g)fHK@W1&ud ze||vep`zD+3$-;5Ctx`5EA-qPyjwDF+D>=PLK}fju%BOcAL&M>OA~gn2 z$n6>aF#q2SP%T};+ueTE_TJ%!^}WB_r-{V(v%fe;$q|RjRVuYix&92=gpt{;H`b@X{hZ!yX(ARoc9y3o|4^JjBH9H(?C*%2H=4Mab7|EH`!aLFd?41RN`iEj&_L6SgfhC0_44Fw zo@iQn@;|C#nlp$AN-`i~%8gtrKfYC0MU##I#Ye=|(Ir+=4x zZn81LLx${8TRz$gkG9uPlNzi!bjaOOXK4J;L8ZNA$}mXZ)YJ!|UvnE#>Wz?%&zaG! zXZt7KU;3|p@M4QUO$CV^%gwRm>gEy0adPUbw?x}xA|PvSzVj=c;@lo0yyg*hqME!2 zii=FUyRyD8BgU!nT(PiF72_8oxTHUc%H1ys>bXX<^#dxYV|a}X*J7oyatcD^_=?%j zZLs^Kt8a^#B*d|*%_}~^1ILfqT?FZ&&(Pi*f!qYL_HkL=-d~)_Bp+rCMM>;u##a1T z=c{}d){}_5ubgSpSu>8Yw<)3J=j0+MF;>4q+?3>5+PVaS^|(<6rlv*K=kSw>G@C76p{tu1)l}gs;uBM-$775t+rQ8`7Ww#@zi{8nIdr|<#CMW@_VeGW{3^N1;gKW?tNPF7H#AZRU8nBPKxm>8Ds7` zrmo~ckqMV*z1F;#%%`=D3kYk1m4zJC?msdzpOQ0{U=r66WqbCc+Hd_K=SUJpTCJc(cVt9DuDa%L)Uvt3 zIpng{Pg4Rio1z=$+<%H9d0pOLGwr385JbAW z8>PFXySux)OF%#x=>}<}q`SMj;ait_zt6MxdmsDz;~$ypT5HY`=NRK0W6A{&h%BD6 zKNhw?2Gd&(wMOGc7m2O-9Iyy&4J>+{aQiQQM-_i?=E#I3gf48;G9-FO9s4fre)nNM z@0>35oIS)_PNPyiD@P*bysPY$njrKUM^NWbN)tNCNaTJaunyaj= zG~Md~Ic~;{$K|+27u!u1I_ikd3h6RDIl_3?ZsyI{1#mQ`ea% z6$X&Y`RrqCeOfww>PB9}#gg)dL>z&$DqlNJmW+3G8z5cx9U#&YG{!nDVx8Mx%^Zjg z+I$5{XpA1Fpsca+B1Lmib(K4!qtSW)0FnpV(Mu#JGS7QN><-q*Y@9t!AxJ;M zJl70dcx|aHguu7prsxe|2GARr>W@VZrLuF@x=xG;#pWNC#P6-J1hKrRs1CQ5c4P%< zEc!Fg^DXMrMSr-O5d98k+U_6;rgs9!ITUi(2NY=jN*krz!e&%~j3ofrb0Ln}G70aYlf12e&i}Hm7Nyx&>;eq~4R- zl1Rp#ZpX-sK3Kn_weX;bV@juc-s0N<6*o(M>H0Ef5| z7e5wujJ}LOLJjVHC+@~AjG8MavGPpvayV8(c6Ea^cY=l-c$)I5o5X&|3JoQ+AYLD} zI>G)D<8j%mNwb+%;29Ii%@Y@f(MwRC9q|}$rplip9$-p@{g{oL&|Rpmx)cn3Ux+3U zTf4zu)|*S({PpgL=|ml5y4$QjBJ~V0Q=u7q0PqD9b=K`3@|TH09;zkhF39C6@DIe2 zYM-*qlScm6wuQW>npGca@wG^sr10Ps+U5ue%?#nYNq@|@FgZ@O5ng^k15yqA*K6^Z z@L@pS?Te2cy)d0e|CbX~ucbT?9VDrIL{T?n(XU~KH@>SIAXEg(l_lx%QxJw#`+XtT z6xoysQ50{M!Xz)~ii#@`8Q^unACGQ_8V$BiB#{HMu!D=yVaMMs=POm^V+w^`5P)=# ze2Q|=&v+D1$t+%t@-%n8n|4Kk*eWNDKzzl|BZVH(n~KPip*biw$;QBK+KFuESEl&g zw{QY$-1*p=y|3d)KSnh7=k;^BXUVeYNVu{#=f8^dy4S)vCl4?X88r~uSbdl`z?`qG z+(w_MxJK;uTQ`H7K7Ov4rt1@W3hqeDUYiFirE<39vIlbU1F@D|`@akTy(WPRa~78m z;Yn^x!3K&$UvWl(6y2;Di+P{d?bznfuK|G|Bo4$wu!p+gz0s4dmmd<9)-&J|E2D91 z@?IxAv_Cu~c`%qskcl2%ffstiE{F>BlWSCsdP5cp@EB$Jgha~eR7q^BvR@sD4$Mj! z?kcXzoeZJm0jVFql*Q1ow`+~mwA2C4`~l#1p6}t3qOQeL&e7>CEY}|H4bZY?BPC$5 zNW6pz{Z*&13cfseXuIA5a$>(;dT6j3ebPzUp#l$oX5D7Zt?-sQfbA$bjKv^TBneC6Gt#p=tl{fB&N z^A*(Y_J=Y}0W6V#f)GpPp6M#VgbX}KA|N@fK}m&h7IQj|Y|^mGr5c+oDBY2l?Gk=Y zMc?nPMKu;Bh4FS%go_h1u8$u+OocF(kCwO!?dE>xgR2S#Dm)oC<+Rsw!D*b=BVKX) zD8m)!C#P&!t+xlcC^KP?s3hvb5EHlL{{#osgJg1#I2tR~W^P#@MZQd!_O3%IUU6QCbs^tZ6Fm03d=RM?)ItOM7NUOv5 zR_8RZ>t^`m_x{kBP_E7?qN$qK(jgE~;2QG41`1eLsel(W5PfN-xHw%rtxCA>_3KJO zmCu`A+8H5!OM$b&=`dcXPS+Lbg@67bKDRC7J>tH|F!pRps{ zYok&&?TM-fD;3fgAiLyX+7#!v?q6_mHaVtHSzk2;1&_xP1oGH6#sYe{Bbq?)U=74B zZT(0~J(1y}CO0fDXQtXaP>k3t9fbj&an}2S}4MGzuRgQOH&}?fz1B-Zgsom|Rb3blk)T|5*nN z*ruRcf1{dy&H!w+$lMCqGMJIZSiIIvB)OcGL zGxKZkL#v-qse)&wx)u-i`->)kDpYR-rkLfMA6m8QAOgLrGg-W1dWActFzz9GMhYk;Gmpc z*Q-{zM){?ydwAAQo*i^E*(*qZl7_2I>I%##Nz_Oi3QR`mL|VQ=k75ur_S%Zg=J=~ z3fkUfi<+A_s9!7_9RwTLITotKU|e{-s4~mes7L$6^S!n*VEtu&K%bI|u6ML&#OsOY z+Q09TMUlGb-mMSV$V76Th_x;ue<6NO;GC zG2Aa?d*A}63X5zDUe6AuflsNT=8gXKIRb%Pxh1PbBMjR1L;XQFszb*-itys~YYRM> zA5YijyM|{F;!n;Te#Ww~q;&V8^;hRs~t#x;eI7JD?m9S=lWWHvM;qVfEf7H%79SOgGJ z+0!))1D-ejI5`ugP_OX05jHD&i5}hH7G_&CmCm)5#QGqU(YQAWm_gD!otb5d3V15x(g_+Xk9;VU~BjV7%5B2F*!-kNl z@)LhX`vynj2c0_AG2w-aTn)oFpT?}SHP4yW)Eb24^R@YJS&$`=MMV5a0fMHk$eIFa zjd(&=hGqtyEi!nUJ4~vEQ@oFOz-Tz~V0OV{RZLfkZ0E^QVK@(f$NhwTsP+A_PY0rZ zeI((=NW5aRJeE|AK{~m+pc0~B#)@Fr7_R@2{)1d1= zPyjAnT`AS@J>a_WsVGS&l%D-60QkNXXb->|g}}xB7z4;|#C0k%nYAIx8!BH&T#-La zpYQ`j$pLw)szHXXlt*3~L7zjTa$hJ4*s$(h`%TwVkJHcW(YwL< z)}OynvtchYa8pyQ9@j?)17)(<+bL^totAP{`Pqd*kFbtCqOK-iIn(}l6sqwA@uQbD z^3=zS%O|?cK#{JKR^wQ1Pp3$LshAz&wyFd)0my7Cewx%-V-eS>g%aTNex<50K<*HG zvG(-%#Lkv=FGBbR`+PEl{Gee#C${4ji6f!KGc zxoVZRQhxs@7|jMXawwHtk;8=%=oQ*(M7K3DYe@(&S^|BpyR(STR>%K``oNEe38&o_ zKD7$7if@YEwq3uWU=1FGG>a?sXntLjf?dDdvKpN$!$4K2&L7?5ueL+{t(h3{pDr0OZgkeF$S&5poJX1i2tb zAEI^BzQWgo1}JNvu$)*=y-zqA(-i@fN_qSRv8S24HeV}?G6@{35r4&lW9w?h z*XcXjKqskn9(l%4ohvn5%8ntPh^p-R4wIoqK)q*R3=BXQN&TagI?+@X?E_hk3U zRc;8swkzV+l#{WypWhrU7a-p>wHQ^HdR<&q1VRNqM+}wt{@o}C54ySx-Y70N?WU9h zB|eZ$fx5>CnsR(KmX;>8O2EF!IRR4jxdtfU3QNH&{*sT$fIr~pQ&l$L5=6ZwL(A;} zGu02ytIjoFKMd}QkXCiqy62*`qsceP-8>kQ0t=K;8&4`p#zvhdZ^2}pq(>DkP@<`5 z2TE;qjT2T1f!#u|`PCwavJ`O>Wdr64Qye&$S36-|OwKf$(!*LMJ4L(;Ad9ejF{k<4 zA~2Ctvu1Keak*FJP!lv0v6lDl)@7pXt`*O_*tygGhF8&IKzYqn{bRj3P3o*0uZ{hZ zRZ(hfRAUK84hR(2gHqW)yn@g4+Iv@3zD|FKvz@g$r#{|i;ZJ4-K{nF~_1D%*NS#^9 z$pxqraUN-F?R$1FH~tTI4I(hvx3qv zi*2np90->nwyLSmJ&n&5;eP*m5-JA3t~EQ z2lxfk+K)$=qRyye!wJXasM>B4ALkj1{5GSG2hf+6^Wc%5kC(b#tcau_H@m9#myfuQ z2Ryeof*k<24JFD4cbmd=TrJt%JGxqF<$wvcT!6l``UNfn)CkVy-xz^Ho&N7R?-7m5 z1K}pw04N`Ub0(+quCuijrfWEs2Y3=-xI_!c4S>4&2X25qke`#%=!xDG%qqat4(;|{ zFC7{bG2ov5U-x~B%!}F$) z@blbfivMDD8*g_*z9mQTCPCDHe%#GLZIV}1lm~conJwsGCU|d35inTIUW1OnW=H)` zI~~6kc#q!~J~((JS4C%xD{EJ9xG*(xYC;16Th#0J&1zFwxVa;6ynQ}!P5%Lq6ycba zhk&{OJ0O1s0J6!1Bc9nDo8krLEsu1*;V-tY7#~L%*68m1rK+BRQ=SkC`{FmTuQ$&9 zH&0U+{42?6Pg+4ks~De)U4Oi(53RbCohYic0s=t4r)HGRHH!ME zEqzeADP>gEP7Yve0#rtT84I+JzOHvVfnYGkp7_*X3v_a_Fro8Vs|6Q=+6Vb;e`U9q z;5GePbJF}741C@Nj?^(6XsHie%Aashxitx4PVE*{Gve|nrPosUB~-P!s_hbwcCuVl zOfNrM#0ZKLe`J~)fmXc-bA$u+uUZ|?BP`RG?>qTvlymuB9$H8*RHBU{5*12mNy3K} z1YZxRb`sK2JGfFud>HiWqCVFIHTwb&0NNDc!>n4j1ZlA;Ve& z4aYq{;FuD{kUGYvkv!At#{Lmcg9iJuKkIYo0YTZ1%B0cA%1jOi`hk1G^UB8y)PWuT zmItF}ZQ$P~qp=Sj7>WBoO^(0YS>=;E*bbCe??-r6rP8N#rhKQ+r3Y<~G~l8nPH2c^~AY;l2_BN;Bh{2nq@wi~~7*0X+p&=vtG! ze^rH*Un4x|T+UPiog{MmQD2_lF;LTWyGw1a*H+E!DW=Bx>2D0=^$#<2#3)<-Pt5)1 zSd;eeSxM>Qy8h|hWxJLy;tIR3Z;65I;UcHjHU{a__Q$^1)O3G<*LU#$&?j_W5YmId*{pe7(nR<)jVm{vP;&@qGSyMCF z(g=tnfw3G3$rHF}{Xsql3abe|$YNCOr2YL#8E{2;2V#M>UO&NMRA#M`6-t4#4{-1x zPVks>P^Rdg?(#W@ybhK~Nrc zsNRq;3y&A8j*dD^;0O^}$VCynd~Y@}n}7-Ac_N_WoBx^}N|Mtby;Ed?V?08%vC zD!j`1^DkGI&%1AC=Vnco5diUcAnig)dc$y|wf!%a1F$4P-#I4F*Q%jh^iRdvXXnk9 z2>@mAz1XpNORt>udZ5PxWFWJvHnV=)#}pq^*vAG_MA5oEA7W&N-{wYY6;#uh?Lf7u z`99Ht4D7W~EGjz|dgwv(g>}U4iZ24XZ~@aL?hkm#{87i>eb^~JVW80hNl5pW!MbwRnCYXItR%hwKIsN> z+nsY+P=VcE3Ekbk7i$g08Vu-25Gnz&|&%GAMEM{;#x8 znM_He<>6Th^&uQzxJJ{>_`kk-Hd{r{7;uf&7!cN(Mdj?NKka>^XsEy8Z{VoTiJ6q^ z7B#@m6tSfR5D-rwWl<#Y&eY=*w)q zH%AIU#1#WIi5xb5{v)9B@g0}L2k#q<@B&=!isrzqY6oC}068_{_{`2}yhRo`?zsSV z3wBpv;3jU)zv>1Z^&~zUnflYz{8mGwhPBK09O_>0DA@sR`@{FgdrV^?XRDl!fNTm< zRRV2}e;jGj?@otGSMvb3@4;ObFlu>Go-%&xe|u$Od%`~hdLc|sq2Ch=(GXqNw*LPR z&!hXql-XjuN6jUclPCZedf1UB5iHBO?;%b9+dldJSHt`;l1+(>s4gyC7#u-!=L$et z4K z*ALo?Fij;VKbVw~1?uAZs9Ojk$n;-#yF!C4$9e+Gxx3WBk#<`h{KtxU{~5y}R!M~bFTun3 z1pYi*g%gcTXxgN(n&tp>PzpMCYl8iS0yv;f5&jd(cVhv7d|DXRodMFhcJyH5vb`qn2ECKL4jp1oH@tZQ&E-<)Xf-gg|UuDj3)nFeyZa z1zIy24rE8b49org%10Pr6u#riYH{W5MCk%Hqo!2)QQTH{^fg`{tqZG_ItUsLrJEc4 z0UTFwKNs8JmW0xCQgtA%xPI`ACHiE+Jp$`Mz$L4$&CO|6Rjc#6?F5iG(^Fs8#QW>L zKn+v(1}5JKclU+?FKxJKxB>K7F`9O>e~bj1F#res%&XLrzi0m)WME5!KF*Bn-jxDd zUTtT81^_!3y-k)TKjV$BKucv;O-m!|U(L$)nZ2qu7dK$uiJ`iJ`M5*)D6nR$MFXIA zV-eu{m}VfP2T?9xhg*s^7wx zM1fYOXGa58t!pSxP2S{L_>D;nRG{x^quJk|jq}Nh7pCyF$)hDdof#=JA(})f!-X`H zl>k=$7e4qm;RH6FrEfSy`K8sIb{-ls&yhc7dkRQ@!y_P^jR1@cAU*W2vh^Mqlj!go zUO@XU^CHrA#(dcS2uB?F*8k&;F)%vG zsUK^R4HVE|*_s5wUykRZw%ZWLqPntb=q2Id!SsOa)Gr}DJ-u8O^g3futOo77WA@iQ ztAV@q_Rt~(;%U?Sa=1I?6ju;!DFm3vimM5nU9WSvq&m4)SJzD9!{af75bb{hKHv6! zAri_EH}d&!Qh^%UguVcd ^>;*1fKI`~qW;}Q(n6YhW%SeuwQEj^nBN(#M!%qsZ{ zbdBJ4Q%y?fFsxh}A-9i~LglTA;A0V{GGeOz*8kRfDr@Ve|NO9fX2jY^?eFO`DLzfW zgNnGEzFOV=#_q>~BP5Z`73yjNBz2LVX8qK&3$tcOfr$SbX!13i?hwweNknJ5PZo5& zV~FnPdTK^pJ@%z{sBW4T0lpY0)>1)7`}w~^fG;D0&pWKjc^}3-^Ltu~F8DXJF?(8h zrBs{dA*#yV4#L~!raW_MgfK-xA_kohF=!F;fFN;{4s$jt>2fBh$>Zv#bA)aX%awtS0{}?gBgo0oTWRkG)*a zQwImZ=-%Pq-^}*=6c}&A>Qj z-G&qxKq$5uqZSeV=)rpeFdjKRRxO4G%8w{Oy#6ZV=n!D#BMg^(oE8G9?eBPulf(Sq zw%G>*!wYeYzB0Edb2TYFphFT3BdX46cOn5wgy!_0cGK`Usek#^zY>_u{VpA-cSLjm zk;7gC6dsTvP_&l^*!6AN&GJUeg|y(pv?a9Y--b1Ni<;`jNpxV zFAxYk{e$%Lo*Wwg_lJUn_IL0J3HVZn$*EG)qq85CHI*Gc+hr^#KET2JGhK%b~&3GRaaUHAO&7z}u?CIjRBBx^o*cnO@n-@Jo+J|_#&nV4Rar59P zzdg0Z7$_O@ulB3Fk|{(&D%XCI(_Fh2uzMAm8sof0Bh`~*Z~b%mTg85K0H@%o4|CPcf7 zcdyUOF0s^?l?LmB^rGNnH5YX7zuUC`*v@Z%_5q*W8>w(zpRtMwFvqJNlPwZiJn_n1 zeqH$ujUWEnGzj1ne(IvgOa}Vz{IDgZ$DMIJ&UK9h%!*4o^KdrQ55(%6_a3kfV1Fbl zhsk$$*M$3a)nBzz*O!vz9ZwB%R+Q|nK=6~D9(W?^e_CMWh6RAFXNQxxFwRwmuJvF9 zhzwIGr!s$^1M9ou{X#HNDAxzvVI=?QQ@%t=L5_``C^C}kuYf`hJPtHR!eH@Fi?g-K z+e@F6BxZdBn-mPcmm)0Jhl4;VfNj9cvf1{lT3(!TImsK6?N!P>u(-ZLZ;KD!SR0VhyqCSsYf z!SOX9r@mIuzXm1@nvaMAMkkC6X4S$tcv(i>1hDYR+59p(5qfZE;sb-!&d%jwkbySi zY8q;}jXM7OY!MZPe}E*VJPh3AWwTm!2o)()Z_SB^Nc2A(e6wGVaoI+jh6WSG8*j$H z3K8UY$b9hY2%R+nMuSCaxL;1SxBjDbe>94Wp&iYYE?*Ov5n_vIj8J z^;H1jQ5^nOkM>Q*XJ+sIDbiLo)&?TPwFmp8+;L86_jz;oZwx|330FqYZQNHi! z-Dn08z;?bj{X8lj|H@~)Zea9g5fpA^fSzmtH0vhs-*8614&wf@iUPZiiu73+| zjJ{sE)~&EO<<75^Jbk+}2p~rCe+CQ`-UT%YtlBXE*r; zeH?^&nJzo~CRK)tw^9111+syi4v3kBoU{pp>daJcKV3F1?QW3~a)cA~1$$Ty%M^xI7Z0KKRd$?!)^=Qbm)pwZ9TluMO1n z`TliS$|OGRKNfT{@v9xzK8kNhzHmrJ`olfauNI|2_^`4$o0rb<#bD(&Fxd9Fni$hezkvly9hTC1vc~dp=PMmp_2ge$hW*Ki%Cj^(m9uP zFgOWNhcNA$7Nw-p8^~>KXkS4YHdj)XKO`22jqw7@TX6i13f}pmF@OdLI3QcXi*af2 zI(O9wb<{F~BrCaF|2SQr9tQO?^4Ea31E6Y zIk2Z~2h8S3z``;H?4!?c46dDYq*t^@3Aw}4YN^}6f5=cWN+PeQ1m_oSN z%Jsh76ML^<^>4Ngc-$wM)zv$j5Nnf%)tGM#+qC;EzQFj0pUd9~fH7R<958??f;d>O zGjE-N+cVOHiht(x_}8b@@RmowO^SevtUReF3#M?GOSFk(6g{N~||zqH!oMl|^NL=o2hDT`&DO*1#y; z5djA)(77VQM5ueLo(TErj-E0u=hmR_GdHh`VWQ`^Jt#oh{-pB)51N6oCwn;;SJJCy zutn$VEor>xt)PzrhHZrHe_y8^j`w-HB4WGP^*39%NZ^@T(m3rK>#I`45A(Rg zfUybyS^$Osl5P!RkmU@9e`G9O)TGP-%`zE8B4E=b1OMiM{qg&Uvy1Io7q{Ivk#1Jd ze(UUkT%lzK)_coh_SD;S)O7IhYcX+1^Jw6y%T_F(jT1A&1vShu)YPYMwWq8q2ZzK+ zSep8SoHO5YIelwkS8`u&XqDy%C8RG2IL?-Ulq^43W>BQt>Csg3SKeu*JNmD&Ik&bG z>fB5bP$GNrHgRax&SP^>^;f$kqZ10gN{KodS;huq9!I>Ym{@ zID+$ZCs)*!0ZV7|_MXp1$RW4Otn9c^-9c^Qxi4%w%|yI~c{bmyHM;9wmtTFyv{`+P zd&KTF@D%9aCGxcpAu3`wjQhSk{hLc>D61h-uF4A_C0~t=4d#OqU91`aPeX%u?!d{5 zr6EhyN5J!NaOII;t}=yPm=bdHXo*>Bf3cOXA)WAK0!~l4El4a}k64yquv?c0%Z(9) zz-x70Fl}=K=Mvbrv3p7{{slXWM#|jn%zZ4JFK!-R)DpX3;U`Pw@L*?dtX3@Urv240 z$=c-SIa$MI_Em>=Cl%|_2s%I(naMU6F)8H>;fn6H=n!g$*N<$XWd-ZvpD54|G+{LG z@vP=A$~~e*a^}7Yg_xp}xAV32b*`ohe3)wQZrv*X|37{(+V0UF`J*>*Q^+HW+bD+`(s*xI4bG@2Myy-5*8R! zv7_glpDbGFs<9bv_~1=@{9FUR?#=!>G!g=3ypaZ9k!j5Cj-Fk!Ul^6nrgM})EZ7m4 zfWnL$n^Q?%UxGp^k?U2Xj`r>)%iKEr_AA&a2WFtE+g+fuxo?y`YbPZW3{3A;0Ae6w zt$LkQTdC}gb+9t+O$P-%lt|6nxZ^Fqk53C^>D>57SQdeZaDJO8d?8Mj?Vcem<#R#) zmBT+pvswv8F3m(NEnhLH7n@4ZvZ|Fw&Dw9ga@7HbO9d(?&AN@kHi%FrxM!n?RA<(7 zZOAd0kmP^h)*3f?P-yrSEF54LikUkxNf{ITWr4^%R>*I?gQZnZ;>o1ZEV@NDq|(9| z1|M%8Csn%~cG)qbg)CMa{w&Z~m5y#t`;3HrCQtRyWvrcL(H<>oV6VR*T8Z4%QGdS3 z{Z;H+hLQb8fXEM+6-^#6do&EHJub`{?p-wMYYfUot1~3{tJ;odbGObX4{$+K{j9BR zYN|C%Py2w_v7^3KF>qgH>)7pssLJDah7Gn4uIYNoS&^CbNMGMmBETYt8vKI7CzyvT zQ#lMmeD@4@(tj5vvsphK-4P+M>kp%b{W56*=Lt7n*<6q=w*bk{ocy^CewP{z;9ARBj}uerTX-1NzEb)QgoM=exJ+Ticx+ zyqI&Bh`gfVVRPlOiC$z3FV|rr{nhp%8$z6M^5;$WFys6PfX!mEw>zC`+H&#gb{RIM zImiXkcbm|~Y@AQPetUp#46+De?T0J|P_2_b9&Qq$$&t4OSj%CgX(8co4$(RT{;@j5 z-t^kK`s*H@3z*}Ug5xejsHzkB>ZQx%zq;pMgvm>H=PiugGfu`JW!Q*BDO)wKbrxV+ zz0_z>;pKu{-~tbML&ekh!w*DM<6LYp6$zZkIRl;`(C>2|DrmP5YVr?Ts`#3ozYEl{ z1@G4k^(XP6>B;IF73^GMR(on3<3jVfk+9CWVZcq6GkMN`S;#gYY-I?cyy_}ZRFr*f z5#8}*yef?Tl<lQ#*Y z9zqH!I4ysOxi|CA>Q+i%MpG(h93Yp(bYhs;{usQ%tI1#e^;&>+@};r@9mv zZ+9t!zLF7#HbVz%TLY_fjwnuv+#n?#=P^o@J5U4LT(+COA(`cXs{hGQfTUNsXC){u z)E)U=HteK-+kMZ6aWH)Mz7O|KhWmXTjC$!D)k}ulo%@7BuC1Od{vW(tH*3O~}s7JPjH8IK(yC&J{cR5WCf8NQjplQLDhnvsF{l{tH@ zbh2`_S6B9#HMDL1>nkFtrA|v9iW1~pSNgHcueHyQBELeh>8K~rr3z)dnT*AH&-2OS zQfi?Turai3*gB$C_F``E$s5^`K)zS^u_UuQuGA@?hjfzXvCYWB!;rg%}8ogj8H^Rn=s9mE-BRN z9gObq3ij^({L6&y@wY<*z66pw+ElxvUYnLSd7(|P&S=_^K(kQETS0ll*qPk!=COyu zg6in;%T5#`Xc{|@r5H(YU~(fYVe1RJ#6nToT@C!?RmD|hVIuxGE2=Xsq=>|G(CN90 zNcRR^nJ^scxLzkK4X<$f#i50s5X0VW?{mMCGwa^>5+x(RP1o)-Ea-tt=h*%Bd2Y(2 z)buB&be<=|S-H1Ka21XN!kipq2x6j+!Ky{yKvK~4BdZ04l$kvitC;gA!*%yba~ly{ zNbMF-Cay;e>T7I}63iOhmWQ>KpQ~@$Sd>we53#Pj)xOS=H?C5xPsiF5CMi$s4CdM&Tei=R5PvN3Y|ya)zdu8^MJ0 zwphZoDisfRj?ICTdddIlsA~ZO!u$~`D*d_Kr&}F9JM6T|lpoQ6>Uh|I|7vTcGFFb*Cp#v>81#aU*?rf}YX@;*74S-po{99+D??qzgY%}2#C-}({4 z4-$bM%nuq|K*)wcnfg;P*OgO!Q=)f$(^OggLRs^|bmjW-F$y=ojkpgnobSsGQU*#h z+f7`2y8W@|j_WlI!cNrVc1Eh}&O=-3*N;iKv{K!5Jc`mV91UEq4_a<}@0p4$cd=-> z(#29s)1|fEvdmBzl^{dEe5%b*_0un?YcFdG?@V@TQ^%5hu}XcmY9_A@iBs(R6`3P0 z|M8BH1(_|QR*_VNVi3!bYyk`V9dQ3>%nvg?HCq8HU)TA_P`|Fo)?Utd{xwwCAlGrg zFLN>{dN$#Frm!G3%HY_mSUXfgYqSf$D|DT?9B=#V(u8XOft+-iQ3&N$Ex$=c zt;=)DsfP=FpzMNP~50kB_)iC8Sr7JLSjZ*H>#NYv^*oRC~rA-wBf_L9tc~vGMv@}T3D?D zxOs2U7HC)11*)Dpyl`6es}`p>F2Nb(2g)Ff3%Zvmp0D)Qp_V^u9*0H@7VlgIk&l9;IBzvWd`6X6Q|O zj9ophQQqKbc^ZKy*U2m7C&7ZSMXgNJt)xxQFoTq%Ak44%rFhnkv3QKZaM4)>3XsAb=I-(LF&UbzV+KG*NfgNGiBW1k*?j%nnL)U>S zpHaH4PM5=&b7ZD0hkZ1j`qHKYlcd;$;1~EFylGo&hQS`Y*Ur_9)hqYYM=40?+{h*_ z-wD!H=m1FcGq76x?p@umnp`Oa^ngV*7-`jamGL_6Q&`27H#uSgdZ7dKa6QCh5GSjY)#h#S$#h`O2mT4)?Vz-2{;z&-%498=1O zk)&g4R$ynR2{HDqh+jzE#>kp1pBoOoK~~Qvh~l$(b1x-I*%x&?v?;eLr7~}gLbmbw$dI@qx6@(aog|8(imd8DAv^gs)yNGkNphJ48 z+&*vFHlq#dQV~#)lC!ob6@*E5roGx#?SAakuM#S|HLA@_F^G5kXp?D`qQ;0pTU|8v}RI2O^k;wJ^QT{+3G!9eU~1YDntr4J0BOJ=Mu1`3J-0$P4))^6=9Xq!N}+JBn&Zk=m<;g1H1E%50Vk2KZV!=Q1czisdTgliXHS+77eCltSg}Dm!E(Ff+ z%F*SXfR35NSz`ZNx(ZL^ROO@oL`@bg3({thEUp?9l|K1%=BLSlKhj7w}Eh z$g0(;&((z*&bRnJn%4ger@C5l(}wE#h=F0OQ@`|<+DnaD<@lIj7Qxt0Z#7`AE+Z^V z$cEq-7>RjTpcQP!h`c@JI0QHYO2qgpZ3`CG+|i1 z<0{&P(osE}g#GhLJX$F5iC`6Cza2iJLe3U>2I0&PgSIUl=le1FDkXU5dxrT= zt_ltqXZ|&Drv^!aX@kM4_oLEH?-|PaYBpTXTdX>QjKNs1WwS!p*k>B=HRqMp4^7U_a4v`!hsm69+!*JHw;z@4|1ip6kuBO3ES-PO_#YBK08EMdLTy(XgSQfL83VEF076A z>n3_5|3~uGudZjVm>AKS-mw95_@jI32qJ^yWao1~2hRE15gre({dh)vzw18Un%|(? zOmysd&0B!Mv1h;95!tyxHCJtbTx4cwW50L4>+>N|d`tIJnYtVk14c>S*O)%TjZlJqyMVEM$iE3kr^)d8K^a~$#ji`w51;)B zvbWDa3V7j>9RE@1SRV*D8*K;O!b(Xn3eci0MsJgb4q}>*)d^)0nzYnN1YB>4WU{G| zuZZ+%V;(H^NXrlJ7t75^ihw)ojlyb+{h{}52w&v~k3<4K>VGw|ggp2fL zQDF0c)enbPL=ogB3*IE#6%5V7kJe&^O>XpUw$f~Dt@#RBLdEHP9_4+o@QOZNksvOD zlb45dys5S&Uu6TH;YGHA>=)sazTGp^8yUmpew}=7L{0tE+-39D*424X)zxq{5X|$P z={zE}71lOCxYdUvP86aNVQ>L4p9}plM;g3MDlj(S4WjXA>TeEdF$V)4<|I#|o2LbB zncvAQr!tEYPJMTPNM*Nyj$<9NBL#_~>}DTlEPo~HYRel7p26!|DbQY|ql*rmmbX%T zu~73)-@9_1fe$m-Gd-UUU_75ChKJW!f&DBBeuo0=<-iCza1%D@zR|$Z6bklq(A(F4 zk_Uz;C4YLWF``@qoP8f~JzykU-sa2Y{V6{sQigB-aCL@whYUm^`dyVQIf?}!y3iWY z)jZE=Hh}hAcQe`v?PMu7;zI@Q?bM)CLHbfeBe!+0crlD!;IktHMDrnmgInRU`@dpK z=Le6X>Tn%D)9QxD`T+X)lcF5Z@Y-U<@|Lnsn&!FUqwFLVyW=V^`8kzWfx4f`V~9YX zeODX!0^Iy1Zv(tJlyN`)q73M}o8$WimCm&C)dR!o1f45#qm7buL48K>h z1|fq^Jp~Y2U(^o}$$&_;-0EOrs1)TC$qLxsmvP0$k}w=tddq3rnDXlgA!WF3@H*}% zBygrt?ioqJ)bOdQt^!KB`kI>{NgO;Eba=a092yy!pv}Aa8WFE&o0%`#1FO+I4v0@g zJk?eYpb|jW4wM@Srx%Mh+Qt_OvvJNj+!dP*AMe8%S zx#h1_h6(h0&e~S@0>RdlgXJl1ac@>8>&$`)c<3|RGReak_9&0M(rFON58w6C&bli* z2+$sU_5Ge>xpe|4sWrHx2^{M0}9&h4}o@;j`Y@h6F%4x$6)K5NzqA4B<2bJP3j%WEHkYEGnLnKYW zfL(t?Tub_PPO_`kZ#}=wa5VZ^CJWatwT%CKh;9~oy)IeCg-kCMZM}=G1}rL*JR)z?5bTDY0CZdEnlt!5t?2#Hk)cc+RQ^X zRyw*DYZcppsb@SC0`hKCbvM)hGB6<&JO@wS{_`A15;TL z&8;p80?{lDh{&`_mFf?BDgE(F6(p21i5PmAWO0?+>J==D+w_7n=oA*|&dF4)l1?{2 zai|w((9LANM8xSSa#ARzMe9(n(TGL3k2ev%qbRVtdi-{DwzBZVtic4 zsrr5DXY3HeAzj~4(iyuBfcWLo^xD|7D8(GgHC9S$t4E@tESb=+_~;i zEEQa3e`ng6DoArK8NV>>fy#8Sl;<6F#qnObk5;p5aHC*K4mQ;eHdBtnoLytkUfeJb zk*OBtoFVvihZug>$aa0hE?0NA;viA>^&q3no#N1?sa(fQ!tehh>@A?GTD!JkflaG4 zs7TkQ1tg?F>6Gpc>F(Zwba#hzcgF?=q@^1+NQiWU)W5dpoaZ^;_rKqG$6)AC)>?PX zd(LZK*If4+Jxrx?qKO`)Q`eXiXe5;ECI`XOhwRav4Tmq_%}Kwlm0Mb0E%#>SNBy%>xr zfmX21Yx4$cwSXEqqN&WzECazx=Kaqj!tY&nNmJcMJm!svq<`5l{uC85=Pe*>rLive z3)ktCy4XSNDrKp>oUNi*LwzbU9N5c%xF9uu7aYNePk1-S_5sKosU_4B^XGo^{w(L> zLwU9YJ5W(VEe{m589DrHULF&!;SQJ^F;9p2 z&ficK*Y5?XpA-H#$@ghey?K6z7=Y@a=JPi0c_5L_xD2K1-sP2`^R1a^*0mA#@)YOH z%Xv`kKV2LyS&$z&wb8&_U;mJir`+Wae}sY2auKP*Dm{mgUw_ z*g>JZ_Y&r2&P)TKpD({p-ecQ&`ClrPMvU?Raur@n#p(LS@w84+1A@rH_?%aAN+bRQ z;lP~3C(GbBSV+?I8(&(#_;?0%=9)87fpO2e<~EC)UWw!p+Qqb_p`xTUlNF_8ep()n z#pQF&J+A8aM`C=kWQ?ntV9>N8t;&56V`hmyKm%5pAMV`ru3}ZpEFgAq=upFT9>)ro z>eWTvaKC1supfQ#W9Ic?tMAq&!P%j9bP83tvpR+401AD@%qP=dld02zB?Jl0`h`P? zB-n58?F?+3W`p9cToT0&JrK#1r-_^1C=HAm+ zA?Xq?Ba7;4N2Yl->Wn-?GB4G7g*)Yl$cW>rXkc0c>Sc>`2+68puj^7I(jZct{jng3 zHr&2~s&KvVJBUcs3~*kUx!1#Sz=wTN5%iIR0MekZRcgzk)1OH67At;}nrWc*2J7MB z@%i=TYkd*y*W)vLvMspM3GJ?}R$30Utdtp4Ry4TGt;0aoP=_fY z56K!gSeNfC%IB#b4F~W=Z%xXk8c1}_(Z@b^iR~e`LJt#Y)vhT}cB22R_UU4f!dzO_ zt(xYGr>AWzM(n75M50Y=Gi#;kv|c9I$?m7!QX=I^^*WQf!-UGNSz>quTWpR(c$qMy zfcAX_!<<|V2suz%Zuzd}H)dCN*S})6FIUKX z%EKz5pj)Zt(vZ{7%^?P5e8hK4+~%prD6D88*oOj+YjW+s=hWviWU-!y@-M#AEm#w& zZZc$!J~gbZ9ZVBK78`#|kv)>ZbeGl?2L^%z2}}hOSw(zuZn;!iCQOpt#H(g{yieIMy;(ZG#3`OaJzGNimgC$W+NRqCvJtm539r#o{)L1px9vN&7r{#JN4{a68!8VegUI0tJjH>SI1V69P#iQrrva+rr^k7ZD9_kNYWE8QmbOIK(7 zkb6{ThskbF3Bx#e%lOHet22Oksvq|l6YX0MEIvDDF3$lpS2H(XA9cX~wbaz0?X{X4 z!(ORz@>gm53P`xpC`jn*=3C&KbPiMmOo^N<#`9vjvX2~t59ut*-!kLr2mG#_=0OJ$ z_y5dZYiy7t+8BBLsRtK7X|+g|uGzbr$on@`^52mu^2`7Qm*?t2qB25 zKIB=5rwzcjg$hJdQ4ICt`=Y0J5=41nCoKz`11?7%f1M2qW6`?LfTZ^>3| zhhCDImg$56jLm_d|Bd$-$GouHKt;WbE@WnxaeRamih$A?7klriOC+p%cE~UUU<@B;t0++XDg8$e!PsxZ8ih-iTI=#*h4ER8G3D}@>9wT&ka*@RGOskO(?OwK&+ZY4 z5qKtNdGUH@B|r6bsjXcMA97IkXCGfAbKm*yAe8=s9yye5DB3$gJ$bw23&#ZQQU0}i zWqG%EFy4ephbOLdQ#fq+7Hb8Y?oq<@X#TGRez7!I2EOs=R)#cm&$f1p6+@DeODna% z;dSQo$UjB+{svFp(_e;2r_la2DJ~Pcp+ymDLpgda(hRB{`t4eor$%(wmmSS4+@(f) zttk-!Q9`3vRe{Td{2x2d&y|GqPa4|%Fw?SuFal{z?4m=!{gy2Z9uCie?Rp#H3|V#7 z-ak3zk(U_uh{o9x%6HE6bD~u^Ev-5|X&FuSXds3l((#iNtB+Xck+5dpA*%Upz4e>H zyzYt=I}HRVh^lSb_{zw1DPuT=8IETR4%3U}H#)klpvfCbwiF)!v#(89+(UpW500JA(9lBS7 zq|R{m4~4{=D+KgX(*HCMiLW50Y)bgBf1%7xc+(9mO`-mUZ63ZXwkxusRjZO|N{Zh_ z*HTzR2+*bApMk8>Yz(Ow~7ggrtscZi~bvw&U%_zv%%6lgM!B_n2I8fbxU^ZNoO z6%4%jf1<$&7v3vtY;>L&fT~1w#VEs9Lp=UH?eu45)FMj+Bxec_hS|<^?*M{>y@^a_)I)u ztc%S)6$XZo!*6!`b+w(aw)m0M@n%K}k?4d;s?0N#t%6kU58JBNLpXIbM(U1PoC^j0 zDTFTmYzJ9TWP2XM$`sO2^X0UCx}M>F2NmntvA$n8UYP}zE01l>SGKk2?pgfcojJ98 zk_~(q9SjDDL-Xz4hPwsRHgyI@?Tj1^IQ>&e)N}2LOTIk->C6nc?f{k|n`ktauwhrS zJPd;m4>0f7r^Gxp9OLJw4z;azeDhW6-__@9We(GeO>C1!J#%IBde>7pcV*4dVqbUM zAP{YkuL%Y}?wG0ob9&uJPF)`}s|E|H~Z zXtPYBNA+VL28)h_Mmf~{1z zGENx#v&XQLrxPT{UR`qHD=2WE_jX`5UlXGfjd4z5{AlaTgKh7bcO7_e9~^O(3O`4m>g^$syov@d&$e3pOPT~r!`N1)`(MMdxK8!@N-|Y zt|QKl>dVClJh7DCwDBrvUa1QV*TQpox_7isOyh|ne75S8y?Y+8415DS9DyIr%b(r$Ak%bSQ^8lv|$~3zOz-V zU7PvHGukbHR!U8;u1HW;{2HMTCYU0zym#>#p(5$b1OqAEP^=}6lD^$Gzsl!09HR5> zD$WDd@XDVwoe3Y?84kXOuc;hu$V!|+8jUqs8q4Z!qG5TYUxQ#>G|`1p^)o(|Gw7ly zP2OrM?`wXBWtj;J2wU&ixeAk_$D>;MWXYjZu5PkN4U!(KzO4oc*mHW|X!0?{$fL7Fz1Rm}O(Yk+Ic*s0)4?%g~vU@3o*_3IYk)19Dhlz$D2#O&MH! zIMr`{gT-xNp7~&Z>LSq~3#ANL%x6w6sy|Z7pj*CMFfW5|*i}`<*TrhO3Z9k*R#=LP zSD}+p0d;jO?J^%8i_SQgrhF^cM)APMzd~J-ZK+U2;uOYD{-(+J zoL4&=^g9>x`oAvl%^}cJ#{RLbZO@kh8@!BAFx38m%x@rQV6Dr6aEQk1u5E!8mHOC+D_aq`?_q! zA6svd#%RDi3Ml=T>wq7Qrop5xmFBb{5)+BNzIem-sfP$ttly3{MR-4u17UWq8|?Hm zgnG7Y4H)9|Rp5zbfPWCBD$%cyHvgRBwhx)Z&wV?uZGv=B^Up)x^odTKR9yorvidru zL%N6afXaNKf=*^%nTW=&W?Poe_}75#U3ODob1(~#O&XOt8VJl!l)M2v z@nOOusT;64xEjk@(VJr*ZTHr7Y{@CUEYT6+wOj&4B`8#AQ7j(U)^D^Oj|gd-1G|AL znK@32fQq_P#8^958L$nG)c|GP)Yej&_=eq>=WlZZCPrvk*=*%_NC}Uh6r6WS?s!s8 zISSD46r+e})0-VaPO zHd*n?}Yl?wDOhrXwM`!4`fMteb zGp(Lq%z~Eb#rZXwtj#dOI0!NQPMN=* zR{Osmr#dPH$b5qBei`ZIU&sSdT`uTwRft7o&@#@y3@%E#T-Ka$0oqvmRWe4HGy|Ad zSutbZgIgPX>*MEOp>yuCXyTRLx0R2^s5;lO8WLG?JaRiy3mpr#c;!LWp@8H-IDn6b zytR|`7=TEvLG-%--l0`gf%Jr)=B3}ny1>J08c~0x4gWhYyXx^F$EWfUp6_WCa@}tw<;;(cLY&R3B7F01_5HG z00p3F#rRVQi*ysguar`h)#%U}3`|To7-wsAC1%ENTsJWbAU`@u5!$%-{g^L1pcDX( zGKJsu2;Cii-z?Q%_vv(qN(UvzkdBYo>~jHPp#yuJFt)qP9$HJAn;*S;T9F9|!aW3F z7jgtU5IHzSk{r0N*HOq~1OuH>Pt=pEAm^L6c{nAQZ%XJHUH!xPG1cY;sZRj}g@7&g zPjm1VY3)xoq&$4j>`ta)hC)I?CW8yApF|JMn5_#$FoP<1QZ>oZ+TR!^JU*O}pzIk! z$>T{9L8KOj|5VZli>xhFGA4v6$Z62fDP+Y7veh(hDTo*{%9|0QA=)Xtq~dlypidl1 z#C+$#^brIAT;NAX#vjttpsNlh$WE%(lFt~9IW^K+0C<#tTI2I5*CALHD^>lj-JSZ^ zJ;0y*xH&nnq1Z&|nM)bX{<}|SHu55|13_%~x!1An+@=|i!*{7U8N>r=A2p`^-I6yo z&_SwVY!B4JwApSuXj;Ink2%!_^;XU7IX^BlE-E|FH^(%pC_>hVsyCnmc3b( zPy4her<#C{0}~X$YA(mg&CgY?Mupv5^B6D@_>Vm^0tUvct8T7}_x;wB+8f0%o$m~z zGq?2rbTR$SWP#J?4;D(F)yTt)pZ`5Fm=+-JR_?comRunc;PYV>rf8_Zp>O8vRCQrA zZ*IH7ud{a4a#k}>B|Vq||DO9LY1mYW@<~iR~O)9C->81>5`lnxJqEyc{pVzdUN#MzOI7Twks&ovda z-p#mp>uQSpJxZ`N&|NX9RS#3v`BqJ?!$sqR(^`&kQA0YpEdp%B2kqDDX*0#l6~Dxh z^Z5xy|2Ae@xG~RUF=lwOE;fqI9IntL_qo(JJo;zjUD+IaTjbO6H@t76qy4)ja)dEp z&97WdXsW%v@~HO~D3W_!Y6%|yXIwQV0q=GST=(-{fc{7Os+#Lmo!OI(Gu)>KvmX-lCWbN31PuvB3Vv>)S$wXSB zqf^sLBLuw}pn{DyzQvyOV6vK6Nwzp{=3CF#dTocmq+&XG zyk(=s>V-uX*Iltd;GwJW$5X(a1v{{&beHn5-K1u_Dp`#>olkDN##U=$l;Hc{yR06E z9hZ)r8`J9giJv8+2bC2BXk?OEILFR*CMCq9No{lzY+E)7Ef(ra+JVb!y)JD-LqcM@ z?)L4r4h3(I-o9}^%CTN*ejoMn4W)yFLmzHHm)G@XG7UYwl;v!t&HYWZ-|gGMWLDOP zyF)+Iu`Gd!T2q;piv=qhcJ>Li=HYUCG^VB6_i=Gp-@bG0V-`Ky`e)TdMExO@lDrdz zX4ZVw3inzyDz^I$S#oc(MhhiDy{uigM(>1YoM(0229AI9Z`Sma#>=p@yc3UnL8II1 z9J^c9rI+P>A{81Hl|*dU{$9^>hvu}7*tS_DW(-jKH|oX&Ir1ndC`3qo&fd?rI2B#D zxvh9eblzQPYqq&oEcsk6v)e4ZPGvLx#DDUQYO6`LOf50pwpB{-{>qq2gVg&-M0<_B zu7{$U$Dxk;V3m=mA(Ax%F@^DOGX;~rX@zED7;`eOUbFZGiGVsqYC`es>t2ms_J%$!>vA-x&B%djpg*Id6 zC>T(n-Skadpa2%lbpvvjhcB*z3o z_g9})N|eM_Ja?Im-&BKoVcj1iiIrz7btB!YCt@hxZU7@l{xw}TWYe^qL=T27oGn;Y zJ#Q)o-ktw85Kk8=hA4`JumZf=pWNcKJy@z*mhZAVbMpNy)|={G&4LV2lATOK;4s z&Ck(-?0)wf@d_KIWtHrS*|Hi?YuZ9HAI6l!lthh7?yjBdpN z1$sQR_;-w=BJa<9VEHfhcvC35Skma+&YvQR#LfbRn-SuBNb;UN=!*6dqSjx!?$24N zKz$L&>op2Vq(gg^g2pydIj_*|Wx=wo2LtJl9s!@t8Gy-bZrB!WUP%X{hXs1srg(Z)Bo<1( z2LF-9mcdV{#sJVB1(dCuG|F}?2-34JpmBCS#!5Ok4S|qJj&~V|z5m$L%GC*8Fmg+U z-(%KR!Y+hs&x#O*ez4ESXEk~rm-#xJmbIw=?R!Q15wC6~OksmEJxgxeX~&j=wvO38 zq8#a{>k{ru6qUGscD}+g4IErFG~jlG?!7BfF!<%F*tOdConu9O{A*VVGW!<+`5Q={ z^h1=3tfmfHd}9TI&+OfqPFrGr*h!M}0HZ@2^*wJ=#mB$Lby_)?FrN?@zr{|AU9LKiZnYQYZiI?FZ0QbFVa!o9%i1;U01nB?wF*IrtXO-sH| ztHNQDGvfOPAgLk7&z2`B(MU@+{d}f^jh5bs(eKVnuSKir}|=Dbs*|(rMXt;QDgrCsoAbF7^^dXPC+{->VA8J`6KTw21cj# zU$dVInvlF;bg_l}o4jFukgb1)860MCMM!gRYEUrJh# z9P|8LQA%1Yd%j%87t6t4JVDSpD&N?mPdaA1;yB1b%AU#Rf6NCJ54y}6JoU@X!+Tq& zVJX{Fa;D^HE~{PNm5dkMKdJC-t=?FvQpKVHo76$Jj3FqwZraGg%{L06H>~;7qm}L- z478LzU(WqZY2b94a+4rZweI9cG3D{?GvV}pR9z;TFruakAa7{QH4%r8273uaTct^1 zDwC{c)vGDf`#?C7h)?jOfr>!}Np~3bwL#i+C@r+qB(xfa(lY~3r~NU}VS&T_qg|3c zXFP^&xX3}e)TvnTs2=zzfNXmt&b=d-w1$8+;$Du$c2-1dIus)ysV?+SV=qCkT!q-} zi!0IvffMJBZL10X{5LkDOp|SFq?g-3DaqnyKT~sHFI) znP6aCo(Wm~K|o^iu$)$IfxGQ7cBV=^yA|e>6$50r`9b{k|Jg;2q^x_EBF8gVX6tHYnr`-H!dO#$9;TBBa{fZXy}M`5o9#L@zPWT z=j`wPkJUf}q%Q284_xs;y$=}uZ*HT1snQnEtg6GQPbuJC!v>fb97>WAv$#j-Aew+C zx~N!U-plIqd_jz`9Bgz5vg0sY5+ z5#Xkxs8a;VlWsX_OcW6@B$ocGvj=pqJVvBF_GS;Mf!!S)Iqz%GHC3Y1`=jenQa&k} zrA_Pi>u?t#?8ZNS0}=uCqrIb5>@9a68Z07`-WW2i4dC>?jT-hPX#`AV7(ZdFQA zg@cJ?9aMhHmww#{A1mPdCxD#lXm!ANGwg~*sY6t3QA_;4J?Z|#OqfaxB6zGrWbSOg zV}ACHPa~k(m?7Q1zSF+{E7!<5LjMoR;#}Uy_+D{NEbbZ@VvI004i6C{as{5q8Dcd( zd>v$9cR-o`M01qcX@BKA5kn%Wtv>)w9KT*3G>!=^1a1W}2VfP+#b9bTB`@e1 zZQk1OBL{VTz2g64lV}Kj@M{CV$#lclpg9XFF-bcZGqZno^kgj9>S|FE1H&)$*aN-} zXgG-X8uTAB(PEP!aLck62#79HNa$u>^bn{RTNPJQypo9+11vg57!BvBS6XEE9a;yr zH3P6|chSAsed01!Ya^#Bbfy~{6&2?`#XX1bXW^s2FFiWv(*_I-yB#E${zmh6Z+%>G z>9n;KHFA&*I28xpSr8q9of?J~9i(n-o&j#xG)LFN^p1M6<$yUXHv;Yd=b`qvM`i^% zE|fes85M9l)kD-DPGjguZ;U~i27_f;h5iC#)v$es#t8Vnc_~WH3ZLDlJ1^D#Fle{r zN7H*26CF|<7AhTuWL+osV1QKo$8EKPPHL6D^WwDMjU)l10I>!DDs*yXWSaDk7x?(~ zil9TUQTQ)-5`@+MJa(U2Egas?3B^$)M%ZX%UV&7kR%1 zCV|fj?v?AoA1HriAGd-Qf70=Q6;{0bc^eZ1!KW%I&LFtO|4rVD2GN?Y>J z<`jqBcyQ3Ll;*xJBe2jO0{>q(eQDQpG!15Pw2D53bah)({F&D00c2Zaag8p!GP3); zjSUfy|Mn?c*i-xy|M3mh$lP`X?F@0KJ8@GAgCq$r1HxsIQU>)VPwS1`z%{QGv~ zHk{rRQf_RIPvBXzS47>#dtqR}TA;IUA zdl~d!FG@}hzZA`kaNPj7^ySi<@)zjM{!jo0$$TuGF0ko9X`D{_XOjLO&n1%~lvGKy zoL~VE+ZmyPhvU7>(2F?#W#GxR>EKf*Vgz3#+g-MqWKf0}Y^(q?-*&Tf%aN}Qml@wR z)wcbW+$JY+QX{mX+p}%*jceO=s78?qWnF(%Dv*{+=d#(TY&(dHqml6(`LNa#A&ugO+wN8k$^;|yryvYsozt$Prn{b$52j?wTJ3DlIuQwf!U?R^s%px>z zXUo*bm`*wh{2p#r;wx>k5K;F5DuX$NB#NxUj1gF>L$}&+|Bd zZJ;=nfD=LrLU&VWVZYCJhi(qLSgXY|cwGjWZpnPF44-q`W_Ul`?JRz4bJ?YJTXK-d z8cPJf7bORCS$O3SEOSVozyIM~@Yvb+v(ZfUEwQJ%ao0rl3J z4w?M?o|{U*sMp@C!(~ZJ(TlN})kEmD|9S#(?)LjAC2i{znAZzkhzSHdV+NJf*RujXYmgLO= zk>sy1AWV)1H(z+Ulupb+*MqOeR;qbK;v*J?(9lps9DjT=vTPYe>&3>AA5JSeStqrM zD#eN-FpNZwCog#v0Tbt4B_`@oI3Y$`8#SMlf}$YesaM4)8PeoSI6DzL0yzE&B?mlY zyhLCr^fu2-&bj)%TO}9ql}O*4qN@EQ30lzG`3odWw809sinPN>%r&~}CxQ0cbvx7sNC8q-YLXhqxD$2s$U)sw z$#ldk3}zyTEL8AaL4qQJKt%hM1NODh<8*5v5FPJpEeih;6iKPUQq?IAZ=D<#2D+rv zcy+Wb;C1nAmd+w4OG(fD4wO^k!&-O99kKm&M7*lGi*~&x- zGM}jo=-FnnzI2`0$nYIbR#y6Ji@0+AF2OP7EOIV#X~&hf#{lO#I41OvF^~O{F1(E` z#hVK7Zx0|n?t|K5!gnXWBbE{IR z)X}u3W;&=8&OpB3-fwX#8IPrsh#)4APb*a^nP@S=sqI?h#;(;J`xNib3@W54Pr{?) z*l15lYTO8xeU@PJ7X-vc1D=fxVIKl`R$nCf1Cp6YP=TXf3>Ai&eT4{AVi0ObJ8 zupa=@39gXuZ36DJJBKGVtY zL!MgOa(n>NouV@-iqt40_hMs&O=k9n?`J$r)PABi;6^wYU64z-ZixhfLDTuOT^Ynt z%4(p75uS*?U94}aFao5MztA5D0=SfboMHA1SzyZJy@Fk+5CD!ZqgfO8@-Q)cp>Oej z9ji>EZPJL><+t8_-nsw%;=l5|AsWD|@rASDkNR0?zQwIh2YTU(XXs1CTSKDO6eZK#_%Z%}jgYZn#5k7HZ$#mOY z_2m@kb8^7C--c%Kx=6FLvr{uMF+BvIy06dG7}xqe_=ZMA@E5I~N(9OHuL`f7m>y7L z?}5~4Y~l$R7%D>!jkJ|5a;u-v{PA3%0AZHGt_4;Y|^|h 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 z∨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 Date: Fri, 26 Aug 2022 11:06:05 +0200 Subject: [PATCH 32/62] Remove replacement of hyphens with underscores in project spaces (#326) --- .../dtos/projectmanagement/ProjectSpace.groovy | 1 - .../dtos/projectmanagement/ProjectSpaceSpec.groovy | 11 ----------- 2 files changed, 12 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy index 934f3d5a95..7e3e8855c5 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy @@ -44,7 +44,6 @@ final class ProjectSpace { private static String formatSpaceName(String name) { def capitalizedName = name.trim().toUpperCase() def refactoredName = capitalizedName.replaceAll("\\s+", "_") - .replaceAll("-", "_") return refactoredName } diff --git a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy index 7d9b9ee2fa..b093eefd6e 100644 --- a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy @@ -31,15 +31,4 @@ class ProjectSpaceSpec extends Specification { thrown(IllegalArgumentException) } - - def "Dashes are replaced by underscores"() { - given: - String projectSpaceName = "my-new-space" - - when: - ProjectSpace space = new ProjectSpace(projectSpaceName) - - then: - space.name.equals("MY_NEW_SPACE") - } } From efe896ad80b00054df7aa41db45dbeafb168db82 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Fri, 26 Aug 2022 11:15:45 +0200 Subject: [PATCH 33/62] Prepare Version 2.20.0 (#325) * increase snapshot to 2.20.0 * Adjust Nf-core pipeline result to account for sarekv3 file structure * Remove replacement of hyphens with underscores in project spaces (#326) Co-authored-by: wow-such-code --- doc/figures/ER_diagram_pipeline_results.png | Bin 129166 -> 119531 bytes pom.xml | 2 +- .../datasets/NfCorePipelineResult.groovy | 10 ++--- .../files/nfcore/ExecutionReport.groovy | 4 +- .../files/nfcore/PipelineReport.groovy | 40 ------------------ .../files/nfcore/SoftwareVersions.groovy | 2 +- .../nfcore/PipelineInformationFolder.groovy | 12 ------ .../projectmanagement/ProjectSpace.groovy | 1 - ...nformatics-analysis-result-set.schema.json | 20 +-------- .../NfCorePipelineResultSpec.groovy | 5 +-- .../files/nfcore/ExecutionReportSpec.groovy | 4 +- .../files/nfcore/PipelineReportSpec.groovy | 39 ----------------- .../files/nfcore/SoftwareVersionsSpec.groovy | 4 +- .../PipelineInformationFolderSpec.groovy | 10 ++--- .../folders/nfcore/ProcessFolderSpec.groovy | 2 +- .../nfcore/QualityControlFolderSpec.groovy | 4 +- .../projectmanagement/ProjectSpaceSpec.groovy | 11 ----- ...ing-process-folders-resultset-example.json | 17 +++----- ...ing-quality-control-resultset-example.json | 15 +++---- .../resultset/valid-resultset-example.json | 17 +++----- 20 files changed, 38 insertions(+), 181 deletions(-) delete mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReport.groovy delete mode 100644 src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReportSpec.groovy diff --git a/doc/figures/ER_diagram_pipeline_results.png b/doc/figures/ER_diagram_pipeline_results.png index 4ff4b681ffa393fb6fed419848d1ab569791ce6e..83f2bfe21ceb93454e196349ba6bf4461c139993 100644 GIT binary patch literal 119531 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%0AZHGt_4;Y|^|h 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 z∨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.qbic data-model-lib - 2.19.1 + 2.20.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy b/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy index 7c7e5e126f..8bc997fc72 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy @@ -3,7 +3,7 @@ package life.qbic.datamodel.datasets import life.qbic.datamodel.datasets.datastructure.files.DataFile import life.qbic.datamodel.datasets.datastructure.files.nfcore.ExecutionReport -import life.qbic.datamodel.datasets.datastructure.files.nfcore.PipelineReport + import life.qbic.datamodel.datasets.datastructure.files.nfcore.RunId import life.qbic.datamodel.datasets.datastructure.files.general.SampleIds import life.qbic.datamodel.datasets.datastructure.files.nfcore.SoftwareVersions @@ -33,7 +33,6 @@ final class NfCorePipelineResult { private final static Set nfCoreFileTypes = [ FQDN_FILES + ".ExecutionReport", GENERAL_FILES + ".SampleIds", - FQDN_FILES + ".PipelineReport", FQDN_FILES + ".SoftwareVersions", FQDN_FILES + ".RunId" ] @@ -85,9 +84,8 @@ final class NfCorePipelineResult { Objects.requireNonNull(bioinformaticPipelineOutput.get("processFolders"), "The root folder must contain at least one process folder.") //Check if all required files are in the pipeline_info directory Map pipelineInfoMap = bioinformaticPipelineOutput["pipelineInformation"] as Map - Objects.requireNonNull(pipelineInfoMap.get("softwareVersions"), "The pipeline_info folder must contain a softwareVersions.csv file.") - Objects.requireNonNull(pipelineInfoMap.get("executionReport"), "The pipeline_info folder must contain a executionReport.txt file.") - Objects.requireNonNull(pipelineInfoMap.get("pipelineReport"), "The pipeline_info folder must contain a pipeline_info.txt file.") + Objects.requireNonNull(pipelineInfoMap.get("softwareVersions"), "The pipeline_info folder must contain a softwareVersions.yml file.") + Objects.requireNonNull(pipelineInfoMap.get("executionReport"), "The pipeline_info folder must contain a executionReport.html file.") //Check if all required files are in root directory Objects.requireNonNull(bioinformaticPipelineOutput.get("runId"), "The root folder must contain a run_id.txt file.") Objects.requireNonNull(bioinformaticPipelineOutput.get("sampleIds"), "The root folder must contain an sample_ids.txt file.") @@ -105,11 +103,9 @@ final class NfCorePipelineResult { //These files are not stored as children but as properties of the pipeline_info folder DataFile softwareVersions = parseFile(pipelineInfoMap.get("softwareVersions") as Map) DataFile executionReport = parseFile(pipelineInfoMap.get("executionReport") as Map) - DataFile pipelineReport = parseFile(pipelineInfoMap.get("pipelineReport") as Map) //Set information of pipelineInformation properties pipelineInformation.softwareVersions = softwareVersions as SoftwareVersions - pipelineInformation.pipelineReport = pipelineReport as PipelineReport pipelineInformation.executionReport = executionReport as ExecutionReport //Parse all files in the root directory diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReport.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReport.groovy index 911e187307..736d180ec7 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReport.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReport.groovy @@ -9,9 +9,9 @@ import life.qbic.datamodel.datasets.datastructure.files.DataFile */ class ExecutionReport extends DataFile { - final private static String FILE_TYPE = "txt" + final private static String FILE_TYPE = "html" - final private static String NAME_SCHEMA = $/execution_report.*/$ + final private static String NAME_SCHEMA = $/^execution_report.*/$ protected ExecutionReport() {} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReport.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReport.groovy deleted file mode 100644 index 3375ae323d..0000000000 --- a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReport.groovy +++ /dev/null @@ -1,40 +0,0 @@ -package life.qbic.datamodel.datasets.datastructure.files.nfcore - -import life.qbic.datamodel.datasets.datastructure.files.DataFile - -/** - * A specialisation of a DataFile, represents a nf-core Pipeline report file - * - * @since 2.6.0 - */ -class PipelineReport extends DataFile { - - final private static String FILE_TYPE = "txt" - - final private static String NAME_SCHEMA = $/pipeline_report.*/$ - - protected PipelineReport() {} - - protected PipelineReport(String name, String relativePath) { - super(name, relativePath, FILE_TYPE) - validateName() - } - - /** - * Creates the PipelineReport object based on a report name and a relative path of it - * @param name The file name of the pipeline report - * @param relativePath The relative path to the file in a file system - * @return the PipelineReport object, which also validates if the filename is valid - * @since 2.6.0 - */ - static PipelineReport create(String name, String relativePath) { - return new PipelineReport(name, relativePath) - } - - private void validateName() { - if (!(this.name =~ NAME_SCHEMA)) { - throw new IllegalArgumentException("Name must match the nf-core pipeline report schema!") - } - } - -} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersions.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersions.groovy index 14829c4199..f2608dd9c7 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersions.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersions.groovy @@ -9,7 +9,7 @@ import life.qbic.datamodel.datasets.datastructure.files.DataFile */ class SoftwareVersions extends DataFile { - final private static String FILE_TYPE = "csv" + final private static String FILE_TYPE = "yml" final private static String NAME_SCHEMA = $/software_versions.*/$ diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolder.groovy index 8f6509fc7d..02fe748c42 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolder.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolder.groovy @@ -2,7 +2,6 @@ package life.qbic.datamodel.datasets.datastructure.folders.nfcore import life.qbic.datamodel.datasets.datastructure.files.DataFile import life.qbic.datamodel.datasets.datastructure.files.nfcore.ExecutionReport -import life.qbic.datamodel.datasets.datastructure.files.nfcore.PipelineReport import life.qbic.datamodel.datasets.datastructure.files.nfcore.SoftwareVersions import life.qbic.datamodel.datasets.datastructure.folders.DataFolder @@ -19,8 +18,6 @@ class PipelineInformationFolder extends DataFolder { SoftwareVersions softwareVersions - PipelineReport pipelineReport - ExecutionReport executionReport protected PipelineInformationFolder() {} @@ -58,15 +55,6 @@ class PipelineInformationFolder extends DataFolder { return softwareVersions } - /** - * Provides access to the information stored in the runId file - * @return the pipeline report generated by nextflow - * @since 2.6.0 - */ - PipelineReport getPipelineReport() { - return pipelineReport - } - /** * Provides access to the information stored in the sampleIds file * @return the execution report diff --git a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy index 934f3d5a95..7e3e8855c5 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpace.groovy @@ -44,7 +44,6 @@ final class ProjectSpace { private static String formatSpaceName(String name) { def capitalizedName = name.trim().toUpperCase() def refactoredName = capitalizedName.replaceAll("\\s+", "_") - .replaceAll("-", "_") return refactoredName } diff --git a/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json b/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json index 391dea4341..22453af42e 100644 --- a/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json +++ b/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json @@ -14,12 +14,10 @@ "properties": { "name": { "pattern": "pipeline_info"}, "softwareVersions": { "$ref": "#/definitions/softwareVersions" }, - "pipelineReport": { "$ref": "#/definitions/pipelineReport" }, "executionReport": { "$ref": "#/definitions/executionReport" } }, "required": [ "softwareVersions", - "pipelineReport", "executionReport" ] } @@ -34,21 +32,7 @@ { "properties": { "name": { "pattern": "software_versions"}, - "fileType": { "pattern": "csv" } - } - } - ] - }, - "pipelineReport": { - "description": "A data file that describes the pipeline configuration.", - "allOf": [ - { - "$ref": "data-structure-commons.json#/definitions/dataFile" - }, - { - "properties": { - "name": { "pattern": "pipeline_report"}, - "fileType": { "pattern": "txt" } + "fileType": { "pattern": "yml" } } } ] @@ -62,7 +46,7 @@ { "properties": { "name": { "pattern": "execution_report"}, - "fileType": { "pattern": "txt" } + "fileType": { "pattern": "html" } } } ] diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy index fd3fdc8512..d7db7a6015 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy @@ -74,9 +74,8 @@ class NfCorePipelineResultSpec extends Specification { runId.name == "run_id.txt" processFolders.get(0).name == "salmon" qualityControlFolder.name == "multiqc" - pipelineInformationFolder.getSoftwareVersions().name == "software_versions.csv" - pipelineInformationFolder.getPipelineReport().name == "pipeline_report.txt" - pipelineInformationFolder.getExecutionReport().name == "execution_report.txt" + pipelineInformationFolder.getSoftwareVersions().name == "software_versions.yml" + pipelineInformationFolder.getExecutionReport().name == "execution_report.html" } def "Invalid fileTree will return a NullPointerException"() { diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReportSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReportSpec.groovy index 5491ff3520..a0a4e79daa 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReportSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/ExecutionReportSpec.groovy @@ -11,8 +11,8 @@ class ExecutionReportSpec extends Specification { def "shall create a ExecutionReport instance"() { given: - final name = "execution_report.txt" - final relativePath = "root/execution_report.txt" + final name = "execution_report.html" + final relativePath = "root/execution_report.html" when: def dataObject = ExecutionReport.create(name, relativePath) diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReportSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReportSpec.groovy deleted file mode 100644 index 3573c12c5d..0000000000 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/PipelineReportSpec.groovy +++ /dev/null @@ -1,39 +0,0 @@ -package life.qbic.datamodel.datasets.datastructure.files.nfcore - -import spock.lang.Specification - -/** - * Test for the PipelineReport class - * - * @since 2.6.0 - */ -class PipelineReportSpec extends Specification { - - def "shall create a PipelineReport instance"() { - given: - final name = "pipeline_report.txt" - final relativePath = "root/pipeline_report.txt" - - when: - def dataObject = PipelineReport.create(name, relativePath) - - then: - assert dataObject instanceof PipelineReport - assert dataObject.relativePath == relativePath - assert dataObject.name == name - } - - def "name not matching schema shall throw IllegalArgumentException"() { - given: - final name = "bucket_report.txt" - final relativePath = "root/bucket_report.txt" - - when: - def dataObject = PipelineReport.create(name, relativePath) - - then: - thrown(IllegalArgumentException) - } - - -} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersionsSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersionsSpec.groovy index 40bdc06282..ed5997ca02 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersionsSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nfcore/SoftwareVersionsSpec.groovy @@ -11,8 +11,8 @@ class SoftwareVersionsSpec extends Specification { def "shall create a SoftwareVersions instance"() { given: - final name = "software_versions.csv" - final path = "root/software_versions.csv" + final name = "software_versions.yml" + final path = "root/software_versions.yml" when: def dataObject = SoftwareVersions.create(name, path) diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolderSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolderSpec.groovy index 8e46114814..c7319f81b6 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolderSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/PipelineInformationFolderSpec.groovy @@ -1,7 +1,6 @@ package life.qbic.datamodel.datasets.datastructure.folders.nfcore import life.qbic.datamodel.datasets.datastructure.files.nfcore.ExecutionReport -import life.qbic.datamodel.datasets.datastructure.files.nfcore.PipelineReport import life.qbic.datamodel.datasets.datastructure.files.nfcore.SoftwareVersions import spock.lang.Specification @@ -17,18 +16,15 @@ class PipelineInformationFolderSpec extends Specification { final def name = "pipeline_info" final def relativePath = "root/pipeline_info" final def children = [] - final def executionReport = ExecutionReport.create("execution_report.txt", "root/execution_report.txt") - final def pipelineReport = PipelineReport.create("pipeline_report.txt", "root/pipeline_report.txt") - final def softwareVersions = SoftwareVersions.create("software_versions.csv", "root/software_versions.csv") + final def executionReport = ExecutionReport.create("execution_report.html", "root/execution_report.html") + final def softwareVersions = SoftwareVersions.create("software_versions.yml", "root/software_versions.yml") when: final def pipelineInformationFolder = PipelineInformationFolder.create(name, relativePath, children) pipelineInformationFolder.executionReport = executionReport - pipelineInformationFolder.pipelineReport = pipelineReport pipelineInformationFolder.softwareVersions = softwareVersions then: assert pipelineInformationFolder.getExecutionReport() == executionReport - assert pipelineInformationFolder.getPipelineReport() == pipelineReport assert pipelineInformationFolder.getSoftwareVersions() == softwareVersions } @@ -38,7 +34,7 @@ class PipelineInformationFolderSpec extends Specification { final def name = "pipeline_unsatisfied" final def relativePath = "root/pipeline_unsatisfied" final def children = [] - final def datafile = ExecutionReport.create("execution_report_test.txt", "root/execution_report_test.txt") + final def datafile = ExecutionReport.create("execution_report_test.html", "root/execution_report_test.html") children.add(datafile) when: diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/ProcessFolderSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/ProcessFolderSpec.groovy index df0dc07540..2cbaa6825b 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/ProcessFolderSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/ProcessFolderSpec.groovy @@ -15,7 +15,7 @@ class ProcessFolderSpec extends Specification { final def name = "processtest" final def relativePath = "root/processtest" final def children = [] - final def datafile = ExecutionReport.create("execution_report.txt", "root/processtest/execution_report.txt") + final def datafile = ExecutionReport.create("execution_report.html", "root/processtest/execution_report.html") children.add(datafile) when: diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/QualityControlFolderSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/QualityControlFolderSpec.groovy index 694e46d481..d7a80dadb8 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/QualityControlFolderSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nfcore/QualityControlFolderSpec.groovy @@ -15,7 +15,7 @@ class QualityControlFolderSpec extends Specification { final def name = "multiqc" final def relativePath = "root/multiqc" final def children = [] - final def datafile = ExecutionReport.create("execution_report_test.txt", "root/execution_report_test.txt") + final def datafile = ExecutionReport.create("execution_report_test.html", "root/execution_report_test.html") children.add(datafile) when: @@ -31,7 +31,7 @@ class QualityControlFolderSpec extends Specification { final def name = "simpleqc" final def relativePath = "root/simpleqc" final def children = [] - final def datafile = ExecutionReport.create("execution_report_test.txt", "root/execution_report_test.txt") + final def datafile = ExecutionReport.create("execution_report_test.html", "root/execution_report_test.html") children.add(datafile) when: diff --git a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy index 7d9b9ee2fa..b093eefd6e 100644 --- a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy @@ -31,15 +31,4 @@ class ProjectSpaceSpec extends Specification { thrown(IllegalArgumentException) } - - def "Dashes are replaced by underscores"() { - given: - String projectSpaceName = "my-new-space" - - when: - ProjectSpace space = new ProjectSpace(projectSpaceName) - - then: - space.name.equals("MY_NEW_SPACE") - } } diff --git a/src/test/resources/examples/resultset/missing-process-folders-resultset-example.json b/src/test/resources/examples/resultset/missing-process-folders-resultset-example.json index 081ad35d20..a7e888821d 100644 --- a/src/test/resources/examples/resultset/missing-process-folders-resultset-example.json +++ b/src/test/resources/examples/resultset/missing-process-folders-resultset-example.json @@ -4,19 +4,14 @@ "path": "./", "children": [], "softwareVersions": { - "name": "software_versions.csv", - "fileType": "csv", - "path": "pipeline_info/software_versions.csv" - }, - "pipelineReport": { - "name": "pipeline_report.txt", - "fileType": "txt", - "path": "pipeline_info/pipeline_report.txt" + "name": "software_versions.yml", + "fileType": "yml", + "path": "pipeline_info/software_versions.yml" }, "executionReport": { - "name": "execution_report.txt", - "fileType": "txt", - "path": "pipeline_info/execution_report.txt" + "name": "execution_report.html", + "fileType": "html", + "path": "pipeline_info/execution_report.html" } }, "qualityControl": { diff --git a/src/test/resources/examples/resultset/missing-quality-control-resultset-example.json b/src/test/resources/examples/resultset/missing-quality-control-resultset-example.json index a92343ab7b..92ae052c1e 100644 --- a/src/test/resources/examples/resultset/missing-quality-control-resultset-example.json +++ b/src/test/resources/examples/resultset/missing-quality-control-resultset-example.json @@ -4,19 +4,14 @@ "path": "./", "children": [], "softwareVersions": { - "name": "software_versions.csv", - "fileType": "csv", - "path": "pipeline_info/software_versions.csv" - }, - "pipelineReport": { - "name": "pipeline_report.txt", - "fileType": "txt", - "path": "pipeline_info/pipeline_report.txt" + "name": "software_versions.yml", + "fileType": "yml", + "path": "pipeline_info/software_versions.yml" }, "executionReport": { - "name": "execution_report.txt", + "name": "execution_report.html", "fileType": "txt", - "path": "pipeline_info/execution_report.txt" + "path": "pipeline_info/execution_report.html" } }, "processFolders": [ diff --git a/src/test/resources/examples/resultset/valid-resultset-example.json b/src/test/resources/examples/resultset/valid-resultset-example.json index 2fade75833..c4c0887a6e 100644 --- a/src/test/resources/examples/resultset/valid-resultset-example.json +++ b/src/test/resources/examples/resultset/valid-resultset-example.json @@ -4,19 +4,14 @@ "path": "./pipeline_info", "children": [], "softwareVersions": { - "name": "software_versions.csv", - "fileType": "csv", - "path": "./pipeline_info/software_versions.csv" - }, - "pipelineReport": { - "name": "pipeline_report.txt", - "fileType": "txt", - "path": "./pipeline_info/pipeline_report.txt" + "name": "software_versions.yml", + "fileType": "yml", + "path": "./pipeline_info/software_versions.yml" }, "executionReport": { - "name": "execution_report.txt", - "fileType": "txt", - "path": "./pipeline_info/execution_report.txt" + "name": "execution_report.html", + "fileType": "html", + "path": "./pipeline_info/execution_report.html" } }, "qualityControl": { From f95dae650c1a25db3b1b884fe9fc31ee24099086 Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Fri, 26 Aug 2022 16:27:39 +0200 Subject: [PATCH 34/62] Update version to 2.20.0 (#327) * Set version to 2.20.0 * remove unnessary whitespace Co-authored-by: Steffengreiner --- pom.xml | 2 +- .../datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7ec6d85909..b14281b235 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.20.0-SNAPSHOT + 2.20.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy index b093eefd6e..268fcbc4c7 100644 --- a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy @@ -29,6 +29,5 @@ class ProjectSpaceSpec extends Specification { then: thrown(IllegalArgumentException) - } } From 8b7361f1283cc16ee784809da721dbd8cc624dbd Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 6 Oct 2022 15:22:24 +0200 Subject: [PATCH 35/62] add digiwest property tpes --- .../java/life/qbic/datamodel/experiments/ExperimentType.java | 2 +- src/main/java/life/qbic/datamodel/samples/SampleType.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java b/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java index 7a7988ce51..540fd51ba1 100644 --- a/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java +++ b/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java @@ -22,5 +22,5 @@ * */ public enum ExperimentType { - Q_WF_NGS_QUALITYCONTROL, Q_BMI_GENERIC_IMAGING, Q_WF_MS_QUALITYCONTROL, Q__WF_NGS_MAPPING, Q_WF_MS_MAXQUANT, Q_NGS_VARIANT_CALLING, Q_NGS_MEASUREMENT, Q_NGS_MAPPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_HLATYPING, Q_NGS_FLOWCELL_RUN, Q_NGS_EPITOPE_PREDICTION, Q_WF_NGS_EPITOPE_PREDICTION, Q_WF_NGS_VARIANT_ANNOTATION, Q_WF_NGS_HLATYPING, Q_EXPERIMENTAL_DESIGN, Q_SAMPLE_EXTRACTION, Q_SAMPLE_PREPARATION, Q_MHC_LIGAND_EXTRACTION, Q_MS_MEASUREMENT, Q_NGS_SINGLE_SAMPLE_RUN, Q_PROJECT_DETAILS, Q_MICROARRAY_MEASUREMENT + Q_WF_NGS_QUALITYCONTROL, Q_BMI_GENERIC_IMAGING, Q_WF_MS_QUALITYCONTROL, Q__WF_NGS_MAPPING, Q_WF_MS_MAXQUANT, Q_NGS_VARIANT_CALLING, Q_NGS_MEASUREMENT, Q_NGS_MAPPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_HLATYPING, Q_NGS_FLOWCELL_RUN, Q_NGS_EPITOPE_PREDICTION, Q_WF_NGS_EPITOPE_PREDICTION, Q_WF_NGS_VARIANT_ANNOTATION, Q_WF_NGS_HLATYPING, Q_EXPERIMENTAL_DESIGN, Q_SAMPLE_EXTRACTION, Q_SAMPLE_PREPARATION, Q_MHC_LIGAND_EXTRACTION, Q_MS_MEASUREMENT, Q_NGS_SINGLE_SAMPLE_RUN, Q_PROJECT_DETAILS, Q_MICROARRAY_MEASUREMENT, Q_DIGIWEST_MEASUREMENT } diff --git a/src/main/java/life/qbic/datamodel/samples/SampleType.java b/src/main/java/life/qbic/datamodel/samples/SampleType.java index 2da4bbbb2a..6b5c6fa807 100644 --- a/src/main/java/life/qbic/datamodel/samples/SampleType.java +++ b/src/main/java/life/qbic/datamodel/samples/SampleType.java @@ -22,6 +22,6 @@ * */ public enum SampleType { - Q_ATTACHMENT_SAMPLE, Q_BIOLOGICAL_ENTITY, Q_BIOLOGICAL_SAMPLE, Q_BMI_GENERIC_IMAGING_RUN, Q_EDDA_BENCHMARK, Q_EXT_MS_QUALITYCONTROL_RUN, Q_EXT_NGS_QUALITYCONTROL_RUN, Q_FASTA, Q_HT_QPCR_RUN, Q_MHC_LIGAND_EXTRACT, Q_MICROARRAY_RUN, Q_MS_RUN, Q_NGS_EPITOPES, Q_NGS_FLOWCELL_RUN, Q_NGS_HLATYPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_IONTORRENT_RUN, Q_NGS_MAPPING, Q_NGS_MTB_DIAGNOSIS_RUN, Q_NGS_READ_MATCH_ALIGNMENT_RUN, Q_NGS_SINGLE_SAMPLE_RUN, Q_NGS_VARIANT_CALLING, Q_TEST_SAMPLE, Q_VACCINE_CONSTRUCT, Q_WF_MA_QUALITYCONTROL_RUN, Q_WF_MS_INDIVIDUALIZED_PROTEOME_RUN, Q_WF_MS_LIGANDOMICS_ID_RUN, Q_WF_MS_LIGANDOMICS_QC_RUN, Q_WF_MS_MAXQUANT_RUN, Q_WF_MS_PEPTIDEID_RUN, Q_WF_MS_QUALITYCONTROL_RUN, Q_WF_NGS_16S_TAXONOMIC_PROFILING, Q_WF_NGS_EPITOPE_PREDICTION_RUN, Q_WF_NGS_HLATYPING_RUN, Q_WF_NGS_MAPPING_RUN, Q_WF_NGS_QUALITYCONTROL_RUN, Q_WF_NGS_RNA_EXPRESSION_ANALYSIS_RUN, Q_WF_NGS_SHRNA_COUNTING_RUN, Q_WF_NGS_VARIANT_ANNOTATION_RUN, Q_WF_NGS_VARIANT_CALLING_RUN + Q_ATTACHMENT_SAMPLE, Q_BIOLOGICAL_ENTITY, Q_BIOLOGICAL_SAMPLE, Q_BMI_GENERIC_IMAGING_RUN, Q_EDDA_BENCHMARK, Q_EXT_MS_QUALITYCONTROL_RUN, Q_EXT_NGS_QUALITYCONTROL_RUN, Q_FASTA, Q_HT_QPCR_RUN, Q_MHC_LIGAND_EXTRACT, Q_MICROARRAY_RUN, Q_MS_RUN, Q_NGS_EPITOPES, Q_NGS_FLOWCELL_RUN, Q_NGS_HLATYPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_IONTORRENT_RUN, Q_NGS_MAPPING, Q_NGS_MTB_DIAGNOSIS_RUN, Q_NGS_READ_MATCH_ALIGNMENT_RUN, Q_NGS_SINGLE_SAMPLE_RUN, Q_NGS_VARIANT_CALLING, Q_TEST_SAMPLE, Q_VACCINE_CONSTRUCT, Q_WF_MA_QUALITYCONTROL_RUN, Q_WF_MS_INDIVIDUALIZED_PROTEOME_RUN, Q_WF_MS_LIGANDOMICS_ID_RUN, Q_WF_MS_LIGANDOMICS_QC_RUN, Q_WF_MS_MAXQUANT_RUN, Q_WF_MS_PEPTIDEID_RUN, Q_WF_MS_QUALITYCONTROL_RUN, Q_WF_NGS_16S_TAXONOMIC_PROFILING, Q_WF_NGS_EPITOPE_PREDICTION_RUN, Q_WF_NGS_HLATYPING_RUN, Q_WF_NGS_MAPPING_RUN, Q_WF_NGS_QUALITYCONTROL_RUN, Q_WF_NGS_RNA_EXPRESSION_ANALYSIS_RUN, Q_WF_NGS_SHRNA_COUNTING_RUN, Q_WF_NGS_VARIANT_ANNOTATION_RUN, Q_WF_NGS_VARIANT_CALLING_RUN, Q_DIGIWEST_RUN } From da00d852589cab91e59ce235d509392ca5477a0c Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Tue, 11 Oct 2022 14:34:55 +0200 Subject: [PATCH 36/62] Support nanopore data structure v3 (#328) * add new version of valid nanopore structure * implement additional v3 changes * Update schema and test to current file structure Co-authored-by: Steffengreiner --- .../datasets/OxfordNanoporeExperiment.groovy | 7 +- .../files/nanopore/PoreActivityLog.groovy | 32 + .../files/nanopore/PoreScanDataLog.groovy | 32 + .../files/nanopore/ReportHTMLLog.groovy | 31 + .../files/nanopore/ReportJSONLog.groovy | 31 + .../files/nanopore/SampleSheetLog.groovy | 33 + .../OxfordNanoporeInstrumentOutputV3.groovy | 22 + .../nanopore-instrument-output_v3.schema.json | 625 ++++++++++++++++++ .../OxfordNanoporeExperimentSpec.groovy | 25 +- .../resources/nanopore/valid-example-v3.json | 205 ++++++ 10 files changed, 1041 insertions(+), 2 deletions(-) create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy create mode 100644 src/main/resources/schemas/nanopore-instrument-output_v3.schema.json create mode 100644 src/test/resources/nanopore/valid-example-v3.json diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy index 367fb89315..e4f0146f93 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy @@ -33,9 +33,14 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FQDN_FILES + ".MuxScanDataLog", FQDN_FILES + ".ReportMdLog", FQDN_FILES + ".ReportPDFLog", + FQDN_FILES + ".ReportHTMLLog", + FQDN_FILES + ".ReportJSONLog", FQDN_FILES + ".SequencingSummaryLog", FQDN_FILES + ".ThroughputLog", - FQDN_FILES + ".BarcodeAlignmentLog" + FQDN_FILES + ".BarcodeAlignmentLog", + FQDN_FILES + ".PoreActivityLog", + FQDN_FILES + ".SampleSheetLog", + FQDN_FILES + ".PoreScanDataLog" ] private final static Set nanoporeFolderTypes = [ diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy new file mode 100644 index 0000000000..871f6dd12c --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy @@ -0,0 +1,32 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore pore activity log file + * + */ +class PoreActivityLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/pore_activity_.*/$ + + protected PoreActivityLog() {} + + protected PoreActivityLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static PoreActivityLog create(String name, String relativePath) { + return new PoreActivityLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore pore activity log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy new file mode 100644 index 0000000000..cff4bd7898 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy @@ -0,0 +1,32 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore pore scan data log file + * + */ +class PoreScanDataLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/pore_scan_data_.*/$ + + protected PoreScanDataLog() {} + + protected PoreScanDataLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static PoreScanDataLog create(String name, String relativePath) { + return new PoreScanDataLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore pore scan data log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy new file mode 100644 index 0000000000..e8d3a6063d --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy @@ -0,0 +1,31 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore report HTML log file + * + */ +class ReportHTMLLog extends DataFile { + + final private static String FILE_TYPE = "html" + + final private static String NAME_SCHEMA = $/report_.*/$ + + protected ReportHTMLLog() {} + + protected ReportHTMLLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static ReportHTMLLog create(String name, String relativePath) { + return new ReportHTMLLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore report name schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy new file mode 100644 index 0000000000..19ccf17490 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy @@ -0,0 +1,31 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore report JSON log file + * + */ +class ReportJSONLog extends DataFile { + + final private static String FILE_TYPE = "json" + + final private static String NAME_SCHEMA = $/report_.*/$ + + protected ReportJSONLog() {} + + protected ReportJSONLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static ReportJSONLog create(String name, String relativePath) { + return new ReportJSONLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore report name schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy new file mode 100644 index 0000000000..37cbcce350 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy @@ -0,0 +1,33 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore sample sheet log file + * + * @author: Andreas Friedrich + */ +class SampleSheetLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/sample_sheet_.*/$ + + protected SampleSheetLog() {} + + protected SampleSheetLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static SampleSheetLog create(String name, String relativePath) { + return new SampleSheetLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore sample sheet log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy new file mode 100644 index 0000000000..1cf1192e8d --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy @@ -0,0 +1,22 @@ +package life.qbic.datamodel.instruments + + +/** + * Represents the Nanopore instrument output data structure schema. + * + * The original schema is defined in as resource and is + * referenced here, wrapped in a Groovy class for reference + * in applications that want to validate the instrument + * output structure against the schema. + * + * @author Sven Fillinger + * @since 1.9.0 + */ +class OxfordNanoporeInstrumentOutputV3 { + + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_v3.schema.json" + + static InputStream getSchemaAsStream() { + return OxfordNanoporeInstrumentOutputV3.getResourceAsStream(SCHEMA_PATH) + } +} diff --git a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json new file mode 100644 index 0000000000..9bacc5616f --- /dev/null +++ b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json @@ -0,0 +1,625 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "http://qbic.life/nanopore-instrument-output_v2.schema.json", + "title": "Nanopore Instrument Output V2", + "description": "Describes in which form Nanopore data is received from the lab.", + "definitions": { + "folder": { + "description": "Describes a folder", + "type": "object", + "required": [ + "name", + "path", + "children" + ], + "properties": { + "name": { + "description": "Folder name", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "relative folderpath", + "type": "string", + "minLength": 1 + }, + "children": { + "description": "Describes files and/or sub-folders if existent", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "$ref": "#/definitions/file" + } + ] + } + } + } + }, + "file": { + "description": "Describes a file", + "type": "object", + "required": [ + "name", + "path", + "file_type" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + }, + "file_type": { + "type": "string", + "minLength": 1 + } + } + }, + "qbic_code": { + "description": "Describes a QBiC code used as a prefix", + "type": "string", + "pattern": "Q\\w{4}\\d{3}[A-X][A-X0-9].*" + }, + "barcoded_folder": { + "description": "folder starting with qbic barcode prefix", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "$ref": "#/definitions/qbic_code" + } + } + } + ] + }, + "other_reports_folder": { + "description": "subfolder containing some of the report files", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "other_reports" + }, + "children": { + "items": { + "oneOf": [ + { + "$ref": "#/definitions/pore_scan_data_log" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fast5" + } + } + } + ] + }, + "fastqgz_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq.gz" + } + } + } + ] + }, + "fastq_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq" + } + } + } + ] + }, + "unclassified_folder": { + "description": "folder containing unassigned read file(s)", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "unclassified" + } + } + } + ] + }, + "fast5_unclassified_folder": { + "description": "folder containing fast5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "fastq_unclassified_folder": { + "description": "folder containing fastq and/or fastq.gz data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastqgz_file" + }, + { + "$ref": "#/definitions/fastq_file" + } + ] + }, + "minItems": 0 + } + } + } + ] + }, + "fast5_subfolder": { + "description": "folder containing fast5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fastq_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_subfolder": { + "description": "folder containing gzipped fastq data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fastqgz_file" + }, + "minItems": 1 + } + } + } + ] + }, + "measurements": { + "description": "Top folder generated by the facility, containing one or more timestamped measurements", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/measurement" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "measurement": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "\\d{4}(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])_([01][0-9]|2[0-3])([0-5][0-9]).*", + "description": "Name of measurement subfolder. Starts with date and time of measurement." + }, + "children": { + "uniqueItems": true, + "minItems": 14, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/fast5_pass" + }, + { + "$ref": "#/definitions/fast5_fail" + }, + { + "$ref": "#/definitions/barcode_alignment_log" + }, + { + "$ref": "#/definitions/pore_activity_log" + }, + { + "$ref": "#/definitions/final_summary_log" + }, + { + "$ref": "#/definitions/report_md_log" + }, + { + "$ref": "#/definitions/report_json_log" + }, + { + "$ref": "#/definitions/report_html_log" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + }, + { + "$ref": "#/definitions/throughput_log" + }, + { + "$ref": "#/definitions/sample_sheet_log" + }, + { + "$ref": "#/definitions/other_reports_folder" + } + ] + } + } + } + } + ] + }, + "barcode_alignment_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "barcode_alignment_.*" + }, + "file_type": { + "pattern": "tsv" + } + } + } + ] + }, + "pore_activity_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "pore_activity_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "sample_sheet_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sample_sheet_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "final_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "final_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "pore_scan_data_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "pore_scan_data_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "report_md_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "md" + } + } + } + ] + }, + "report_json_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "json" + } + } + } + ] + }, + "report_html_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "html" + } + } + } + ] + }, + "sequencing_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "throughput_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "throughput_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/measurements" + } + ] +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index dd74031bcd..45db0a62f7 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -23,6 +23,12 @@ class OxfordNanoporeExperimentSpec extends Specification { */ @Shared Map extendedDataStructureWithReportsFolder + /** + * Addition to the newer structure, that changes report file types and adds a pore + * activity report + */ + @Shared + Map extendedDataStructureWithReportsFolderV3 /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -40,9 +46,12 @@ class OxfordNanoporeExperimentSpec extends Specification { def folder = "nanopore/" InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") minimalSimpleDataStructure = (Map) new JsonSlurper().parse(stream) - // new example with slightly different structure + // example with slightly different structure stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v2.json") extendedDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) + // latest example with slightly different structure + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v3.json") + extendedDataStructureWithReportsFolderV3 = (Map) new JsonSlurper().parse(stream) // read in unclassified example stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-unclassified.json") unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) @@ -80,6 +89,20 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].asicTemp == "32.631687" } + def "Create sample Oxford Nanopore experiment successfully for latest structure"() { + given: + final def example = extendedDataStructureWithReportsFolderV3 + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + } + def "Create a simple pooled Oxford Nanopore experiment successfully"() { given: final def example = minimalWorkingPooledDataStructure diff --git a/src/test/resources/nanopore/valid-example-v3.json b/src/test/resources/nanopore/valid-example-v3.json new file mode 100644 index 0000000000..1d09b7c337 --- /dev/null +++ b/src/test/resources/nanopore/valid-example-v3.json @@ -0,0 +1,205 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type" : "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "protocol=sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109-XL", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "throughput_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/throughput_.csv", + "file_type": "csv" + }, + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "barcode_alignment_.tsv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/barcode_alignment_.tsv", + "file_type": "tsv" + }, + { + "name": "pore_activity_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pore_activity_.csv", + "file_type": "tsv" + }, + { + "name": "other_reports", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/other_reports", + "children": [ + { + "name": "pore_scan_data_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/other_reports/pore_scan_data_.csv", + "file_type": "csv" + } + ] + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "report_test.html", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.html", + "file_type": "html" + }, + { + "name": "report_test.json", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.json", + "file_type": "json" + }, + { + "name": "sample_sheet_test.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sample_sheet_test.csv", + "file_type": "csv" + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] +} From d68db8bee899a5c46779283ce4db0289da4e633b Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Thu, 13 Oct 2022 11:30:34 +0200 Subject: [PATCH 37/62] Release/2.21.0 (#331) * increase snapshot to 2.20.0 * Adjust Nf-core pipeline result to account for sarekv3 file structure * Remove replacement of hyphens with underscores in project spaces (#326) * add digiwest property tpes * Support nanopore data structure v3 (#328) * add new version of valid nanopore structure * implement additional v3 changes * Update schema and test to current file structure Co-authored-by: Steffengreiner * Fix Nanopore Schema V3 naming and streamline children of other report definition * Adapt schema and add test case for mibi datastructure Co-authored-by: wow-such-code --- .../datasets/OxfordNanoporeExperiment.groovy | 7 +- .../files/nanopore/PoreActivityLog.groovy | 32 + .../files/nanopore/PoreScanDataLog.groovy | 32 + .../files/nanopore/ReportHTMLLog.groovy | 31 + .../files/nanopore/ReportJSONLog.groovy | 31 + .../files/nanopore/SampleSheetLog.groovy | 33 + .../OxfordNanoporeInstrumentOutputV3.groovy | 22 + .../datamodel/experiments/ExperimentType.java | 2 +- .../qbic/datamodel/samples/SampleType.java | 2 +- .../nanopore-instrument-output.schema.json | 20 + .../nanopore-instrument-output_v3.schema.json | 621 ++++++++++++++++++ .../OxfordNanoporeExperimentSpec.groovy | 48 +- .../nanopore/valid-example-html-report.json | 189 ++++++ .../resources/nanopore/valid-example-v3.json | 205 ++++++ 14 files changed, 1271 insertions(+), 4 deletions(-) create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy create mode 100644 src/main/resources/schemas/nanopore-instrument-output_v3.schema.json create mode 100644 src/test/resources/nanopore/valid-example-html-report.json create mode 100644 src/test/resources/nanopore/valid-example-v3.json diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy index 367fb89315..e4f0146f93 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy @@ -33,9 +33,14 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FQDN_FILES + ".MuxScanDataLog", FQDN_FILES + ".ReportMdLog", FQDN_FILES + ".ReportPDFLog", + FQDN_FILES + ".ReportHTMLLog", + FQDN_FILES + ".ReportJSONLog", FQDN_FILES + ".SequencingSummaryLog", FQDN_FILES + ".ThroughputLog", - FQDN_FILES + ".BarcodeAlignmentLog" + FQDN_FILES + ".BarcodeAlignmentLog", + FQDN_FILES + ".PoreActivityLog", + FQDN_FILES + ".SampleSheetLog", + FQDN_FILES + ".PoreScanDataLog" ] private final static Set nanoporeFolderTypes = [ diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy new file mode 100644 index 0000000000..871f6dd12c --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreActivityLog.groovy @@ -0,0 +1,32 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore pore activity log file + * + */ +class PoreActivityLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/pore_activity_.*/$ + + protected PoreActivityLog() {} + + protected PoreActivityLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static PoreActivityLog create(String name, String relativePath) { + return new PoreActivityLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore pore activity log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy new file mode 100644 index 0000000000..cff4bd7898 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/PoreScanDataLog.groovy @@ -0,0 +1,32 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore pore scan data log file + * + */ +class PoreScanDataLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/pore_scan_data_.*/$ + + protected PoreScanDataLog() {} + + protected PoreScanDataLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static PoreScanDataLog create(String name, String relativePath) { + return new PoreScanDataLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore pore scan data log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy new file mode 100644 index 0000000000..e8d3a6063d --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportHTMLLog.groovy @@ -0,0 +1,31 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore report HTML log file + * + */ +class ReportHTMLLog extends DataFile { + + final private static String FILE_TYPE = "html" + + final private static String NAME_SCHEMA = $/report_.*/$ + + protected ReportHTMLLog() {} + + protected ReportHTMLLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static ReportHTMLLog create(String name, String relativePath) { + return new ReportHTMLLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore report name schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy new file mode 100644 index 0000000000..19ccf17490 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/ReportJSONLog.groovy @@ -0,0 +1,31 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore report JSON log file + * + */ +class ReportJSONLog extends DataFile { + + final private static String FILE_TYPE = "json" + + final private static String NAME_SCHEMA = $/report_.*/$ + + protected ReportJSONLog() {} + + protected ReportJSONLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static ReportJSONLog create(String name, String relativePath) { + return new ReportJSONLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore report name schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy new file mode 100644 index 0000000000..37cbcce350 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SampleSheetLog.groovy @@ -0,0 +1,33 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore sample sheet log file + * + * @author: Andreas Friedrich + */ +class SampleSheetLog extends DataFile { + + final private static String FILE_TYPE = "csv" + + final private static String NAME_SCHEMA = $/sample_sheet_.*/$ + + protected SampleSheetLog() {} + + protected SampleSheetLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static SampleSheetLog create(String name, String relativePath) { + return new SampleSheetLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore sample sheet log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy new file mode 100644 index 0000000000..1cf1192e8d --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV3.groovy @@ -0,0 +1,22 @@ +package life.qbic.datamodel.instruments + + +/** + * Represents the Nanopore instrument output data structure schema. + * + * The original schema is defined in as resource and is + * referenced here, wrapped in a Groovy class for reference + * in applications that want to validate the instrument + * output structure against the schema. + * + * @author Sven Fillinger + * @since 1.9.0 + */ +class OxfordNanoporeInstrumentOutputV3 { + + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_v3.schema.json" + + static InputStream getSchemaAsStream() { + return OxfordNanoporeInstrumentOutputV3.getResourceAsStream(SCHEMA_PATH) + } +} diff --git a/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java b/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java index 7a7988ce51..540fd51ba1 100644 --- a/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java +++ b/src/main/java/life/qbic/datamodel/experiments/ExperimentType.java @@ -22,5 +22,5 @@ * */ public enum ExperimentType { - Q_WF_NGS_QUALITYCONTROL, Q_BMI_GENERIC_IMAGING, Q_WF_MS_QUALITYCONTROL, Q__WF_NGS_MAPPING, Q_WF_MS_MAXQUANT, Q_NGS_VARIANT_CALLING, Q_NGS_MEASUREMENT, Q_NGS_MAPPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_HLATYPING, Q_NGS_FLOWCELL_RUN, Q_NGS_EPITOPE_PREDICTION, Q_WF_NGS_EPITOPE_PREDICTION, Q_WF_NGS_VARIANT_ANNOTATION, Q_WF_NGS_HLATYPING, Q_EXPERIMENTAL_DESIGN, Q_SAMPLE_EXTRACTION, Q_SAMPLE_PREPARATION, Q_MHC_LIGAND_EXTRACTION, Q_MS_MEASUREMENT, Q_NGS_SINGLE_SAMPLE_RUN, Q_PROJECT_DETAILS, Q_MICROARRAY_MEASUREMENT + Q_WF_NGS_QUALITYCONTROL, Q_BMI_GENERIC_IMAGING, Q_WF_MS_QUALITYCONTROL, Q__WF_NGS_MAPPING, Q_WF_MS_MAXQUANT, Q_NGS_VARIANT_CALLING, Q_NGS_MEASUREMENT, Q_NGS_MAPPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_HLATYPING, Q_NGS_FLOWCELL_RUN, Q_NGS_EPITOPE_PREDICTION, Q_WF_NGS_EPITOPE_PREDICTION, Q_WF_NGS_VARIANT_ANNOTATION, Q_WF_NGS_HLATYPING, Q_EXPERIMENTAL_DESIGN, Q_SAMPLE_EXTRACTION, Q_SAMPLE_PREPARATION, Q_MHC_LIGAND_EXTRACTION, Q_MS_MEASUREMENT, Q_NGS_SINGLE_SAMPLE_RUN, Q_PROJECT_DETAILS, Q_MICROARRAY_MEASUREMENT, Q_DIGIWEST_MEASUREMENT } diff --git a/src/main/java/life/qbic/datamodel/samples/SampleType.java b/src/main/java/life/qbic/datamodel/samples/SampleType.java index 2da4bbbb2a..6b5c6fa807 100644 --- a/src/main/java/life/qbic/datamodel/samples/SampleType.java +++ b/src/main/java/life/qbic/datamodel/samples/SampleType.java @@ -22,6 +22,6 @@ * */ public enum SampleType { - Q_ATTACHMENT_SAMPLE, Q_BIOLOGICAL_ENTITY, Q_BIOLOGICAL_SAMPLE, Q_BMI_GENERIC_IMAGING_RUN, Q_EDDA_BENCHMARK, Q_EXT_MS_QUALITYCONTROL_RUN, Q_EXT_NGS_QUALITYCONTROL_RUN, Q_FASTA, Q_HT_QPCR_RUN, Q_MHC_LIGAND_EXTRACT, Q_MICROARRAY_RUN, Q_MS_RUN, Q_NGS_EPITOPES, Q_NGS_FLOWCELL_RUN, Q_NGS_HLATYPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_IONTORRENT_RUN, Q_NGS_MAPPING, Q_NGS_MTB_DIAGNOSIS_RUN, Q_NGS_READ_MATCH_ALIGNMENT_RUN, Q_NGS_SINGLE_SAMPLE_RUN, Q_NGS_VARIANT_CALLING, Q_TEST_SAMPLE, Q_VACCINE_CONSTRUCT, Q_WF_MA_QUALITYCONTROL_RUN, Q_WF_MS_INDIVIDUALIZED_PROTEOME_RUN, Q_WF_MS_LIGANDOMICS_ID_RUN, Q_WF_MS_LIGANDOMICS_QC_RUN, Q_WF_MS_MAXQUANT_RUN, Q_WF_MS_PEPTIDEID_RUN, Q_WF_MS_QUALITYCONTROL_RUN, Q_WF_NGS_16S_TAXONOMIC_PROFILING, Q_WF_NGS_EPITOPE_PREDICTION_RUN, Q_WF_NGS_HLATYPING_RUN, Q_WF_NGS_MAPPING_RUN, Q_WF_NGS_QUALITYCONTROL_RUN, Q_WF_NGS_RNA_EXPRESSION_ANALYSIS_RUN, Q_WF_NGS_SHRNA_COUNTING_RUN, Q_WF_NGS_VARIANT_ANNOTATION_RUN, Q_WF_NGS_VARIANT_CALLING_RUN + Q_ATTACHMENT_SAMPLE, Q_BIOLOGICAL_ENTITY, Q_BIOLOGICAL_SAMPLE, Q_BMI_GENERIC_IMAGING_RUN, Q_EDDA_BENCHMARK, Q_EXT_MS_QUALITYCONTROL_RUN, Q_EXT_NGS_QUALITYCONTROL_RUN, Q_FASTA, Q_HT_QPCR_RUN, Q_MHC_LIGAND_EXTRACT, Q_MICROARRAY_RUN, Q_MS_RUN, Q_NGS_EPITOPES, Q_NGS_FLOWCELL_RUN, Q_NGS_HLATYPING, Q_NGS_IMMUNE_MONITORING, Q_NGS_IONTORRENT_RUN, Q_NGS_MAPPING, Q_NGS_MTB_DIAGNOSIS_RUN, Q_NGS_READ_MATCH_ALIGNMENT_RUN, Q_NGS_SINGLE_SAMPLE_RUN, Q_NGS_VARIANT_CALLING, Q_TEST_SAMPLE, Q_VACCINE_CONSTRUCT, Q_WF_MA_QUALITYCONTROL_RUN, Q_WF_MS_INDIVIDUALIZED_PROTEOME_RUN, Q_WF_MS_LIGANDOMICS_ID_RUN, Q_WF_MS_LIGANDOMICS_QC_RUN, Q_WF_MS_MAXQUANT_RUN, Q_WF_MS_PEPTIDEID_RUN, Q_WF_MS_QUALITYCONTROL_RUN, Q_WF_NGS_16S_TAXONOMIC_PROFILING, Q_WF_NGS_EPITOPE_PREDICTION_RUN, Q_WF_NGS_HLATYPING_RUN, Q_WF_NGS_MAPPING_RUN, Q_WF_NGS_QUALITYCONTROL_RUN, Q_WF_NGS_RNA_EXPRESSION_ANALYSIS_RUN, Q_WF_NGS_SHRNA_COUNTING_RUN, Q_WF_NGS_VARIANT_ANNOTATION_RUN, Q_WF_NGS_VARIANT_CALLING_RUN, Q_DIGIWEST_RUN } diff --git a/src/main/resources/schemas/nanopore-instrument-output.schema.json b/src/main/resources/schemas/nanopore-instrument-output.schema.json index b9d83e14dd..47a6be3be5 100644 --- a/src/main/resources/schemas/nanopore-instrument-output.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output.schema.json @@ -402,6 +402,9 @@ { "$ref": "#/definitions/report_pdf_log" }, + { + "$ref": "#/definitions/report_html_log" + }, { "$ref": "#/definitions/sequencing_summary_log" }, @@ -517,6 +520,23 @@ } ] }, + "report_html_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "html" + } + } + } + ] + }, "sequencing_summary_log": { "allOf": [ { diff --git a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json new file mode 100644 index 0000000000..456bb037dd --- /dev/null +++ b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json @@ -0,0 +1,621 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "http://qbic.life/nanopore-instrument-output_v3.schema.json", + "title": "Nanopore Instrument Output V3", + "description": "Describes in which form Nanopore data is received from the lab.", + "definitions": { + "folder": { + "description": "Describes a folder", + "type": "object", + "required": [ + "name", + "path", + "children" + ], + "properties": { + "name": { + "description": "Folder name", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "relative folderpath", + "type": "string", + "minLength": 1 + }, + "children": { + "description": "Describes files and/or sub-folders if existent", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "$ref": "#/definitions/file" + } + ] + } + } + } + }, + "file": { + "description": "Describes a file", + "type": "object", + "required": [ + "name", + "path", + "file_type" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + }, + "file_type": { + "type": "string", + "minLength": 1 + } + } + }, + "qbic_code": { + "description": "Describes a QBiC code used as a prefix", + "type": "string", + "pattern": "Q\\w{4}\\d{3}[A-X][A-X0-9].*" + }, + "barcoded_folder": { + "description": "folder starting with qbic barcode prefix", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "$ref": "#/definitions/qbic_code" + } + } + } + ] + }, + "other_reports_folder": { + "description": "subfolder containing some of the report files", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "other_reports" + }, + "children": { + "items": { + "$ref": "#/definitions/pore_scan_data_log" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fast5" + } + } + } + ] + }, + "fastqgz_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq.gz" + } + } + } + ] + }, + "fastq_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq" + } + } + } + ] + }, + "unclassified_folder": { + "description": "folder containing unassigned read file(s)", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "unclassified" + } + } + } + ] + }, + "fast5_unclassified_folder": { + "description": "folder containing fast5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "fastq_unclassified_folder": { + "description": "folder containing fastq and/or fastq.gz data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastqgz_file" + }, + { + "$ref": "#/definitions/fastq_file" + } + ] + }, + "minItems": 0 + } + } + } + ] + }, + "fast5_subfolder": { + "description": "folder containing fast5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fastq_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_subfolder": { + "description": "folder containing gzipped fastq data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fastqgz_file" + }, + "minItems": 1 + } + } + } + ] + }, + "measurements": { + "description": "Top folder generated by the facility, containing one or more timestamped measurements", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/measurement" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "measurement": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "\\d{4}(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])_([01][0-9]|2[0-3])([0-5][0-9]).*", + "description": "Name of measurement subfolder. Starts with date and time of measurement." + }, + "children": { + "uniqueItems": true, + "minItems": 14, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/fast5_pass" + }, + { + "$ref": "#/definitions/fast5_fail" + }, + { + "$ref": "#/definitions/barcode_alignment_log" + }, + { + "$ref": "#/definitions/pore_activity_log" + }, + { + "$ref": "#/definitions/final_summary_log" + }, + { + "$ref": "#/definitions/report_md_log" + }, + { + "$ref": "#/definitions/report_json_log" + }, + { + "$ref": "#/definitions/report_html_log" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + }, + { + "$ref": "#/definitions/throughput_log" + }, + { + "$ref": "#/definitions/sample_sheet_log" + }, + { + "$ref": "#/definitions/other_reports_folder" + } + ] + } + } + } + } + ] + }, + "barcode_alignment_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "barcode_alignment_.*" + }, + "file_type": { + "pattern": "tsv" + } + } + } + ] + }, + "pore_activity_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "pore_activity_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "sample_sheet_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sample_sheet_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "final_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "final_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "pore_scan_data_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "pore_scan_data_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "report_md_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "md" + } + } + } + ] + }, + "report_json_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "json" + } + } + } + ] + }, + "report_html_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "html" + } + } + } + ] + }, + "sequencing_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "throughput_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "throughput_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/measurements" + } + ] +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index dd74031bcd..ebb263fc11 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -17,12 +17,24 @@ class OxfordNanoporeExperimentSpec extends Specification { */ @Shared Map minimalSimpleDataStructure + /** + * Map that stores the Oxford Nanopore folder structure + * according to the schema with an alternate report file ending + */ + @Shared + Map minimalSimpleDataStructureWithHtmlReport /** * Newer map that stores the Oxford Nanopore folder structure according to the * schema that puts some reports in its own folder and adds a barcode alignment report */ @Shared Map extendedDataStructureWithReportsFolder + /** + * Addition to the newer structure, that changes report file types and adds a pore + * activity report + */ + @Shared + Map extendedDataStructureWithReportsFolderV3 /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -40,9 +52,15 @@ class OxfordNanoporeExperimentSpec extends Specification { def folder = "nanopore/" InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") minimalSimpleDataStructure = (Map) new JsonSlurper().parse(stream) - // new example with slightly different structure + //example with report.html instead of report.html + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-html-report.json") + minimalSimpleDataStructureWithHtmlReport = (Map) new JsonSlurper().parse(stream) + // example with slightly different structure stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v2.json") extendedDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) + // latest example with slightly different structure + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v3.json") + extendedDataStructureWithReportsFolderV3 = (Map) new JsonSlurper().parse(stream) // read in unclassified example stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-unclassified.json") unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) @@ -66,6 +84,20 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].libraryPreparationKit == "SQK-LSK109" } + def "Create simple sample Oxford Nanopore experiment including an html report successfully"() { + given: + final def example = minimalSimpleDataStructureWithHtmlReport + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].libraryPreparationKit == "SQK-LSK109" + } + def "Create sample Oxford Nanopore experiment successfully for newer structure"() { given: final def example = extendedDataStructureWithReportsFolder @@ -80,6 +112,20 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].asicTemp == "32.631687" } + def "Create sample Oxford Nanopore experiment successfully for latest structure"() { + given: + final def example = extendedDataStructureWithReportsFolderV3 + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + } + def "Create a simple pooled Oxford Nanopore experiment successfully"() { given: final def example = minimalWorkingPooledDataStructure diff --git a/src/test/resources/nanopore/valid-example-html-report.json b/src/test/resources/nanopore/valid-example-html-report.json new file mode 100644 index 0000000000..62359785f3 --- /dev/null +++ b/src/test/resources/nanopore/valid-example-html-report.json @@ -0,0 +1,189 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type" : "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "throughput_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/throughput_.csv", + "file_type": "csv" + }, + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "duty_time_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/duty_time_.csv", + "file_type": "csv" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "mux_scan_data.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/mux_scan_data.csv", + "file_type": "csv" + }, + { + "name": "drift_correction_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/drift_correction_.csv", + "file_type": "csv" + }, + { + "name": "report_test.html", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.html", + "file_type": "html" + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] +} diff --git a/src/test/resources/nanopore/valid-example-v3.json b/src/test/resources/nanopore/valid-example-v3.json new file mode 100644 index 0000000000..1d09b7c337 --- /dev/null +++ b/src/test/resources/nanopore/valid-example-v3.json @@ -0,0 +1,205 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type" : "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "protocol=sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109-XL", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "throughput_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/throughput_.csv", + "file_type": "csv" + }, + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "barcode_alignment_.tsv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/barcode_alignment_.tsv", + "file_type": "tsv" + }, + { + "name": "pore_activity_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pore_activity_.csv", + "file_type": "tsv" + }, + { + "name": "other_reports", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/other_reports", + "children": [ + { + "name": "pore_scan_data_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/other_reports/pore_scan_data_.csv", + "file_type": "csv" + } + ] + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "report_test.html", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.html", + "file_type": "html" + }, + { + "name": "report_test.json", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.json", + "file_type": "json" + }, + { + "name": "sample_sheet_test.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sample_sheet_test.csv", + "file_type": "csv" + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] +} From 3f40421ec31592cba984a4d88aaa5a1524dd52d6 Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:41:45 +0200 Subject: [PATCH 38/62] Set version to 2.21.0 (#332) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b14281b235..4877cf2bff 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.20.0 + 2.21.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 101349d283114e1ce4ff514a2c651481f4f9a410 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Thu, 13 Oct 2022 12:54:16 +0200 Subject: [PATCH 39/62] 2.21.0 sync dev to master (#334) * Prepare Version 2.20.0 (#325) * increase snapshot to 2.20.0 * Adjust Nf-core pipeline result to account for sarekv3 file structure * Remove replacement of hyphens with underscores in project spaces (#326) Co-authored-by: wow-such-code * Update version to 2.20.0 (#327) * Set version to 2.20.0 * remove unnessary whitespace Co-authored-by: Steffengreiner * Release/2.21.0 (#331) * increase snapshot to 2.20.0 * Adjust Nf-core pipeline result to account for sarekv3 file structure * Remove replacement of hyphens with underscores in project spaces (#326) * add digiwest property tpes * Support nanopore data structure v3 (#328) * add new version of valid nanopore structure * implement additional v3 changes * Update schema and test to current file structure Co-authored-by: Steffengreiner * Fix Nanopore Schema V3 naming and streamline children of other report definition * Adapt schema and add test case for mibi datastructure Co-authored-by: wow-such-code * Set version to 2.21.0 (#332) Co-authored-by: wow-such-code Co-authored-by: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> --- pom.xml | 2 +- .../nanopore-instrument-output.schema.json | 20 ++ .../nanopore-instrument-output_v3.schema.json | 10 +- .../OxfordNanoporeExperimentSpec.groovy | 23 +++ .../projectmanagement/ProjectSpaceSpec.groovy | 1 - .../nanopore/valid-example-html-report.json | 189 ++++++++++++++++++ 6 files changed, 236 insertions(+), 9 deletions(-) create mode 100644 src/test/resources/nanopore/valid-example-html-report.json diff --git a/pom.xml b/pom.xml index 7ec6d85909..4e85ee5578 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.20.0-SNAPSHOT + 2.22.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/main/resources/schemas/nanopore-instrument-output.schema.json b/src/main/resources/schemas/nanopore-instrument-output.schema.json index b9d83e14dd..47a6be3be5 100644 --- a/src/main/resources/schemas/nanopore-instrument-output.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output.schema.json @@ -402,6 +402,9 @@ { "$ref": "#/definitions/report_pdf_log" }, + { + "$ref": "#/definitions/report_html_log" + }, { "$ref": "#/definitions/sequencing_summary_log" }, @@ -517,6 +520,23 @@ } ] }, + "report_html_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "html" + } + } + } + ] + }, "sequencing_summary_log": { "allOf": [ { diff --git a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json index 9bacc5616f..456bb037dd 100644 --- a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema", - "$id": "http://qbic.life/nanopore-instrument-output_v2.schema.json", - "title": "Nanopore Instrument Output V2", + "$id": "http://qbic.life/nanopore-instrument-output_v3.schema.json", + "title": "Nanopore Instrument Output V3", "description": "Describes in which form Nanopore data is received from the lab.", "definitions": { "folder": { @@ -95,11 +95,7 @@ }, "children": { "items": { - "oneOf": [ - { - "$ref": "#/definitions/pore_scan_data_log" - } - ] + "$ref": "#/definitions/pore_scan_data_log" }, "minItems": 1 } diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 45db0a62f7..ebb263fc11 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -17,6 +17,12 @@ class OxfordNanoporeExperimentSpec extends Specification { */ @Shared Map minimalSimpleDataStructure + /** + * Map that stores the Oxford Nanopore folder structure + * according to the schema with an alternate report file ending + */ + @Shared + Map minimalSimpleDataStructureWithHtmlReport /** * Newer map that stores the Oxford Nanopore folder structure according to the * schema that puts some reports in its own folder and adds a barcode alignment report @@ -46,6 +52,9 @@ class OxfordNanoporeExperimentSpec extends Specification { def folder = "nanopore/" InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") minimalSimpleDataStructure = (Map) new JsonSlurper().parse(stream) + //example with report.html instead of report.html + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-html-report.json") + minimalSimpleDataStructureWithHtmlReport = (Map) new JsonSlurper().parse(stream) // example with slightly different structure stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v2.json") extendedDataStructureWithReportsFolder = (Map) new JsonSlurper().parse(stream) @@ -75,6 +84,20 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].libraryPreparationKit == "SQK-LSK109" } + def "Create simple sample Oxford Nanopore experiment including an html report successfully"() { + given: + final def example = minimalSimpleDataStructureWithHtmlReport + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].libraryPreparationKit == "SQK-LSK109" + } + def "Create sample Oxford Nanopore experiment successfully for newer structure"() { given: final def example = extendedDataStructureWithReportsFolder diff --git a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy index b093eefd6e..268fcbc4c7 100644 --- a/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/dtos/projectmanagement/ProjectSpaceSpec.groovy @@ -29,6 +29,5 @@ class ProjectSpaceSpec extends Specification { then: thrown(IllegalArgumentException) - } } diff --git a/src/test/resources/nanopore/valid-example-html-report.json b/src/test/resources/nanopore/valid-example-html-report.json new file mode 100644 index 0000000000..62359785f3 --- /dev/null +++ b/src/test/resources/nanopore/valid-example-html-report.json @@ -0,0 +1,189 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type" : "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "throughput_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/throughput_.csv", + "file_type": "csv" + }, + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "duty_time_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/duty_time_.csv", + "file_type": "csv" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "mux_scan_data.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/mux_scan_data.csv", + "file_type": "csv" + }, + { + "name": "drift_correction_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/drift_correction_.csv", + "file_type": "csv" + }, + { + "name": "report_test.html", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_test.html", + "file_type": "html" + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] +} From 6087863f5898faf05bf401f2f83ac3474e8c2f78 Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:42:48 +0200 Subject: [PATCH 40/62] Add positional information (#335) Enables the client to store positional information of product items. --- .../dtos/business/ProductItem.groovy | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy index 45f710b587..e22298e873 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/ProductItem.groovy @@ -40,6 +40,13 @@ class ProductItem { */ final double quantityDiscount + /** + * Stores the latest position on the offer. + * + * A negative value indicates no specific position was stored in the item. + */ + private int offerPosition = -1 + /** * * @param quantity The quantity of a product @@ -70,5 +77,27 @@ class ProductItem { this.quantityDiscount = quantityDiscount } + /** + * Sets the position information on the offer the item should be placed + * + * A negative value indicates no positional information. + * @param position a positive value >= 0 indicating a position on the offer + * @since 2.22.0 + */ + void setOrderPosition(int position) { + offerPosition = position + } + + /** + * The position on the offer. + * + * Is negative, if no positional information is available. + * @return + * @since 2.22.0 + */ + int offerPosition() { + return offerPosition + } + } From 2ef000643c623e929f9f7b1c2b034fb92e288173 Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Fri, 21 Oct 2022 07:53:19 +0000 Subject: [PATCH 41/62] Set version to 2.22.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4877cf2bff..3df3a8e005 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.21.0 + 2.22.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 9a96f07d0416812f385f185230405410e84c4af6 Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Tue, 8 Nov 2022 14:35:23 +0100 Subject: [PATCH 42/62] Introduce reference Id in persons (#338) * Add referenceId * Add snapshot tag Co-authored-by: Tobias Koch --- pom.xml | 2 +- .../qbic/datamodel/dtos/general/Person.groovy | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3df3a8e005..54d10a8cee 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.22.0 + 2.23.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy index 69a3727c8e..6db10ec838 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/general/Person.groovy @@ -27,6 +27,12 @@ abstract class Person { */ final int id + /** + * Unique entity identifier (UUID) + * @since 2.22.0 + */ + final String referenceId + /** * The person's first name */ @@ -66,12 +72,15 @@ abstract class Person { List affiliations + String referenceId + Builder(String firstName, String lastName, String emailAddress) { this.firstName = Objects.requireNonNull(firstName, "First name must not be null") this.lastName = Objects.requireNonNull(lastName, "Last name must not be null") this.emailAddress = Objects.requireNonNull(emailAddress, "Email must not be null") this.title = AcademicTitle.NONE this.affiliations = new ArrayList<>() + this.referenceId = UUID.randomUUID().toString() } T id(int id) { @@ -94,6 +103,11 @@ abstract class Person { return self() } + T referenceId(UUID id) { + this.referenceId = id.toString() + return self() + } + abstract Person build() /** @@ -111,6 +125,7 @@ abstract class Person { emailAddress = builder.emailAddress title = builder.title affiliations = builder.affiliations + referenceId = builder.referenceId } /** From 3813d4564cf9d389c9367013bbde34ce0f8eb81a Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Wed, 16 Nov 2022 16:16:18 +0100 Subject: [PATCH 43/62] Introduce active flag (#340) --- .../dtos/business/Affiliation.groovy | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy index 4285efe834..1bf6d8ed4e 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/Affiliation.groovy @@ -66,6 +66,12 @@ final class Affiliation { */ final AffiliationLabel label + /** + * Boolean flag if an affiliation is active + * @since 2.23.0 + */ + final Boolean active + static class Builder { int id @@ -86,6 +92,8 @@ final class Affiliation { AffiliationLabel label + Boolean active + Builder(String organisation, String street, String postalCode, String city) { this.id = id this.organisation = organisation @@ -96,6 +104,7 @@ final class Affiliation { this.country = "Germany" this.category = AffiliationCategory.EXTERNAL this.label = AffiliationLabel.MNF + this.active = Boolean.TRUE } Builder id(int id) { @@ -128,6 +137,16 @@ final class Affiliation { return this } + Builder setInactive() { + this.active = Boolean.FALSE + return this + } + + Builder setActive() { + this.active = Boolean.TRUE + return this + } + Affiliation build() { return new Affiliation(this) @@ -145,6 +164,7 @@ final class Affiliation { this.category = builder.category this.city = builder.city this.label = builder.label + this.active = builder.active } @Override From 296e58a8178dec235e9c7a4fef0a0d41fbde4197 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Thu, 24 Nov 2022 11:28:23 +0100 Subject: [PATCH 44/62] Feature/dm 589 allow fractions in all products (#341) * DM-589 Allow fractions in all service products * DM-589 Add tests for fractional productItem creation --- .../services/MetabolomicAnalysis.groovy | 2 +- .../business/services/PrimaryAnalysis.groovy | 2 +- .../services/ProteomicAnalysis.groovy | 2 +- .../services/SecondaryAnalysis.groovy | 2 +- .../dtos/business/services/Sequencing.groovy | 2 +- .../dtos/business/ProductItemSpec.groovy | 26 ++++++++++++++++++- 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy index 374600ddf1..a7d5ad0bc8 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/MetabolomicAnalysis.groovy @@ -11,7 +11,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * @since 2.4.0 */ @EqualsAndHashCode(callSuper = true) -class MetabolomicAnalysis extends AtomicProduct { +class MetabolomicAnalysis extends PartialProduct { /** * Basic product constructor. * diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy index 58033d06ed..93211068db 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/PrimaryAnalysis.groovy @@ -11,7 +11,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * @since 1.12.0 */ @EqualsAndHashCode(callSuper = true) -class PrimaryAnalysis extends AtomicProduct { +class PrimaryAnalysis extends PartialProduct { /** * Basic product constructor. * diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy index 57b2e444a6..09093ac9fd 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/ProteomicAnalysis.groovy @@ -11,7 +11,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * @since 2.4.0 */ @EqualsAndHashCode(callSuper = true) -class ProteomicAnalysis extends AtomicProduct { +class ProteomicAnalysis extends PartialProduct { /** * Basic product constructor. diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy index a436d15812..a5b8fb5289 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/SecondaryAnalysis.groovy @@ -12,7 +12,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * @since 1.12.0 */ @EqualsAndHashCode(callSuper = true) -class SecondaryAnalysis extends AtomicProduct { +class SecondaryAnalysis extends PartialProduct { /** * Basic product constructor. * diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy index 4803246be1..377171609d 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/services/Sequencing.groovy @@ -11,7 +11,7 @@ import life.qbic.datamodel.dtos.business.facilities.Facility * @since 1.12.0 */ @EqualsAndHashCode(callSuper = true) -class Sequencing extends AtomicProduct { +class Sequencing extends PartialProduct { /** * Basic product constructor. * diff --git a/src/test/groovy/life/qbic/datamodel/dtos/business/ProductItemSpec.groovy b/src/test/groovy/life/qbic/datamodel/dtos/business/ProductItemSpec.groovy index 99a15799d3..a9aba0b287 100644 --- a/src/test/groovy/life/qbic/datamodel/dtos/business/ProductItemSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/dtos/business/ProductItemSpec.groovy @@ -1,9 +1,15 @@ package life.qbic.datamodel.dtos.business import life.qbic.datamodel.dtos.business.facilities.Facility +import life.qbic.datamodel.dtos.business.services.DataStorage +import life.qbic.datamodel.dtos.business.services.ExternalServiceProduct +import life.qbic.datamodel.dtos.business.services.MetabolomicAnalysis import life.qbic.datamodel.dtos.business.services.PrimaryAnalysis import life.qbic.datamodel.dtos.business.services.Product import life.qbic.datamodel.dtos.business.services.ProductUnit +import life.qbic.datamodel.dtos.business.services.ProjectManagement +import life.qbic.datamodel.dtos.business.services.ProteomicAnalysis +import life.qbic.datamodel.dtos.business.services.SecondaryAnalysis import life.qbic.datamodel.dtos.business.services.Sequencing import spock.lang.Specification import spock.lang.Unroll @@ -101,5 +107,23 @@ class ProductItemSpec extends Specification { product.currency.displayName == "Euro" } - + def "ProductItems allow partial quantities for all services"() { + + when: "ProductItems for all service products can be created" + ProductItem productItem = new ProductItem(quantity, product, totalPrice, quantityDiscount) + + then: "No exceptions are thrown" + noExceptionThrown() + + where: "for every service product" + quantity | internalUnitPrice | product | totalPrice | quantityDiscount + 1.1 | 1 | new Sequencing("Sequencing", "Sequencing description", 1.0, 3.0, ProductUnit.PER_SAMPLE, 1, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 2.2 | 2 | new PrimaryAnalysis("Primary Analysis", "Primary Analysis description", 2.0, 4.0, ProductUnit.PER_CYCLE, 2, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 3.3 | 3 | new SecondaryAnalysis("Secondary Analysis", "Secondary Analysis description", 3.0, 5.0, ProductUnit.PER_DATASET, 3, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 4.4 | 4 | new ProteomicAnalysis("Proteomic Analysis", "Proteomic Analysis description", 4.0, 6.0, ProductUnit.PER_FLOW_CELL, 4, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 5.5 | 5 | new MetabolomicAnalysis("Metabolomic Analysis", "Metabolomic Analysis description", 5.0, 7.0, ProductUnit.PER_100_MICROGRAM_PEPTIDE_CHANNEL, 5, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 6.6 | 6 | new ProjectManagement("Project Management", "Project Management description", 6.0, 8.0, ProductUnit.PER_HOUR, 6, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 7.7 | 7 | new DataStorage("Data Storage", "Data Storage description", 7.0, 9.0, ProductUnit.PER_GIGABYTE, 7, Facility.QBIC) | quantity * internalUnitPrice | 0.0 + 8.8 | 8 | new ExternalServiceProduct("External Service", "External Service description", 8.0, 10.0, ProductUnit.PER_PROJECT, 8, Facility.CEGAT) | quantity * 10 | 0.0 + } } From f2b81541193cf680a3150bce95c0dbf0ddbd82eb Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Thu, 24 Nov 2022 10:48:33 +0000 Subject: [PATCH 45/62] Set version to 2.23.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 54d10a8cee..43c699aa2a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.23.0-SNAPSHOT + 2.23.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From d6168a7f395edcc6d7f43bd94b6329a317a77823 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Mon, 12 Dec 2022 13:44:04 +0100 Subject: [PATCH 46/62] Introduce new Nanopore schema to account for files generated due to second basecalling (#344) * WIP New nanopore schema accounting for second basecalling folder * Finalize nanopore schema accounting for second basecalling folder * Add minItems to ensure that all files are provided * Provide datastructure model in readme for basecalling folder * apply review suggestion Co-authored-by: wow-such-code * Update v3 Readme Co-authored-by: wow-such-code * Update v3 Readme Co-authored-by: wow-such-code * Provide datastructure model in readme for basecalling folder Co-authored-by: wow-such-code --- README.md | 4 + .../Nanopore_Data_Structure_Model_v4.svg | 4 + pom.xml | 2 +- .../datasets/OxfordNanoporeExperiment.groovy | 7 +- .../files/nanopore/GuppyBasecallLog.groovy | 30 + .../nanopore/SequencingTelemetryLog.groovy | 32 + .../folders/nanopore/BasecallingFolder.groovy | 42 ++ .../OxfordNanoporeInstrumentOutputV4.groovy | 22 + .../nanopore-instrument-output.schema.json | 2 +- .../nanopore-instrument-output_v2.schema.json | 2 +- .../nanopore-instrument-output_v3.schema.json | 2 +- .../nanopore-instrument-output_v4.schema.json | 635 ++++++++++++++++++ .../OxfordNanoporeExperimentSpec.groovy | 23 + .../nanopore/GuppyBasecallLogSpec.groovy | 37 + .../SequencingTelemetryLogSpec.groovy | 37 + .../nanopore/BasecallingFolderSpec.groovy | 43 ++ .../valid-example-v4-with-basecalling.json | 267 ++++++++ 17 files changed, 1185 insertions(+), 6 deletions(-) create mode 100644 doc/figures/Nanopore_Data_Structure_Model_v4.svg create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLog.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV4.groovy create mode 100644 src/main/resources/schemas/nanopore-instrument-output_v4.schema.json create mode 100644 src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLogSpec.groovy create mode 100644 src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLogSpec.groovy create mode 100644 src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolderSpec.groovy create mode 100644 src/test/resources/nanopore/valid-example-v4-with-basecalling.json diff --git a/README.md b/README.md index d97d27b359..752a60c58c 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,10 @@ A more recent model, which places two of the configuration files into a subfolde ![Nanopore Data Structure Model v2](./doc/figures/Nanopore_Data_Structure_Model_v2.svg) +V4 outlines a model in which a second higher-accuracy basecalling was performed after the initial basecalling + +![Nanopore Data Structure Model v4](./doc/figures/Nanopore_Data_Structure_Model_v4.svg) + #### Nanopore usage example For usage examples, see the [usage documentation](./doc/examples.md). diff --git a/doc/figures/Nanopore_Data_Structure_Model_v4.svg b/doc/figures/Nanopore_Data_Structure_Model_v4.svg new file mode 100644 index 0000000000..4c1602816e --- /dev/null +++ b/doc/figures/Nanopore_Data_Structure_Model_v4.svg @@ -0,0 +1,4 @@ + + + +
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/pom.xml b/pom.xml index 54d10a8cee..9996e7e362 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.23.0-SNAPSHOT + 2.24.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy index e4f0146f93..057834dc29 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy @@ -40,7 +40,9 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FQDN_FILES + ".BarcodeAlignmentLog", FQDN_FILES + ".PoreActivityLog", FQDN_FILES + ".SampleSheetLog", - FQDN_FILES + ".PoreScanDataLog" + FQDN_FILES + ".PoreScanDataLog", + FQDN_FILES + ".SequencingTelemetryLog", + FQDN_FILES + ".GuppyBasecallLog" ] private final static Set nanoporeFolderTypes = [ @@ -52,7 +54,8 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FQDN_FOLDERS + ".FastQFailFolder", FQDN_FOLDERS + ".UnclassifiedFast5Folder", FQDN_FOLDERS + ".UnclassifiedFastQFolder", - FQDN_FOLDERS + ".OtherReportsFolder" + FQDN_FOLDERS + ".OtherReportsFolder", + FQDN_FOLDERS + ".BasecallingFolder" ] private OxfordNanoporeExperiment(String sampleId, List measurements) { diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLog.groovy new file mode 100644 index 0000000000..c749b0564c --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLog.groovy @@ -0,0 +1,30 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore guppy basecalling client log file + */ +class GuppyBasecallLog extends DataFile { + + final private static String FILE_TYPE = "log" + + final private static String NAME_SCHEMA = $/guppy_basecall_client_log-.*/$ + + protected GuppyBasecallLog() {} + + protected GuppyBasecallLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static GuppyBasecallLog create(String name, String relativePath) { + return new GuppyBasecallLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore guppy basecall client log schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLog.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLog.groovy new file mode 100644 index 0000000000..2ae6d07cf5 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLog.groovy @@ -0,0 +1,32 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore sequencing telemetry log file + * + */ +class SequencingTelemetryLog extends DataFile { + + final private static String FILE_TYPE = "js" + + final private static String NAME_SCHEMA = $/sequencing_telemetry_.*/$ + + protected SequencingTelemetryLog() {} + + protected SequencingTelemetryLog(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static SequencingTelemetryLog create(String name, String relativePath) { + return new SequencingTelemetryLog(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore sequencing telemetry log name schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolder.groovy new file mode 100644 index 0000000000..eba6e31afa --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolder.groovy @@ -0,0 +1,42 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * + * + * + * + * @since + * + */ +class BasecallingFolder extends DataFolder { + /** + * The name schema of a basecalling folder contained within the nanopore dataset. + * + */ + final private static String NAME_SCHEMA = /basecalling/ + + protected BasecallingFolder() {} + + protected BasecallingFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + validateName() + } + + /** + * Creates a new instance of a BasecallingFolder object + * @param relativePath The relative path of the folder + * @param children A list with child elements of unknown type of the folder + * @return A new instance of a BasecallingFolder object + */ + static BasecallingFolder create(String name, String relativePath, List children) { + new BasecallingFolder(name, relativePath, children) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore Basecalling schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV4.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV4.groovy new file mode 100644 index 0000000000..14f4d5050e --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputV4.groovy @@ -0,0 +1,22 @@ +package life.qbic.datamodel.instruments + + +/** + * Represents the Nanopore instrument output data structure schema. + * + * The original schema is defined in as resource and is + * referenced here, wrapped in a Groovy class for reference + * in applications that want to validate the instrument + * output structure against the schema. + * + * @author Steffen Greiner + * @since 1.9.0 + */ +class OxfordNanoporeInstrumentOutputV4 { + + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_v4.schema.json" + + static InputStream getSchemaAsStream() { + return OxfordNanoporeInstrumentOutputV4.getResourceAsStream(SCHEMA_PATH) + } +} diff --git a/src/main/resources/schemas/nanopore-instrument-output.schema.json b/src/main/resources/schemas/nanopore-instrument-output.schema.json index 47a6be3be5..3071d093a0 100644 --- a/src/main/resources/schemas/nanopore-instrument-output.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output.schema.json", "title": "Nanopore Instrument Output", - "description": "Describes in which form Nanopore data is received from the lab.", + "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore is received from the Microbiology lab.", "definitions": { "folder": { "description": "Describes a folder", diff --git a/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json index 452feeefea..39256876c7 100644 --- a/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output_v2.schema.json", "title": "Nanopore Instrument Output V2", - "description": "Describes in which form Nanopore data is received from the lab.", + "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore data is received from the medical genetics lab. Accounts for 'other reports' folder created by the lab", "definitions": { "folder": { "description": "Describes a folder", diff --git a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json index 456bb037dd..3c656cc524 100644 --- a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output_v3.schema.json", "title": "Nanopore Instrument Output V3", - "description": "Describes in which form Nanopore data is received from the lab.", + "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore data is received from the medical genetics lab. Accounts for the adapted 'other_reports' folder structure provided by the lab", "definitions": { "folder": { "description": "Describes a folder", diff --git a/src/main/resources/schemas/nanopore-instrument-output_v4.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v4.schema.json new file mode 100644 index 0000000000..0c22e107a9 --- /dev/null +++ b/src/main/resources/schemas/nanopore-instrument-output_v4.schema.json @@ -0,0 +1,635 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "http://qbic.life/nanopore-instrument-output_v4.schema.json", + "title": "Nanopore Instrument Output V4", + "description": "Describes in which form PromethION/MinION sequenced Nanopore data is received from the microbiology lab. For this dataset a second basecalling with higher accuracy was performed after the an initial fast basecalling during sequencing", + "definitions": { + "folder": { + "description": "Describes a folder", + "type": "object", + "required": [ + "name", + "path", + "children" + ], + "properties": { + "name": { + "description": "Folder name", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "relative folderpath", + "type": "string", + "minLength": 1 + }, + "children": { + "description": "Describes files and/or sub-folders if existent", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "$ref": "#/definitions/file" + } + ] + } + } + } + }, + "file": { + "description": "Describes a file", + "type": "object", + "required": [ + "name", + "path", + "file_type" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + }, + "file_type": { + "type": "string", + "minLength": 1 + } + } + }, + "qbic_code": { + "description": "Describes a QBiC code used as a prefix", + "type": "string", + "pattern": "Q\\w{4}\\d{3}[A-X][A-X0-9].*" + }, + "barcoded_folder": { + "description": "folder starting with qbic barcode prefix", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "$ref": "#/definitions/qbic_code" + } + } + } + ] + }, + "fast5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fast5" + } + } + } + ] + }, + "fastqgz_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq.gz" + } + } + } + ] + }, + "fastq_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq" + } + } + } + ] + }, + "unclassified_folder": { + "description": "folder containing unassigned read file(s)", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "unclassified" + } + } + } + ] + }, + "fast5_unclassified_folder": { + "description": "folder containing fast5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "fastq_unclassified_folder": { + "description": "folder containing fastq and/or fastq.gz data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastqgz_file" + }, + { + "$ref": "#/definitions/fastq_file" + } + ] + }, + "minItems": 0 + } + } + } + ] + }, + "fast5_subfolder": { + "description": "folder containing fast5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fastq_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_subfolder": { + "description": "folder containing gzipped fastq data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fastqgz_file" + }, + "minItems": 1 + } + } + } + ] + }, + "basecalling_folder": { + "description": "folder containing the files resulting from a second high accuracy basecalling performed after the initial sequencing", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "basecalling" + }, + "children": { + "items": { + "uniqueItems": true, + "minItems": 5, + "anyOf": [ + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + }, + { + "$ref": "#/definitions/sequencing_telemetry" + }, + { + "$ref": "#/definitions/guppy_basecall_client_log" + } + ] + } + } + } + } + ] + }, + "measurements": { + "description": "Top folder generated by the facility, containing one or more timestamped measurements", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/measurement" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "measurement": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "\\d{4}(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])_([01][0-9]|2[0-3])([0-5][0-9]).*", + "description": "Name of measurement subfolder. Starts with date and time of measurement." + }, + "children": { + "uniqueItems": true, + "minItems": 11, + "items": { + "oneOf": [ + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/fast5_pass" + }, + { + "$ref": "#/definitions/fast5_fail" + }, + { + "$ref": "#/definitions/drift_correction_log" + }, + { + "$ref": "#/definitions/duty_time_log" + }, + { + "$ref": "#/definitions/final_summary_log" + }, + { + "$ref": "#/definitions/mux_scan_data_log" + }, + { + "$ref": "#/definitions/report_md_log" + }, + { + "$ref": "#/definitions/report_html_log" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + }, + { + "$ref": "#/definitions/throughput_log" + }, + { + "$ref": "#/definitions/basecalling_folder" + } + ] + } + } + } + } + ] + }, + "drift_correction_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "drift_correction_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "duty_time_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "duty_time_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "final_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "final_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "mux_scan_data_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "mux_scan_data_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "report_md_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "md" + } + } + } + ] + }, + "report_html_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "html" + } + } + } + ] + }, + "sequencing_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "throughput_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "throughput_.*" + }, + "file_type": { + "pattern": "csv" + } + } + } + ] + }, + "sequencing_telemetry": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_telemetry_.*" + }, + "file_type": { + "pattern": "js" + } + } + } + ] + }, + "guppy_basecall_client_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "guppy_basecall_client_log-.*" + }, + "file_type": { + "pattern": "log" + } + } + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/measurements" + } + ] +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index ebb263fc11..391aa0b0c2 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -35,6 +35,12 @@ class OxfordNanoporeExperimentSpec extends Specification { */ @Shared Map extendedDataStructureWithReportsFolderV3 + + /** + * Addition to the newest structure, containing a second basecalling run + */ + @Shared + Map extendedDataStructureWithReportsFolderV4 /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -61,6 +67,9 @@ class OxfordNanoporeExperimentSpec extends Specification { // latest example with slightly different structure stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v3.json") extendedDataStructureWithReportsFolderV3 = (Map) new JsonSlurper().parse(stream) + // nanopore structure containing a second basecalling folder + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-v4-with-basecalling.json") + extendedDataStructureWithReportsFolderV4 = (Map) new JsonSlurper().parse(stream) // read in unclassified example stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-unclassified.json") unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) @@ -126,6 +135,20 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].asicTemp == "32.631687" } + def "Create sample Oxford Nanopore experiment successfully for structure with second basecalling"() { + given: + final def example = extendedDataStructureWithReportsFolderV4 + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + } + def "Create a simple pooled Oxford Nanopore experiment successfully"() { given: final def example = minimalWorkingPooledDataStructure diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLogSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLogSpec.groovy new file mode 100644 index 0000000000..27b5722952 --- /dev/null +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/GuppyBasecallLogSpec.groovy @@ -0,0 +1,37 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import spock.lang.Specification + +/** + * + * + */ +class GuppyBasecallLogSpec extends Specification { + + def "shall create a GuppyBasecallingLog instance"() { + given: + final name = "guppy_basecall_client_log-.log" + final relativePath = "root/basecalling/guppy_basecall_client_log-.log" + + when: + def dataObject = GuppyBasecallLog.create(name, relativePath) + + then: + assert dataObject instanceof GuppyBasecallLog + assert dataObject.relativePath == relativePath + assert dataObject.name == name + } + + def "name not matching schema shall throw IllegalArgumentException"() { + given: + final name = "guppy_basecall.log" + final relativePath = "root/basecalling/guppy_basecall.log" + + when: + def dataObject = GuppyBasecallLog.create(name, relativePath) + + then: + thrown(IllegalArgumentException) + } + +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLogSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLogSpec.groovy new file mode 100644 index 0000000000..d80b92861c --- /dev/null +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/SequencingTelemetryLogSpec.groovy @@ -0,0 +1,37 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import spock.lang.Specification + +/** + * + * + */ +class SequencingTelemetryLogSpec extends Specification { + + def "shall create a SequencingTelemetryLog instance"() { + given: + final name = "sequencing_telemetry_.js" + final relativePath = "root/basecalling/sequencing_telemetry_.js" + + when: + def dataObject = SequencingTelemetryLog.create(name, relativePath) + + then: + assert dataObject instanceof SequencingTelemetryLog + assert dataObject.relativePath == relativePath + assert dataObject.name == name + } + + def "name not matching schema shall throw IllegalArgumentException"() { + given: + final name = "telemetry.log" + final relativePath = "root/basecalling/telemetry.log" + + when: + def dataObject = SequencingTelemetryLog.create(name, relativePath) + + then: + thrown(IllegalArgumentException) + } + +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolderSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolderSpec.groovy new file mode 100644 index 0000000000..074c073b28 --- /dev/null +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/BasecallingFolderSpec.groovy @@ -0,0 +1,43 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile +import life.qbic.datamodel.datasets.datastructure.files.nanopore.GuppyBasecallLog +import spock.lang.Specification + +/** + * + */ +class BasecallingFolderSpec extends Specification { + + def "create basecalling folder"() { + given: + final def name = "basecalling" + final def relativePath = "root/basecalling" + final def children = [] + final def datafile = GuppyBasecallLog.create("guppy_basecall_client_log-.log", "root/basecalling/guppy_basecall_client_log-.log") + children.add(datafile) + + when: + final def dataFolder = BasecallingFolder.create(name, relativePath, children) + + then: + assert dataFolder.getChildren().get(0) instanceof DataFile + + } + + def "naming schema violation should raise an IllegalArgumentException"() { + given: + final def name = "basedcall" + final def relativePath = "root/basedcall" + final def children = [] + final def datafile = GuppyBasecallLog.create("guppy_basecall_client_log-.log", "root/basedcall/guppy_basecall_client_log-.log") + children.add(datafile) + + when: + final def dataFolder = BasecallingFolder.create(name, relativePath, children) + + then: + thrown(IllegalArgumentException) + + } +} diff --git a/src/test/resources/nanopore/valid-example-v4-with-basecalling.json b/src/test/resources/nanopore/valid-example-v4-with-basecalling.json new file mode 100644 index 0000000000..2471b09b2c --- /dev/null +++ b/src/test/resources/nanopore/valid-example-v4-with-basecalling.json @@ -0,0 +1,267 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type": "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "throughput_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/throughput_.csv", + "file_type": "csv" + }, + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "duty_time_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/duty_time_.csv", + "file_type": "csv" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "mux_scan_data.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/mux_scan_data.csv", + "file_type": "csv" + }, + { + "name": "drift_correction_.csv", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/drift_correction_.csv", + "file_type": "csv" + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "basecalling", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/", + "children": [ + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "sequencing_telemetry_.js", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/sequencing_telemetry_.js", + "file_type": "js" + }, + { + "name": "guppy_basecall_client_log-1234-56-78_90.log", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/guppy_basecall_client_log-1234-56-78_90.log", + "file_type": "log" + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + } + ] + } + ] + } + ] +} From eee7fdcd70b30759664081608fe275695487c44f Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Mon, 12 Dec 2022 15:02:16 +0100 Subject: [PATCH 47/62] remove duplicate words --- .../resources/schemas/nanopore-instrument-output.schema.json | 2 +- .../resources/schemas/nanopore-instrument-output_v2.schema.json | 2 +- .../resources/schemas/nanopore-instrument-output_v3.schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/schemas/nanopore-instrument-output.schema.json b/src/main/resources/schemas/nanopore-instrument-output.schema.json index 3071d093a0..72aa2ac3b7 100644 --- a/src/main/resources/schemas/nanopore-instrument-output.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output.schema.json", "title": "Nanopore Instrument Output", - "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore is received from the Microbiology lab.", + "description": "Describes in which form PromethION/MinION sequenced Nanopore is received from the Microbiology lab.", "definitions": { "folder": { "description": "Describes a folder", diff --git a/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json index 39256876c7..a568991d00 100644 --- a/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output_v2.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output_v2.schema.json", "title": "Nanopore Instrument Output V2", - "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore data is received from the medical genetics lab. Accounts for 'other reports' folder created by the lab", + "description": "Describes in which form PromethION/MinION sequenced Nanopore data is received from the medical genetics lab. Accounts for 'other reports' folder created by the lab", "definitions": { "folder": { "description": "Describes a folder", diff --git a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json index 3c656cc524..6ca89f7a6b 100644 --- a/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json +++ b/src/main/resources/schemas/nanopore-instrument-output_v3.schema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema", "$id": "http://qbic.life/nanopore-instrument-output_v3.schema.json", "title": "Nanopore Instrument Output V3", - "description": "Describes in which form PromethION/MinION sequenced sequenced Nanopore data is received from the medical genetics lab. Accounts for the adapted 'other_reports' folder structure provided by the lab", + "description": "Describes in which form PromethION/MinION sequenced Nanopore data is received from the medical genetics lab. Accounts for the adapted 'other_reports' folder structure provided by the lab", "definitions": { "folder": { "description": "Describes a folder", From 0942345c44ef753b9d9f66a88ae92a95c9a832ba Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Mon, 12 Dec 2022 14:13:48 +0000 Subject: [PATCH 48/62] Set version to 2.24.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9996e7e362..f2597261af 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.24.0-SNAPSHOT + 2.24.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 699616cbe8d1ff68875bfb824b0e5947ab26910d Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 15 Dec 2022 17:12:24 +0100 Subject: [PATCH 49/62] next snapshot version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f2597261af..fb2a7a1710 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.24.0 + 2.25.0-SNAPSHOT data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 4e7f13c52e8d2d75c295cee564765472547a1a8f Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 15 Dec 2022 18:23:59 +0100 Subject: [PATCH 50/62] provide method to get basecalling folder and test it --- .../datasets/OxfordNanoporeMeasurement.groovy | 17 ++++++++++++++--- .../OxfordNanoporeExperimentSpec.groovy | 5 +++++ .../OxfordNanoporeMeasurementSpec.groovy | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy index 5d79cf489d..131c1c401c 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy @@ -29,6 +29,8 @@ final class OxfordNanoporeMeasurement { private boolean pooledSamplesMeasurement + private boolean hasBasecallingData + protected OxfordNanoporeMeasurement(String name, String path, List children, Map metadata) { this.logFilesCollection = new ArrayList<>() this.folders = new HashMap<>() @@ -39,6 +41,7 @@ final class OxfordNanoporeMeasurement { createContent() assessPooledStatus() + assessBasecallingStatus() assessState() } @@ -53,12 +56,16 @@ final class OxfordNanoporeMeasurement { private void assessPooledStatus() { this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5pass"]) // There can be still pooled samples in the failed folder, worst case is all - // samples failed, so we need to check there to + // samples failed, so we need to check there too if (! pooledSamplesMeasurement) { this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5fail"]) } } + private void assessBasecallingStatus() { + this.hasBasecallingData = folders["basecalling"]; + } + private static boolean containsAtLeastOneBarcodedFolder(DataFolder folder) { if (!folder) { return false @@ -86,6 +93,9 @@ final class OxfordNanoporeMeasurement { case DataFile: logFilesCollection.add(element as DataFile) break + case BasecallingFolder: + folders["basecalling"] = element as BasecallingFolder + break } } } @@ -273,13 +283,14 @@ final class OxfordNanoporeMeasurement { private Map> prepareRawData(String sampleId) { final def result = new HashMap() - final def folders = [ + final def dataFolders = [ "fast5fail": (folders.get("fast5fail") as DataFolder), "fast5pass": (folders.get("fast5pass") as DataFolder), "fastqpass": (folders.get("fastqpass") as DataFolder), "fastqfail": (folders.get("fastqfail") as DataFolder) ] - result.put(sampleId, folders) + if(hasBasecallingData) dataFolders.put("basecalling", (folders.get("basecalling") as DataFolder)) + result.put(sampleId, dataFolders) return result } diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 391aa0b0c2..74c2719aff 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -147,6 +147,11 @@ class OxfordNanoporeExperimentSpec extends Specification { assert experiment.sampleCode == "QABCD001AB" assert measurements.size() == 1 assert measurements[0].asicTemp == "32.631687" + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("basecalling") + assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").relativePath.isEmpty() + assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").children.isEmpty() + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").name.size() > 0 + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fastqfail") } def "Create a simple pooled Oxford Nanopore experiment successfully"() { diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy index 8a322abc3d..ec875a22e9 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy @@ -94,6 +94,7 @@ class OxfordNanoporeMeasurementSpec extends Specification { assert result.get("QABCD001AE").get("fast5pass") instanceof DataFolder assert result.get("QABCD001AE").get("fastqfail") instanceof DataFolder assert result.get("QABCD001AE").get("fastqpass") instanceof DataFolder + assert result.get("QABCD001AE").get("basecalling") == null assert measurement.relativePath == "path/20200219_1107_1-E3-H3_PAE26974_454b8dc6" assert libraryKit == "SQK-LSK109" assert adapter.equals("flongle") From e02f0bad43676f07a0f49902f34d3da5a09d8c9e Mon Sep 17 00:00:00 2001 From: wow-such-code Date: Thu, 15 Dec 2022 18:32:02 +0100 Subject: [PATCH 51/62] treat as patch for main branch --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fb2a7a1710..f2597261af 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.25.0-SNAPSHOT + 2.24.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From d0a192ac5a5c7b3df76b5b4bc0394154c070a55b Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Mon, 13 Feb 2023 14:58:33 +0100 Subject: [PATCH 52/62] Introduce minimal Schema for nanopore registration (#350) * Introduce Optional Files and Folders for nanopore registration with schema and json examples + tests * Adapt OxfordNanoporeExperiment and Tests to account for optional folders and file generation instead of throwing errors * Remove barcode_alignment from the list of required files in the minimal expected datastructure * Introduce new schema version so minContains can be employed to check for minimum number of files * Include example of measurementname in minimal schema * Fix typo in Optional File description Co-authored-by: Tobias Koch * Remove outdated comment and switch static final * Introduce NanoporeFile and NanoporeFolder Enums and dedicated isFile and isFolder check methods --------- Co-authored-by: Tobias Koch --- .../datasets/OxfordNanoporeExperiment.groovy | 494 +++++++++++------- .../files/nanopore/OptionalFile.groovy | 29 + .../folders/nanopore/OptionalFolder.groovy | 29 + ...fordNanoporeInstrumentOutputMinimal.groovy | 19 + ...pore-instrument-output_minimal_schema.json | 484 +++++++++++++++++ .../OxfordNanoporeExperimentSpec.groovy | 47 +- .../valid-minimal-structure-pooled.json | 344 ++++++++++++ .../nanopore/valid-minimal-structure.json | 196 +++++++ 8 files changed, 1437 insertions(+), 205 deletions(-) create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/OptionalFile.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/OptionalFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy create mode 100644 src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json create mode 100644 src/test/resources/nanopore/valid-minimal-structure-pooled.json create mode 100644 src/test/resources/nanopore/valid-minimal-structure.json diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy index 057834dc29..138c5292f9 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy @@ -1,7 +1,9 @@ package life.qbic.datamodel.datasets import life.qbic.datamodel.datasets.datastructure.files.DataFile +import life.qbic.datamodel.datasets.datastructure.files.nanopore.OptionalFile import life.qbic.datamodel.datasets.datastructure.folders.DataFolder +import life.qbic.datamodel.datasets.datastructure.folders.nanopore.OptionalFolder import life.qbic.datamodel.identifiers.SampleCodeFunctions import java.lang.reflect.InvocationTargetException @@ -14,239 +16,327 @@ import java.lang.reflect.Method */ final class OxfordNanoporeExperiment implements ExperimentFolder { - // Fully qualified domain name of the nanopore folder structure package - private final static String FQDN_FOLDERS = "life.qbic.datamodel.datasets.datastructure.folders.nanopore" - // Fully qualified domain name of the nanopore file structure package - private final static String FQDN_FILES = "life.qbic.datamodel.datasets.datastructure.files.nanopore" - - private final List measurements - - private final String sampleId - - private final static Set nanoporeFileTypes = [ - FQDN_FILES + ".DriftCorrectionLog", - FQDN_FILES + ".DutyTimeLog", - FQDN_FILES + ".Fast5File", - FQDN_FILES + ".FastQFile", - FQDN_FILES + ".FastQZippedFile", - FQDN_FILES + ".FinalSummaryLog", - FQDN_FILES + ".MuxScanDataLog", - FQDN_FILES + ".ReportMdLog", - FQDN_FILES + ".ReportPDFLog", - FQDN_FILES + ".ReportHTMLLog", - FQDN_FILES + ".ReportJSONLog", - FQDN_FILES + ".SequencingSummaryLog", - FQDN_FILES + ".ThroughputLog", - FQDN_FILES + ".BarcodeAlignmentLog", - FQDN_FILES + ".PoreActivityLog", - FQDN_FILES + ".SampleSheetLog", - FQDN_FILES + ".PoreScanDataLog", - FQDN_FILES + ".SequencingTelemetryLog", - FQDN_FILES + ".GuppyBasecallLog" - ] - - private final static Set nanoporeFolderTypes = [ - FQDN_FOLDERS + ".Fast5Folder", - FQDN_FOLDERS + ".FastQFolder", - FQDN_FOLDERS + ".Fast5PassFolder", - FQDN_FOLDERS + ".Fast5FailFolder", - FQDN_FOLDERS + ".FastQPassFolder", - FQDN_FOLDERS + ".FastQFailFolder", - FQDN_FOLDERS + ".UnclassifiedFast5Folder", - FQDN_FOLDERS + ".UnclassifiedFastQFolder", - FQDN_FOLDERS + ".OtherReportsFolder", - FQDN_FOLDERS + ".BasecallingFolder" - ] - - private OxfordNanoporeExperiment(String sampleId, List measurements) { - this.measurements = Objects.requireNonNull(measurements, "measurements must not be null") - this.sampleId = Objects.requireNonNull(sampleId, "sampleId must not be null") - } + private final List measurements - /** - * Static factory method that creates a new instance from a Oxford Nanopore sequencer output. - * - * @param Map nanoPoreSequencerOutput - * @return OxfordNanoporeExperiment A new instance of a nanopore experiment. - */ - static OxfordNanoporeExperiment create(Map nanoPoreSequencerOutput) { - final String sampleId = parseQbicIdFromRootFolder(nanoPoreSequencerOutput) - final List measurements = parseMeasurements(nanoPoreSequencerOutput) - return new OxfordNanoporeExperiment(sampleId, measurements) - } + private final String sampleId - /** - * Provides a list of measurements contained within the experiment folder. - * @return - */ - List getMeasurements() { - return this.measurements + private OxfordNanoporeExperiment(String sampleId, List measurements) { + this.measurements = Objects.requireNonNull(measurements, "measurements must not be null") + this.sampleId = Objects.requireNonNull(sampleId, "sampleId must not be null") + } + + /** + * Static factory method that creates a new instance from a Oxford Nanopore sequencer output. + * + * @param Map nanoPoreSequencerOutput + * @return OxfordNanoporeExperiment A new instance of a nanopore experiment. + */ + static OxfordNanoporeExperiment create(Map nanoPoreSequencerOutput) { + final String sampleId = parseQbicIdFromRootFolder(nanoPoreSequencerOutput) + final List measurements = parseMeasurements(nanoPoreSequencerOutput) + return new OxfordNanoporeExperiment(sampleId, measurements) + } + + /** + * Provides a list of measurements contained within the experiment folder. + * @return + */ + List getMeasurements() { + return this.measurements + } + + @Override + String getSampleCode() { + return this.sampleId + } + + /** + * Helper method that parses the QBiC identifier from the root folder name*/ + private static String parseQbicIdFromRootFolder(Map nanoPoreSequencerOutput) { + def name = Objects.requireNonNull(nanoPoreSequencerOutput.get("name"), "The root folder must contain a name property.") + final def ids = SampleCodeFunctions.findAllQbicSampleCodes(name as String) + if (ids.isEmpty()) { + throw new IllegalArgumentException("No QBiC sample identifier found!") + } + if (ids.size() > 1) { + throw new IllegalArgumentException("Name contained more than one valid sample id!") } + return ids.get(0) + } - @Override - String getSampleCode() { - return this.sampleId + /** + * Helper method that creates the measurements from the sequencer output*/ + private static List parseMeasurements(Map nanoPoreSequencerOutput) { + final def measurements = [] + Objects.requireNonNull(nanoPoreSequencerOutput.get("children"), "The root folder must contain at least one measurement folder.") + nanoPoreSequencerOutput.get("children").each { Map measurementItem -> + def name = measurementItem.get("name") as String + def relativePath = measurementItem.get("path") as String + def children = parseMeasurementItems(measurementItem.get("children") as List) + def metadata = measurementItem.get("metadata") as Map + measurements.add(new OxfordNanoporeMeasurement(name, relativePath, children, metadata)) } + return measurements + } - /** - * Helper method that parses the QBiC identifier from the root folder name - */ - private static String parseQbicIdFromRootFolder(Map nanoPoreSequencerOutput) { - def name = Objects.requireNonNull(nanoPoreSequencerOutput.get("name"), "The root folder must contain a name property.") - final def ids = SampleCodeFunctions.findAllQbicSampleCodes(name as String) - if (ids.isEmpty()) { - throw new IllegalArgumentException("No QBiC sample identifier found!") - } - if (ids.size() > 1) { - throw new IllegalArgumentException("Name contained more than one valid sample id!") + /* + * Helper method that creates a list of mixed DataFolders and DataFiles instances + */ + + private static List parseMeasurementItems(List items) { + final def children = [] + items.each { item -> + { + if (!item.isEmpty()) { + if (isFile(item)) { + // Lets try to parse it as a subclass of a DataFile + DataFile putativeFile = parseFile(item) + children.add(putativeFile) + } + if (isFolder(item)) { + // Lets try to parse it as a subclass of a DataFile + DataFolder putativeFolder = parseFolder(item) + children.add(putativeFolder) + } } - return ids.get(0) + } } + return children + } - /** - * Helper method that creates the measurements from the sequencer output - */ - private static List parseMeasurements(Map nanoPoreSequencerOutput) { - final def measurements = [] - Objects.requireNonNull(nanoPoreSequencerOutput.get("children"), "The root folder must contain at least one measurement folder.") - nanoPoreSequencerOutput.get("children").each { Map measurementItem -> - def name = measurementItem.get("name") as String - def relativePath = measurementItem.get("path") as String - def children = parseMeasurementItems(measurementItem.get("children") as List) - def metadata = measurementItem.get("metadata") as Map - measurements.add(new OxfordNanoporeMeasurement(name, relativePath, children, metadata)) - } - return measurements + /* + * Helper method that creates a DataFile instance from a map + */ + + private static DataFile parseFile(Map fileTree) throws IllegalArgumentException { + String name = fileTree.get("name") + String path = fileTree.get("path") + for (String nanoPoreFileType : NanoporeFileTypes.values()) { + Class c = Class.forName(nanoPoreFileType) + Method method = c.getDeclaredMethod("create", String.class, String.class) + try { + DataFile dataFile = method.invoke(null, name, path) as DataFile + return dataFile + } catch (InvocationTargetException e) { + // Do nothing as we need to try out all specialisations that extend the + // DataFile class + } } + try { + String fileSuffix = fileTree.get("file_type") + // Since the file structure is highly variable we want to allow for unknown files to be included in the experiment + OptionalFile optionalFile = OptionalFile.create(name, path, fileSuffix) + return optionalFile + } catch (Exception ignored) { + throw new IllegalArgumentException("File $name with path $path is not a valid Data File") + } + } - /* - * Helper method that creates a list of mixed DataFolders and DataFiles instances - */ + /* + * Helper method that creates a DataFolder instance from a map + */ - private static List parseMeasurementItems(List items) { - final def children = [] - items.each { item -> - try { - // Lets try to parse it as a subclass of a DataFile - def putativeFile = parseFile(item) - children.add(putativeFile) - } catch (IllegalArgumentException e) { - // In this case, no DataFile could be created, try to convert to a DataFolder then - def putativeFolder = parseFolder(item) - children.add(putativeFolder) - } - } - return children + private static DataFolder parseFolder(Map fileTree) throws IllegalArgumentException { + String name = fileTree.get("name") as String + String path = fileTree.get("path") as String + def children = parseChildren(fileTree.get("children") as List) + + for (String nanoPoreFolderType : NanoporeFolderTypes.values()) { + Method method = determineMethod(Class.forName(nanoPoreFolderType)) + Optional folder = tryToCreateDataFolder(method, name, path, children) + if (folder.isPresent()) { + return folder.get() + } } + // Since the file structure is highly variable we want to allow for unknown folders to be included in the experiment + try { + OptionalFolder optionalFolder = OptionalFolder.create(name, path, children) + return optionalFolder + } catch (Exception ignored) { + throw new IllegalArgumentException("Folder $name with path $path is not a valid Data Folder") + } + } - /* - * Helper method that creates a DataFile instance from a map - */ + /* + * Helper method that tries to create a DataFolder instance + * based on the DataFolder's different static factory create methods. + * As we do not know, whether a folder element is another typed folder + * such as FastQPassFolder or a named folder such as Fast5Folder, we have to + * try and fail. + */ + + private static Optional tryToCreateDataFolder(Method method, + String name, + String relativePath, + List children) { + Optional folder = Optional.empty() + try { + // Try typed folder + def dataFolder = method.invoke(null, relativePath, children) as DataFolder + folder = Optional.of(dataFolder) + } catch (InvocationTargetException e) { + // Do nothing + } catch (IllegalArgumentException e) { + try { + // Try named folder + def dataFolder = method.invoke(null, name, relativePath, children) as DataFolder + folder = Optional.of(dataFolder) + } catch (InvocationTargetException e2) { + // Do nothing + } + } + return folder + } - private static DataFile parseFile(Map fileTree) throws IllegalArgumentException { - def name = fileTree.get("name") - def path = fileTree.get("path") - for (String nanoPoreFileType : nanoporeFileTypes) { - Class c = Class.forName(nanoPoreFileType) - Method method = c.getDeclaredMethod("create", String.class, String.class) - try { - DataFile dataFile = method.invoke(null, name, path) as DataFile - return dataFile - } catch (InvocationTargetException e) { - // Do nothing as we need to try out all specialisations that extend the - // DataFile class - } + /* + * Helper method that parses the children of a folder. + */ + + private static List parseChildren(List children) { + def parsedChildren = [] + children.forEach({ Map unknownChild -> + if (!unknownChild.isEmpty()) { + if (isFile(unknownChild)) { + def child = parseFile(unknownChild) + parsedChildren.add(child) + } + if (isFolder(unknownChild)) { + def child = parseFolder(unknownChild) + parsedChildren.add(child) } - // If we cannot create a DataFile object at all, throw an exception - throw new IllegalArgumentException("File $name with path $path is of unknown Oxford Nanopore file type.") + } + }) + return parsedChildren + } + + /* + Determines the correct static create method for a data folder. + */ + + private static Method determineMethod(Class c) { + def method + try { + // named folder (i.e. Fast5Folder) + method = c.getDeclaredMethod("create", String.class, String.class, List.class) + } catch (NoSuchMethodException e) { + // typed folder (i.e. FastQPassFolder) + method = c.getDeclaredMethod("create", String.class, List.class) } + return method + } - /* - * Helper method that creates a DataFolder instance from a map + private static boolean isFile(Map parsedChild) { + //Unique key in fileTreeMap identifying a child as a file + final String file_key = "file_type" + return parsedChild.containsKey(file_key) + } + + private static boolean isFolder(Map parsedChild) { + //Unique key in fileTreeMap identifyng a child as a folder + final String folder_key = "children" + return parsedChild.containsKey(folder_key) + } + + private enum NanoporeFileTypes { + + DRIFT_CORRECTION_LOG(FQDN_FILES + ".DriftCorrectionLog"), + DUTY_TIME_LOG(FQDN_FILES + ".DutyTimeLog"), + FAST5_FILE(FQDN_FILES + ".Fast5File"), + FASTQ_FILE(FQDN_FILES + ".FastQFile"), + FASTQ_ZIPPED_FILE(FQDN_FILES + ".FastQZippedFile"), + FINAL_SUMMARY_LOG(FQDN_FILES + ".FinalSummaryLog"), + MUX_SCAN_DATA_LOG(FQDN_FILES + ".MuxScanDataLog"), + REPORT_MD_LOG(FQDN_FILES + ".ReportMdLog"), + REPORT_PDF_LOG(FQDN_FILES + ".ReportPDFLog"), + REPORT_HTML_LOG(FQDN_FILES + ".ReportHTMLLog"), + REPORT_JSON_LOG(FQDN_FILES + ".ReportJSONLog"), + SEQUENCING_SUMMARY_LOG(FQDN_FILES + ".SequencingSummaryLog"), + THROUGHPUT_LOG(FQDN_FILES + ".ThroughputLog"), + BARCODE_ALIGNMENT_LOG(FQDN_FILES + ".BarcodeAlignmentLog"), + PORE_ACTIVITY_LOG(FQDN_FILES + ".PoreActivityLog"), + SAMPLE_SHEET_LOG(FQDN_FILES + ".SampleSheetLog"), + PORE_SCAN_DATA_LOG(FQDN_FILES + ".PoreScanDataLog"), + SEQUENCING_TELEMETRY_LOG(FQDN_FILES + ".SequencingTelemetryLog"), + GUPPY_BASECALL_LOG(FQDN_FILES + ".GuppyBasecallLog") + + /** + Holds the String value of the enum */ + private final String value - private static DataFolder parseFolder(Map fileTree) throws IllegalArgumentException { - def name = fileTree.get("name") as String - def path = fileTree.get("path") as String - def children = parseChildren(fileTree.get("children") as List) - - for (String nanoPoreFolderType : nanoporeFolderTypes) { - Method method = determineMethod(Class.forName(nanoPoreFolderType)) - Optional folder = tryToCreateDataFolder(method, name, path, children) - if (folder.isPresent()) { - return folder.get() - } - } - // If we reach this point, no DataFolder could be created based on the known folder types - // in life.qbic.datamodel.datasets.datastructure.folders.nanopore.* - throw new IllegalArgumentException("Folder $name with path $path is of unknown Oxford Nanopore folder type.") + // Fully qualified domain name of the nanopore file structure package + private static final String FQDN_FILES = "life.qbic.datamodel.datasets.datastructure.files.nanopore" + + /** + * Private constructor to create different NanoporeFileTypes enum items + * @param value + */ + private NanoporeFileTypes(String value) { + this.value = value } - /* - * Helper method that tries to create a DataFolder instance - * based on the DataFolder's different static factory create methods. - * As we do not know, whether a folder element is another typed folder - * such as FastQPassFolder or a named folder such as Fast5Folder, we have to - * try and fail. + /** + * Returns to the enum item value + * @return */ + String getValue() { + return value + } - private static Optional tryToCreateDataFolder(Method method, - String name, - String relativePath, - List children) { - Optional folder = Optional.empty() - try { - // Try typed folder - def dataFolder = method.invoke(null, relativePath, children) as DataFolder - folder = Optional.of(dataFolder) - } catch (InvocationTargetException e) { - // Do nothing - } catch (IllegalArgumentException e) { - try { - // Try named folder - def dataFolder = method.invoke(null, name, relativePath, children) as DataFolder - folder = Optional.of(dataFolder) - } catch (InvocationTargetException e2) { - // Do nothing - } - } - return folder + /** + * Returns a String representation of the enum item + * @return + */ + @Override + String toString() { + return this.getValue() } + } + + private enum NanoporeFolderTypes { + + FAST5_FOLDER(FQDN_FOLDERS + ".Fast5Folder"), + FASTQ_FOLDER(FQDN_FOLDERS + ".FastQFolder"), + FAST5_PASS_FOLDER(FQDN_FOLDERS + ".Fast5PassFolder"), + FAST5_FAIL_FOLDER(FQDN_FOLDERS + ".Fast5FailFolder"), + FASTQ_PASS_FOLDER(FQDN_FOLDERS + ".FastQPassFolder"), + FASTQ_FAIL_FOLDER(FQDN_FOLDERS + ".FastQFailFolder"), + UNCLASSIFIED_FAST5_FOLDER(FQDN_FOLDERS + ".UnclassifiedFast5Folder"), + UNCLASSIFIED_FASTQ_FOLDER(FQDN_FOLDERS + ".UnclassifiedFastQFolder"), + OTHER_REPORTS_FOLDER(FQDN_FOLDERS + ".OtherReportsFolder"), + BASECALLING_FOLDER(FQDN_FOLDERS + ".BasecallingFolder"), + + // Fully qualified domain name of the nanopore folder structure package + private static final String FQDN_FOLDERS = "life.qbic.datamodel.datasets.datastructure.folders.nanopore" - /* - * Helper method that parses the children of a folder. + /** + Holds the String value of the enum */ + private final String value - private static List parseChildren(List children) { - def parsedChildren = [] - children.each { Map unknownChild -> - try { - def child = parseFile(unknownChild) - parsedChildren.add(child) - } catch (IllegalArgumentException e) { - // We do not capture the second parse call, as we want to fail the parsing at this point. - // This means that we ultimately found a child of unknown type, which should - // break the parsing. - def child = parseFolder(unknownChild) - parsedChildren.add(child) - } - } - return parsedChildren + /** + * Private constructor to create different NanoporeFolderTypes enum items + * @param value + */ + private NanoporeFolderTypes(String value) { + this.value = value } - /* - Determines the correct static create method for a data folder. + /** + * Returns to the enum item value + * @return */ + String getValue() { + return value + } - private static Method determineMethod(Class c) { - def method - try { - // named folder (i.e. Fast5Folder) - method = c.getDeclaredMethod("create", String.class, String.class, List.class) - } catch (NoSuchMethodException e) { - // typed folder (i.e. FastQPassFolder) - method = c.getDeclaredMethod("create", String.class, List.class) - } - return method + /** + * Returns a String representation of the enum item + * @return + */ + @Override + String toString() { + return this.getValue() } + } } diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/OptionalFile.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/OptionalFile.groovy new file mode 100644 index 0000000000..d27c31ca7d --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/OptionalFile.groovy @@ -0,0 +1,29 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * Unspecific OptionalFile used to store unexpected file in the nanopore registration + * + * The high variety of the nanopore datasets registered made an optional all-purpose Datafile structure necessary. + * + */ +class OptionalFile extends DataFile { + + protected OptionalFile() {} + + protected OptionalFile(String name, String relativePath, String fileType) { + super(name, relativePath, fileType) + } + + /** + * Creates a new instance of a OptionalFile object + * @param name The name of the file + * @param relativePath The relative path of the file + * @param fileType The suffix specifying the file type of the file + * @return A new instance of a OptionalFile object + */ + static OptionalFile create(String name, String relativePath, String fileType) { + return new OptionalFile(name, relativePath, fileType) + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/OptionalFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/OptionalFolder.groovy new file mode 100644 index 0000000000..8cd7eae73b --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/OptionalFolder.groovy @@ -0,0 +1,29 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * Unspecific Optional Folder used to store unexpected folders in the nanopore registration + * + * The high variety of the nanopore datasets registered made an optional all-purpose Datafolder structure necessary. + * + */ +class OptionalFolder extends DataFolder { + + protected OptionalFolder() {} + + protected OptionalFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + } + + /** + * Creates a new instance of a OptionalFolder object + * @param relativePath The relative path of the folder + * @param children A list with child elements of unknown type of the folder + * @return A new instance of a OptionalFolder object + */ + static OptionalFolder create(String name, String relativePath, List children) { + new OptionalFolder(name, relativePath, children) + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy new file mode 100644 index 0000000000..b752f033e0 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy @@ -0,0 +1,19 @@ +package life.qbic.datamodel.instruments + + +/** + * Represents the Nanopore instrument output data structure schema. + * + * The original schema is defined in as resource and is + * referenced here, wrapped in a Groovy class for reference + * in applications that want to validate the instrument + * output structure against the schema. + */ +class OxfordNanoporeInstrumentOutputMinimal { + + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_minimal_schema.json" + + static InputStream getSchemaAsStream() { + return OxfordNanoporeInstrumentOutputMinimal.getResourceAsStream(SCHEMA_PATH) + } +} diff --git a/src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json b/src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json new file mode 100644 index 0000000000..1f345cf04f --- /dev/null +++ b/src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json @@ -0,0 +1,484 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "http://qbic.life/nanopore-instrument-output_minimal.schema.json", + "title": "Nanopore Instrument Output minimal", + "description": "Describes in which form PromethION/MinION sequenced Nanopore data is received from the medical genetics lab. To be used if no other schema fits the description and ensure that the minimal necessary files are provided", + "definitions": { + "folder": { + "description": "Describes a folder", + "type": "object", + "required": [ + "name", + "path", + "children" + ], + "properties": { + "name": { + "description": "Folder name", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "relative folderpath", + "type": "string", + "minLength": 1 + }, + "children": { + "description": "Describes files and/or sub-folders if existent", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "$ref": "#/definitions/file" + } + ] + } + } + } + }, + "file": { + "description": "Describes a file", + "type": "object", + "required": [ + "name", + "path", + "file_type" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + }, + "file_type": { + "type": "string", + "minLength": 1 + } + } + }, + "qbic_code": { + "description": "Describes a QBiC code used as a prefix", + "type": "string", + "pattern": "Q\\w{4}\\d{3}[A-X][A-X0-9].*" + }, + "barcoded_folder": { + "description": "folder starting with qbic barcode prefix", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "$ref": "#/definitions/qbic_code" + } + } + } + ] + }, + "fast5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fast5" + } + } + } + ] + }, + "fastqgz_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq.gz" + } + } + } + ] + }, + "fastq_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq" + } + } + } + ] + }, + "unclassified_folder": { + "description": "folder containing unassigned read file(s)", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "unclassified" + } + } + } + ] + }, + "fast5_unclassified_folder": { + "description": "folder containing fast5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "fastq_unclassified_folder": { + "description": "folder containing fastq and/or fastq.gz data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastqgz_file" + }, + { + "$ref": "#/definitions/fastq_file" + } + ] + }, + "minItems": 0 + } + } + } + ] + }, + "fast5_subfolder": { + "description": "folder containing fast5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fastq_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_subfolder": { + "description": "folder containing gzipped fastq data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fastqgz_file" + }, + "minItems": 1 + } + } + } + ] + }, + "optional_folder": { + "description": "Folder not expected in the current schemas but not invalidating the minimal datastructure required", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": {} + } + ] + }, + "measurements": { + "description": "Top folder generated by the facility, containing one or more timestamped measurements", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/measurement" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "measurement": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "\\d{4}(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])_([01][0-9]|2[0-3])([0-5][0-9]).*", + "description": "Name of measurement subfolder. Starts with date and time of measurement e.g. 20200122_1217..." + }, + "children": { + "type": "array", + "minItems": 7, + "contains": { + "oneOf": [ + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/fast5_pass" + }, + { + "$ref": "#/definitions/fast5_fail" + }, + { + "$ref": "#/definitions/final_summary_log" + }, + { + "$ref": "#/definitions/report_md_log" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + } + ] + }, + "minContains": 7, + "uniqueItems": true + } + } + } + ] + }, + "final_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "final_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "report_md_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "md" + } + } + } + ] + }, + "sequencing_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "optional_file": { + "description": "File not expected in the current schemas but not invalidating the minimal datastructure required", + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": {} + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/measurements" + } + ] +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 391aa0b0c2..e848d9a050 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -41,6 +41,7 @@ class OxfordNanoporeExperimentSpec extends Specification { */ @Shared Map extendedDataStructureWithReportsFolderV4 + /** * Map that that stores the Oxford Nanopore folder structure * according to the schema containing unclassified read information @@ -52,7 +53,13 @@ class OxfordNanoporeExperimentSpec extends Specification { * according to the schema containing pooled samples read information */ @Shared - Map minimalWorkingPooledDataStructure + Map pooledDataStructure + + @Shared + Map minimalDataStructure + + @Shared + Map minimalDataStructurePooled def setupSpec() { def folder = "nanopore/" @@ -75,7 +82,13 @@ class OxfordNanoporeExperimentSpec extends Specification { unclassifiedWorkingDataStructure = (Map) new JsonSlurper().parse(stream) // read in pooled example stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-pooled.json") - minimalWorkingPooledDataStructure = (Map) new JsonSlurper().parse(stream) + pooledDataStructure = (Map) new JsonSlurper().parse(stream) + // read in minimal required example + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-minimal-structure.json") + minimalDataStructure = (Map) new JsonSlurper().parse(stream) + // read in minimal required pooled example + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-minimal-structure-pooled.json") + minimalDataStructurePooled = (Map) new JsonSlurper().parse(stream) stream.close() } @@ -149,9 +162,37 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].asicTemp == "32.631687" } + def "Create sample Oxford Nanopore experiment successfully for the minimal required structure"() { + given: + final def example = minimalDataStructure + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + } + + def "Create sample Oxford Nanopore experiment successfully for the minimal required pooled structure"() { + given: + final def example = minimalDataStructurePooled + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + } + def "Create a simple pooled Oxford Nanopore experiment successfully"() { given: - final def example = minimalWorkingPooledDataStructure + final def example = pooledDataStructure when: final def experiment = OxfordNanoporeExperiment.create(example) diff --git a/src/test/resources/nanopore/valid-minimal-structure-pooled.json b/src/test/resources/nanopore/valid-minimal-structure-pooled.json new file mode 100644 index 0000000000..976f4be218 --- /dev/null +++ b/src/test/resources/nanopore/valid-minimal-structure-pooled.json @@ -0,0 +1,344 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type": "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "additional_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/additional_file_.new", + "file_type": "new" + }, + { + "name": "not_relevant_file_.wow", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/not_relevant_file_.wow", + "file_type": "wow" + }, + { + "name": "unknown_folder", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder", + "children": [ + { + "name": "unknown_child_folder", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder", + "children": [ + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "QABCD001AB", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD001AB/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "QABCD002CD", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/QABCD002CD/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail", + "children": [ + { + "name": "QABCD001AB", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD001AB/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "QABCD002CD", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/QABCD002CD/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + } + ] + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail", + "children": [ + { + "name": "QABCD001AB", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB", + "children": [ + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile1.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD001AB/myfile1.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "QABCD002CD", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD", + "children": [ + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile1.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/QABCD002CD/myfile1.fast5", + "file_type": "fast5" + } + ] + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass", + "children": [ + { + "name": "QABCD001AB", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB", + "children": [ + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile1.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD001AB/myfile1.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "QABCD002CD", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD", + "children": [ + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile1.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/QABCD002CD/myfile1.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] + } + ] +} diff --git a/src/test/resources/nanopore/valid-minimal-structure.json b/src/test/resources/nanopore/valid-minimal-structure.json new file mode 100644 index 0000000000..04fb0135e5 --- /dev/null +++ b/src/test/resources/nanopore/valid-minimal-structure.json @@ -0,0 +1,196 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "Guppy", + "base_caller_version": "3.2.8+bd67289", + "device_type": "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "additional_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/additional_file_.new", + "file_type": "new" + }, + { + "name": "not_relevant_file_.wow", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/not_relevant_file_.wow", + "file_type": "wow" + }, + { + "name": "unknown_folder", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder", + "children": [ + { + "name": "unknown_child_folder", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder", + "children": [ + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fast5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_fail/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "fast5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_pass/myfile.fast5", + "file_type": "fast5" + } + ] + } + ] + } + ] +} From d0c579820b76b51c7e23a5bf8c91f97a9128a32a Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Mon, 13 Feb 2023 15:06:24 +0100 Subject: [PATCH 53/62] Set version to 2.24.1 (#349) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f2597261af..46361c9de6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.24.0 + 2.24.1 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 0775f0e7090c87cd9d85694ed3d26b63fdaaf59f Mon Sep 17 00:00:00 2001 From: Tobias Koch Date: Mon, 13 Feb 2023 15:26:19 +0100 Subject: [PATCH 54/62] Create PR master -> dev after release --- .github/workflows/create-release.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 4203baf0b8..ebae605662 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -90,3 +90,14 @@ jobs: head: 'release/set-version-to-${{ github.event.inputs.versionTag }}', base: 'master' }); + + - name: Open PR to development + uses: actions/github-script@v4.0.2 + with: + github-token: ${{secrets.JOHNNY_Q5_REPORTS_TOKEN}} + script: | + await github.request(`POST /repos/${{ github.repository }}/pulls`, { + title: 'Merge release ${{ github.event.inputs.versionTag }} into development', + head: 'master', + base: 'development' + }); From 1cab8f290384f73a6efdc5ebb91ec7a2b120342e Mon Sep 17 00:00:00 2001 From: JohnnyQ5 Date: Mon, 13 Feb 2023 14:34:37 +0000 Subject: [PATCH 55/62] Set version to 2.25.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 46361c9de6..ccf42f5322 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.24.1 + 2.25.0 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From a62bad550837d178516b8fb922334c86e9ac5dbe Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Fri, 17 Feb 2023 15:39:58 +0100 Subject: [PATCH 56/62] Streamline Nanopore models in Readme --- README.md | 7 ------- doc/figures/Nanopore_Data_Structure_Model.svg | 2 +- doc/figures/Nanopore_Data_Structure_Model_v2.svg | 4 ---- doc/figures/Nanopore_Data_Structure_Model_v4.svg | 4 ---- 4 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 doc/figures/Nanopore_Data_Structure_Model_v2.svg delete mode 100644 doc/figures/Nanopore_Data_Structure_Model_v4.svg diff --git a/README.md b/README.md index 752a60c58c..6248a65224 100644 --- a/README.md +++ b/README.md @@ -103,13 +103,6 @@ A Nanopore NGS measurement output is delivered to us as a nested folder structur ![Nanopore Data Structure Model](./doc/figures/Nanopore_Data_Structure_Model.svg) -A more recent model, which places two of the configuration files into a subfolder and adds the barcode alignment file, is also supported: - -![Nanopore Data Structure Model v2](./doc/figures/Nanopore_Data_Structure_Model_v2.svg) - -V4 outlines a model in which a second higher-accuracy basecalling was performed after the initial basecalling - -![Nanopore Data Structure Model v4](./doc/figures/Nanopore_Data_Structure_Model_v4.svg) #### Nanopore usage example diff --git a/doc/figures/Nanopore_Data_Structure_Model.svg b/doc/figures/Nanopore_Data_Structure_Model.svg index d3ffbbd6fd..b62c81d5ac 100644 --- a/doc/figures/Nanopore_Data_Structure_Model.svg +++ b/doc/figures/Nanopore_Data_Structure_Model.svg @@ -1,4 +1,4 @@ -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Text is not SVG - cannot display
    \ No newline at end of file +
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Final Summary Log
    Final Summary Log
    Report MD Log
    Report MD Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Optional File
    Optional File
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Other Reports
    Other Reports
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..1
    0..1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Duty Time Log
    Duty Time Log
    Throughput Log
    Throughput Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    1
    1
    0..1
    0..1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    FastQ File
    FastQ File
    Fast5 File
    Fast5 File
    DataFile
    DataFile
    Optional File
    Optional File
    Data File
    Data File
    Extends
    Extends
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    1
    1
    0..n
    0..n
    Extends
    Extends
    1
    1
    0..n
    0..n
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    Extends
    Extends
    0..n
    0..n
    1
    1
    0..n
    0..n
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/doc/figures/Nanopore_Data_Structure_Model_v2.svg b/doc/figures/Nanopore_Data_Structure_Model_v2.svg deleted file mode 100644 index 330e266c8b..0000000000 --- a/doc/figures/Nanopore_Data_Structure_Model_v2.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Barcode Alignment Log
    Barcode Alignment Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Sequencing Summary Log
    Sequencing Summary Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Drift Correction Log
    Drift Correction Log
    Extends
    Extends
    1:1
    1:1
    1:1
    1:1
    Other Reports Subfolder
    Other Reports Subfolder
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/doc/figures/Nanopore_Data_Structure_Model_v4.svg b/doc/figures/Nanopore_Data_Structure_Model_v4.svg deleted file mode 100644 index 4c1602816e..0000000000 --- a/doc/figures/Nanopore_Data_Structure_Model_v4.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file From 25650fa653efadc943ce606b026d013d2828670f Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Thu, 23 Feb 2023 09:16:26 +0100 Subject: [PATCH 57/62] Add metabolomics facility for products (#358) --- .../qbic/datamodel/dtos/business/facilities/Facility.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy index 1b192cae1d..6ef3f52075 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy @@ -25,7 +25,8 @@ enum Facility { QBIC("Quantitative Biology Center", "QBIC"), CFMB_PCT("Proteomics Facility Tübingen", "Proteomics Facility"), PCT("Proteome Center Tübingen", "PCT"), - CEGAT("CeGaT GmbH", "CeGaT GmbH") + CEGAT("CeGaT GmbH", "CeGaT GmbH"), + METABOLOMICS("Metabolomics Facility Tübingen", "Metabolomics Facility") private final String fullName private final String label From 92cce8fe7077dfb8745ef5cd5566f834d42b270e Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Thu, 4 May 2023 09:19:48 +0200 Subject: [PATCH 58/62] Set version to 2.25.1 (#359) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ccf42f5322..19fe418045 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.25.0 + 2.25.1 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. From 462831dd46c60b3faaeca0bd8b7bb1f44210a03b Mon Sep 17 00:00:00 2001 From: Johnny Q5 <50356506+JohnnyQ5@users.noreply.github.com> Date: Thu, 4 May 2023 09:20:39 +0200 Subject: [PATCH 59/62] Merge release 2.25.1 into development (#360) * Streamline Nanopore models in Readme * Add metabolomics facility for products (#358) * Set version to 2.25.1 (#359) --------- Co-authored-by: Steffengreiner Co-authored-by: Steffengreiner Co-authored-by: Sven F <9976560+sven1103@users.noreply.github.com> --- README.md | 7 ------- doc/figures/Nanopore_Data_Structure_Model.svg | 2 +- doc/figures/Nanopore_Data_Structure_Model_v2.svg | 4 ---- doc/figures/Nanopore_Data_Structure_Model_v4.svg | 4 ---- pom.xml | 2 +- .../datamodel/dtos/business/facilities/Facility.groovy | 3 ++- 6 files changed, 4 insertions(+), 18 deletions(-) delete mode 100644 doc/figures/Nanopore_Data_Structure_Model_v2.svg delete mode 100644 doc/figures/Nanopore_Data_Structure_Model_v4.svg diff --git a/README.md b/README.md index 752a60c58c..6248a65224 100644 --- a/README.md +++ b/README.md @@ -103,13 +103,6 @@ A Nanopore NGS measurement output is delivered to us as a nested folder structur ![Nanopore Data Structure Model](./doc/figures/Nanopore_Data_Structure_Model.svg) -A more recent model, which places two of the configuration files into a subfolder and adds the barcode alignment file, is also supported: - -![Nanopore Data Structure Model v2](./doc/figures/Nanopore_Data_Structure_Model_v2.svg) - -V4 outlines a model in which a second higher-accuracy basecalling was performed after the initial basecalling - -![Nanopore Data Structure Model v4](./doc/figures/Nanopore_Data_Structure_Model_v4.svg) #### Nanopore usage example diff --git a/doc/figures/Nanopore_Data_Structure_Model.svg b/doc/figures/Nanopore_Data_Structure_Model.svg index d3ffbbd6fd..b62c81d5ac 100644 --- a/doc/figures/Nanopore_Data_Structure_Model.svg +++ b/doc/figures/Nanopore_Data_Structure_Model.svg @@ -1,4 +1,4 @@ -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Text is not SVG - cannot display
    \ No newline at end of file +
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Final Summary Log
    Final Summary Log
    Report MD Log
    Report MD Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Optional File
    Optional File
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Other Reports
    Other Reports
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..1
    0..1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Duty Time Log
    Duty Time Log
    Throughput Log
    Throughput Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    1
    1
    0..1
    0..1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    FastQ File
    FastQ File
    Fast5 File
    Fast5 File
    DataFile
    DataFile
    Optional File
    Optional File
    Data File
    Data File
    Extends
    Extends
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    1
    1
    0..n
    0..n
    Extends
    Extends
    1
    1
    0..n
    0..n
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    Extends
    Extends
    0..n
    0..n
    1
    1
    0..n
    0..n
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/doc/figures/Nanopore_Data_Structure_Model_v2.svg b/doc/figures/Nanopore_Data_Structure_Model_v2.svg deleted file mode 100644 index 330e266c8b..0000000000 --- a/doc/figures/Nanopore_Data_Structure_Model_v2.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Barcode Alignment Log
    Barcode Alignment Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Sequencing Summary Log
    Sequencing Summary Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Drift Correction Log
    Drift Correction Log
    Extends
    Extends
    1:1
    1:1
    1:1
    1:1
    Other Reports Subfolder
    Other Reports Subfolder
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/doc/figures/Nanopore_Data_Structure_Model_v4.svg b/doc/figures/Nanopore_Data_Structure_Model_v4.svg deleted file mode 100644 index 4c1602816e..0000000000 --- a/doc/figures/Nanopore_Data_Structure_Model_v4.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Duty Time Log
    Duty Time Log
    Final Summary Log
    Final Summary Log
    Throughput Log
    Throughput Log
    Report MD Log
    Report MD Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    0..n
    0..n
    DataFile
    DataFile
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/pom.xml b/pom.xml index ccf42f5322..19fe418045 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ life.qbic data-model-lib - 2.25.0 + 2.25.1 data-model-lib http://github.com/qbicsoftware/data-model-lib Data models. A collection of QBiC's central data models and DTOs. diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy index 1b192cae1d..6ef3f52075 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy @@ -25,7 +25,8 @@ enum Facility { QBIC("Quantitative Biology Center", "QBIC"), CFMB_PCT("Proteomics Facility Tübingen", "Proteomics Facility"), PCT("Proteome Center Tübingen", "PCT"), - CEGAT("CeGaT GmbH", "CeGaT GmbH") + CEGAT("CeGaT GmbH", "CeGaT GmbH"), + METABOLOMICS("Metabolomics Facility Tübingen", "Metabolomics Facility") private final String fullName private final String label From 2eb1491b11b320ebe4c2d2b65c7b00f5148d1582 Mon Sep 17 00:00:00 2001 From: Sven F <9976560+sven1103@users.noreply.github.com> Date: Thu, 4 May 2023 12:40:45 +0200 Subject: [PATCH 60/62] Add two more MX facilities (#361) --- .../qbic/datamodel/dtos/business/facilities/Facility.groovy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy index 6ef3f52075..cf092be9cb 100644 --- a/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy +++ b/src/main/groovy/life/qbic/datamodel/dtos/business/facilities/Facility.groovy @@ -26,7 +26,9 @@ enum Facility { CFMB_PCT("Proteomics Facility Tübingen", "Proteomics Facility"), PCT("Proteome Center Tübingen", "PCT"), CEGAT("CeGaT GmbH", "CeGaT GmbH"), - METABOLOMICS("Metabolomics Facility Tübingen", "Metabolomics Facility") + METABOLOMICS("Metabolomics Facility Tübingen", "Metabolomics Facility"), + METABOLOMICS_BACTERIAL("Bacterial Metabolomics", "Bacterial Metabolomics"), + METABOLOMICS_FUNCTIONAL("Functional Metabolomics", "Functional Metabolomics") private final String fullName private final String label From affe71024161ac6132b885aa3f677926d40267c0 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Fri, 3 Nov 2023 15:53:24 +0100 Subject: [PATCH 61/62] Add support for pod5 files generated via dorado basecaller (#368) * Add support for pod5 files generated via dorado basecaller * remove unnecessary newline to trigger PR checks again * Add support for full dorado basecaller based structure * Update JD according to Code Review --- README.md | 2 +- doc/figures/Nanopore_Data_Structure_Model.png | Bin 0 -> 1066682 bytes doc/figures/Nanopore_Data_Structure_Model.svg | 4 - .../datasets/OxfordNanoporeExperiment.groovy | 5 + .../datasets/OxfordNanoporeMeasurement.groovy | 79 ++- .../files/nanopore/Pod5File.groovy | 30 + .../folders/nanopore/Fast5SkipFolder.groovy | 38 + .../folders/nanopore/Pod5FailFolder.groovy | 39 ++ .../folders/nanopore/Pod5PassFolder.groovy | 39 ++ .../folders/nanopore/Pod5SkipFolder.groovy | 38 + ...noporeInstrumentOutputDoradoMinimal.groovy | 19 + ...fordNanoporeInstrumentOutputMinimal.groovy | 2 +- ...ore-instrument-output_minimal.schema.json} | 0 ...strument-output_minimal_dorado.schema.json | 661 ++++++++++++++++++ .../OxfordNanoporeExperimentSpec.groovy | 53 +- .../OxfordNanoporeMeasurementSpec.groovy | 22 + .../valid-example-dorado-basecaller.json | 269 +++++++ ...d-minimal-structure-dorado-basecaller.json | 207 ++++++ 18 files changed, 1480 insertions(+), 27 deletions(-) create mode 100644 doc/figures/Nanopore_Data_Structure_Model.png delete mode 100644 doc/figures/Nanopore_Data_Structure_Model.svg create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/Pod5File.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Fast5SkipFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5FailFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5PassFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5SkipFolder.groovy create mode 100644 src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputDoradoMinimal.groovy rename src/main/resources/schemas/{nanopore-instrument-output_minimal_schema.json => nanopore-instrument-output_minimal.schema.json} (100%) create mode 100644 src/main/resources/schemas/nanopore-instrument-output_minimal_dorado.schema.json create mode 100644 src/test/resources/nanopore/valid-example-dorado-basecaller.json create mode 100644 src/test/resources/nanopore/valid-minimal-structure-dorado-basecaller.json diff --git a/README.md b/README.md index 6248a65224..db8b29084a 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ Make sure, that you have defined the Github package Maven repository, in order f A Nanopore NGS measurement output is delivered to us as a nested folder structure, following this model: -![Nanopore Data Structure Model](./doc/figures/Nanopore_Data_Structure_Model.svg) +![Nanopore Data Structure Model](./doc/figures/Nanopore_Data_Structure_Model.png) #### Nanopore usage example diff --git a/doc/figures/Nanopore_Data_Structure_Model.png b/doc/figures/Nanopore_Data_Structure_Model.png new file mode 100644 index 0000000000000000000000000000000000000000..d13f4297dc1b700b74ffbe00a1cfbdf9134fea44 GIT binary patch literal 1066682 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

    WZSmV; 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 z�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%0A0;dfp<{Af&1k`Lpac?%zMec+tD^AwnXn;Ew2k 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 - - -
    Root Folder
    (OxfordNanoporeExperiment)
    Root Folder...
    Measurement Folder
    (OxfordNanoporeMeasurement)
    Measurement Folder...
    1
    1
    1..n
    1..n
    FastQ Fail Folder
    FastQ Fail Folder
    FastQ Pass Folder
    FastQ Pass Folder
    Fast5 Pass Folder
    Fast5 Pass Folder
    Fast5 Fail Folder
    Fast5 Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    Sequencing Summary Log
    Sequencing Summary Log
    Final Summary Log
    Final Summary Log
    Report MD Log
    Report MD Log
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    BarcodedFolder
    BarcodedFolder
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    FastQ Folder
    FastQ Folder
    FastQ File
    FastQ File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    Fast5 Folder
    Fast5 Folder
    Fast5 File
    Fast5 File
    Unclassified Folder
    Unclassified Folder
    1
    1
    0..n
    0..n
    Fast5 File
    Fast5 File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Optional File
    Optional File
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Other Reports
    Other Reports
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..1
    0..1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    Duty Time Log
    Duty Time Log
    Throughput Log
    Throughput Log
    Report PDF Log
    Report PDF Log
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    Sequencing Summary Log
    Sequencing Summary Log
    Sequencing Telemetry Log
    Sequencing Telemetry Log
    Guppy Basecalling
    Client Log
    Guppy Basecalling...
    Fastq Fail Folder
    Fastq Fail Folder
    1
    1
    1
    1
    1
    1
    1
    1
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Fastq Pass Folder
    Fastq Pass Folder
    FastQ Folder
    FastQ Folder
    Unclassified Folder
    Unclassified Folder
    FastQ File
    FastQ File
    FastQ File
    FastQ File
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    0..n
    0..n
    1
    1
    0..n
    0..n
    Basecalling
    Basecalling
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    1
    1
    0..1
    0..1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    DataFolder
    DataFolder
    Extends
    Extends
    DataFolder
    DataFolder
    Extends
    Extends
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    1
    1
    0..n
    0..n
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    Data File
    Data File
    Extends
    Extends
    FastQ Folder
    FastQ Folder
    Fast5 Folder
    Fast5 Folder
    DataFolder
    DataFolder
    FastQ File
    FastQ File
    Fast5 File
    Fast5 File
    DataFile
    DataFile
    Optional File
    Optional File
    Data File
    Data File
    Extends
    Extends
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    1
    1
    0..n
    0..n
    Extends
    Extends
    1
    1
    0..n
    0..n
    Optional Folder
    Optional Folder
    DataFolder
    DataFolder
    Extends
    Extends
    0..n
    0..n
    1
    1
    0..n
    0..n
    Drift Correction Log
    Drift Correction Log
    Mux Scan Data Log
    Mux Scan Data Log
    1
    1
    1
    1
    1
    1
    1
    1
    Text is not SVG - cannot display
    \ No newline at end of file diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy index 138c5292f9..a8179982b1 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeExperiment.groovy @@ -244,6 +244,7 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FAST5_FILE(FQDN_FILES + ".Fast5File"), FASTQ_FILE(FQDN_FILES + ".FastQFile"), FASTQ_ZIPPED_FILE(FQDN_FILES + ".FastQZippedFile"), + POD5_FILE(FQDN_FILES + ".Pod5File"), FINAL_SUMMARY_LOG(FQDN_FILES + ".FinalSummaryLog"), MUX_SCAN_DATA_LOG(FQDN_FILES + ".MuxScanDataLog"), REPORT_MD_LOG(FQDN_FILES + ".ReportMdLog"), @@ -299,10 +300,14 @@ final class OxfordNanoporeExperiment implements ExperimentFolder { FASTQ_FOLDER(FQDN_FOLDERS + ".FastQFolder"), FAST5_PASS_FOLDER(FQDN_FOLDERS + ".Fast5PassFolder"), FAST5_FAIL_FOLDER(FQDN_FOLDERS + ".Fast5FailFolder"), + FAST5_SKIP_FOLDER(FQDN_FOLDERS + ".Fast5SkipFolder"), FASTQ_PASS_FOLDER(FQDN_FOLDERS + ".FastQPassFolder"), FASTQ_FAIL_FOLDER(FQDN_FOLDERS + ".FastQFailFolder"), UNCLASSIFIED_FAST5_FOLDER(FQDN_FOLDERS + ".UnclassifiedFast5Folder"), UNCLASSIFIED_FASTQ_FOLDER(FQDN_FOLDERS + ".UnclassifiedFastQFolder"), + POD5_PASS_FOLDER(FQDN_FOLDERS + ".Pod5PassFolder"), + POD5_FAIL_FOLDER(FQDN_FOLDERS + ".Pod5FailFolder"), + POD5_SKIP_FOLDER(FQDN_FOLDERS + ".Pod5SkipFolder"), OTHER_REPORTS_FOLDER(FQDN_FOLDERS + ".OtherReportsFolder"), BASECALLING_FOLDER(FQDN_FOLDERS + ".BasecallingFolder"), diff --git a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy index 131c1c401c..4630752485 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy @@ -57,13 +57,13 @@ final class OxfordNanoporeMeasurement { this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5pass"]) // There can be still pooled samples in the failed folder, worst case is all // samples failed, so we need to check there too - if (! pooledSamplesMeasurement) { + if (!pooledSamplesMeasurement) { this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5fail"]) } } private void assessBasecallingStatus() { - this.hasBasecallingData = folders["basecalling"]; + this.hasBasecallingData = folders["basecalling"] } private static boolean containsAtLeastOneBarcodedFolder(DataFolder folder) { @@ -84,12 +84,24 @@ final class OxfordNanoporeMeasurement { case Fast5FailFolder: folders["fast5fail"] = element as Fast5FailFolder break + case Fast5SkipFolder: + folders["fast5skip"] = element as Fast5SkipFolder + break case FastQPassFolder: folders["fastqpass"] = element as FastQPassFolder break case FastQFailFolder: folders["fastqfail"] = element as FastQFailFolder break + case Pod5PassFolder: + folders["pod5pass"] = element as Pod5PassFolder + break + case Pod5FailFolder: + folders["pod5fail"] = element as Pod5FailFolder + break + case Pod5SkipFolder: + folders["pod5skip"] = element as Pod5SkipFolder + break case DataFile: logFilesCollection.add(element as DataFile) break @@ -101,24 +113,38 @@ final class OxfordNanoporeMeasurement { } private void assessState() throws IllegalStateException { - // Condition one: Don't allow Fast5 pass and fail folder are empty - assessFast5Content() - // Condition two: Don't allow Fastq pass and fail folder are empty - assessFastQContent() + boolean isValid = false + // We need to ensure that fastq and fast5 information is provided if guppy basecaller was used + if (areFast5FoldersInMeasurement() && areFastQFoldersInMeasurement()) { + isValid = true + } + //// We need to ensure that pod5_skip and fast5_skip information is provided if dorado basecaller was used + if (arePod5FoldersInMeasurement()) { + isValid = true + } + if (isValid == false) { + throw new IllegalStateException("No valid data is contained in measurement") + } } - private void assessFast5Content() throws IllegalStateException { - if (folders["fast5pass"].getChildren().isEmpty() && folders["fast5fail"].getChildren() - .isEmpty()) { - throw new IllegalStateException("The fast5 pass folder and fail folder are empty.") - } + // Condition one: Don't allow empty Fast5 pass and fail folder + private boolean areFast5FoldersInMeasurement() { + return isDataFolderInMeasurement("fast5pass") || isDataFolderInMeasurement("fast5fail") + } + // Condition two: Don't allow empty Fastq pass and fail folder + private boolean areFastQFoldersInMeasurement() { + return isDataFolderInMeasurement("fastqpass") || isDataFolderInMeasurement("fastqfail") + } + // Condition three: Don't allow empty Pod5 skip and fast5 skip folder + private boolean arePod5FoldersInMeasurement() { + return isDataFolderInMeasurement("fast5skip") || isDataFolderInMeasurement("pod5skip") } - private void assessFastQContent() throws IllegalStateException { - if (folders["fastqpass"].getChildren().isEmpty() && folders["fastqfail"].getChildren() - .isEmpty()) { - throw new IllegalStateException("The fastq pass folder and fail folder are empty.") + private boolean isDataFolderInMeasurement(String string) { + if (folders[string] == null) { + return false } + return !folders[string].getChildren().isEmpty() } /** @@ -284,12 +310,25 @@ final class OxfordNanoporeMeasurement { private Map> prepareRawData(String sampleId) { final def result = new HashMap() final def dataFolders = [ - "fast5fail": (folders.get("fast5fail") as DataFolder), - "fast5pass": (folders.get("fast5pass") as DataFolder), - "fastqpass": (folders.get("fastqpass") as DataFolder), - "fastqfail": (folders.get("fastqfail") as DataFolder) + "fast5fail" : (folders.get("fast5fail") as DataFolder), + "fast5pass" : (folders.get("fast5pass") as DataFolder), + "fastqpass" : (folders.get("fastqpass") as DataFolder), + "fastqfail" : (folders.get("fastqfail") as DataFolder) ] - if(hasBasecallingData) dataFolders.put("basecalling", (folders.get("basecalling") as DataFolder)) + if (hasBasecallingData) dataFolders.put("basecalling", (folders.get("basecalling") as DataFolder)) + //Only add dorado based minimal required datafolders if present + if (folders.get("fast5skip") != null) { + dataFolders.put("fast5skip", (folders.get("fast5skip") as DataFolder)) + } + if (folders.get("pod5skip") != null) { + dataFolders.put("pod5skip", (folders.get("pod5skip") as DataFolder)) + } + if (folders.get("pod5fail") != null) { + dataFolders.put("pod5fail", (folders.get("pod5fail") as DataFolder)) + } + if (folders.get("pod5pass") != null) { + dataFolders.put("pod5pass", (folders.get("pod5pass") as DataFolder)) + } result.put(sampleId, dataFolders) return result } diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/Pod5File.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/Pod5File.groovy new file mode 100644 index 0000000000..24b4993808 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/files/nanopore/Pod5File.groovy @@ -0,0 +1,30 @@ +package life.qbic.datamodel.datasets.datastructure.files.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.DataFile + +/** + * A specialisation of a DataFile, represents an Oxford Nanopore pod5 file + * + */ +class Pod5File extends DataFile { + + final private static String FILE_TYPE = "pod5" + + final private static String NAME_SCHEMA = /.*\.pod5$/ + + protected Pod5File(String name, String relativePath) { + super(name, relativePath, FILE_TYPE) + validateName() + } + + static Pod5File create(String name, String relativePath) { + return new Pod5File(name, relativePath) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore summary schema!") + } + } + +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Fast5SkipFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Fast5SkipFolder.groovy new file mode 100644 index 0000000000..9fe46e9cfb --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Fast5SkipFolder.groovy @@ -0,0 +1,38 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.nanopore.Fast5File +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * A special case of a DataFolder, its name is always fast5_skip. + * + * Its children field contains a list of type List + * + */ +class Fast5SkipFolder extends DataFolder { + + final private static String NAME_SCHEMA = /fast5_skip/ + + protected Fast5SkipFolder() {} + + protected Fast5SkipFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + validateName() + } + + /** + * Creates a new instance of a Fast5SkipFolder object + * @param relativePath The relative path of the folder + * @param children A list with child elements of the folder + * @return A new instance of a Fast5SkipFolder object + */ + static Fast5SkipFolder create(String name, String relativePath, List children) { + return new Fast5SkipFolder(name, relativePath, children) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore Fast5Skip directory schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5FailFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5FailFolder.groovy new file mode 100644 index 0000000000..b1cbdc9341 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5FailFolder.groovy @@ -0,0 +1,39 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * A special case of a DataFolder, its name is always pod5_fail. + * + * Its children field contains either a list of type List or List + * + */ +class Pod5FailFolder extends DataFolder { + + final private static String NAME_SCHEMA = /pod5_fail/ + + protected Pod5FailFolder() {} + + protected Pod5FailFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + validateName() + } + + /** + * Creates a new instance of a Pod5FailFolder object + * + * @param name The folder name + * @param relativePath The relative path of the folder + * @param children A list with child elements of the folder + * @return A new instance of a Pod5FailFolder object + */ + static Pod5FailFolder create(String name, String relativePath, List children) { + new Pod5FailFolder(name, relativePath, children) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore Pod5Fail directory schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5PassFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5PassFolder.groovy new file mode 100644 index 0000000000..5de6adedfb --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5PassFolder.groovy @@ -0,0 +1,39 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * A special case of a DataFolder, its name is always pod5_pass. + * + * Its children field contains either a list of type List or List + * + */ +class Pod5PassFolder extends DataFolder { + + final private static String NAME_SCHEMA = /pod5_pass/ + + protected Pod5PassFolder() {} + + protected Pod5PassFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + validateName() + } + + /** + * Creates a new instance of a Pod5PassFolder object + * + * @param name The folder name + * @param relativePath The relative path of the folder + * @param children A list with child elements of the folder + * @return A new instance of a Pod5PassFolder object + */ + static Pod5PassFolder create(String name, String relativePath, List children) { + new Pod5PassFolder(name, relativePath, children) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore Pod5Pass directory schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5SkipFolder.groovy b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5SkipFolder.groovy new file mode 100644 index 0000000000..fdd66ad0e3 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/datasets/datastructure/folders/nanopore/Pod5SkipFolder.groovy @@ -0,0 +1,38 @@ +package life.qbic.datamodel.datasets.datastructure.folders.nanopore + +import life.qbic.datamodel.datasets.datastructure.files.nanopore.Pod5File +import life.qbic.datamodel.datasets.datastructure.folders.DataFolder + +/** + * A special case of a DataFolder, its name is always pod5_skip. + * + * Its children field contains a list of type List + * + */ +class Pod5SkipFolder extends DataFolder { + + final private static String NAME_SCHEMA = /pod5_skip/ + + protected Pod5SkipFolder() {} + + protected Pod5SkipFolder(String name, String relativePath, List children) { + super(name, relativePath, children) + validateName() + } + + /** + * Creates a new instance of a Pod5SkipFolder object + * @param relativePath The relative path of the folder + * @param children A list with child elements of the folder + * @return A new instance of a Pod5SkipFolder object + */ + static Pod5SkipFolder create(String name, String relativePath, List children) { + return new Pod5SkipFolder(name, relativePath, children) + } + + private void validateName() { + if (!(this.name =~ NAME_SCHEMA)) { + throw new IllegalArgumentException("Name must match the Nanopore Pod5Skip directory schema!") + } + } +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputDoradoMinimal.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputDoradoMinimal.groovy new file mode 100644 index 0000000000..fcee2f0e86 --- /dev/null +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputDoradoMinimal.groovy @@ -0,0 +1,19 @@ +package life.qbic.datamodel.instruments + + +/** + * Represents the Nanopore instrument output data structure schema generated by employing the dorado basecaller with Pod5Files. + * + * The original schema is defined in as resource and is + * referenced here, wrapped in a Groovy class for reference + * in applications that want to validate the instrument + * output structure against the schema. + */ +class OxfordNanoporeInstrumentOutputDoradoMinimal { + + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_minimal_dorado.schema.json" + + static InputStream getSchemaAsStream() { + return OxfordNanoporeInstrumentOutputDoradoMinimal.getResourceAsStream(SCHEMA_PATH) + } +} diff --git a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy index b752f033e0..6420b7c307 100644 --- a/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy +++ b/src/main/groovy/life/qbic/datamodel/instruments/OxfordNanoporeInstrumentOutputMinimal.groovy @@ -11,7 +11,7 @@ package life.qbic.datamodel.instruments */ class OxfordNanoporeInstrumentOutputMinimal { - private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_minimal_schema.json" + private static final String SCHEMA_PATH = "/schemas/nanopore-instrument-output_minimal.schema.json" static InputStream getSchemaAsStream() { return OxfordNanoporeInstrumentOutputMinimal.getResourceAsStream(SCHEMA_PATH) diff --git a/src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json b/src/main/resources/schemas/nanopore-instrument-output_minimal.schema.json similarity index 100% rename from src/main/resources/schemas/nanopore-instrument-output_minimal_schema.json rename to src/main/resources/schemas/nanopore-instrument-output_minimal.schema.json diff --git a/src/main/resources/schemas/nanopore-instrument-output_minimal_dorado.schema.json b/src/main/resources/schemas/nanopore-instrument-output_minimal_dorado.schema.json new file mode 100644 index 0000000000..35fc42fce7 --- /dev/null +++ b/src/main/resources/schemas/nanopore-instrument-output_minimal_dorado.schema.json @@ -0,0 +1,661 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "http://qbic.life/nanopore-instrument-output_minimal_dorado.schema.json", + "title": "Nanopore Instrument Output dorado basecalled minimal", + "description": "Describes in which form PromethION/MinION sequenced Nanopore data is received from the medical genetics lab. To be used if no other schema fits the description and ensure that the minimal necessary files are provided if the dorado basecaller was employed", + "definitions": { + "folder": { + "description": "Describes a folder", + "type": "object", + "required": [ + "name", + "path", + "children" + ], + "properties": { + "name": { + "description": "Folder name", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "relative folderpath", + "type": "string", + "minLength": 1 + }, + "children": { + "description": "Describes files and/or sub-folders if existent", + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "$ref": "#/definitions/file" + } + ] + } + } + } + }, + "file": { + "description": "Describes a file", + "type": "object", + "required": [ + "name", + "path", + "file_type" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "path": { + "type": "string", + "minLength": 1 + }, + "file_type": { + "type": "string", + "minLength": 1 + } + } + }, + "qbic_code": { + "description": "Describes a QBiC code used as a prefix", + "type": "string", + "pattern": "Q\\w{4}\\d{3}[A-X][A-X0-9].*" + }, + "barcoded_folder": { + "description": "folder starting with qbic barcode prefix", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "$ref": "#/definitions/qbic_code" + } + } + } + ] + }, + "fast5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fast5" + } + } + } + ] + }, + "pod5_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "pod5" + } + } + } + ] + }, + "fastqgz_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq.gz" + } + } + } + ] + }, + "fastq_file": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "file_type": { + "pattern": "fastq" + } + } + } + ] + }, + "unclassified_folder": { + "description": "folder containing unassigned read file(s)", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "unclassified" + } + } + } + ] + }, + "fast5_unclassified_folder": { + "description": "folder containing fast5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "pod5_unclassified_folder": { + "description": "folder containing pod5 data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/pod5_file" + }, + "minItems": 0 + } + } + } + ] + }, + "fastq_unclassified_folder": { + "description": "folder containing fastq and/or fastq.gz data from a pooling experiment, that could not be assigned to one of the known samples", + "allOf": [ + { + "$ref": "#/definitions/unclassified_folder" + }, + { + "properties": { + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastqgz_file" + }, + { + "$ref": "#/definitions/fastq_file" + } + ] + }, + "minItems": 0 + } + } + } + ] + }, + "fast5_subfolder": { + "description": "folder containing fast5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fast5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "pod5_subfolder": { + "description": "folder containing pod5 data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/pod5_file" + }, + "minItems": 1 + } + } + } + ] + }, + "fast5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_subfolder" + }, + { + "$ref": "#/definitions/fast5_unclassified_folder" + }, + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "fast5_skip": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fast5_skip" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fast5_file" + } + ] + } + } + } + } + ] + }, + "pod5_skip": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "pod5_skip" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/pod5_file" + } + ] + } + } + } + } + ] + }, + "pod5_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "pod5_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/pod5_subfolder" + }, + { + "$ref": "#/definitions/pod5_unclassified_folder" + }, + { + "$ref": "#/definitions/pod5_file" + } + ] + } + } + } + } + ] + }, + "pod5_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "pod5_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/pod5_subfolder" + }, + { + "$ref": "#/definitions/pod5_unclassified_folder" + }, + { + "$ref": "#/definitions/pod5_file" + } + ] + } + } + } + } + ] + }, + "fastq_fail": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_fail" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "basecalling": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "basecalling" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_fail" + }, + { + "$ref": "#/definitions/fastq_pass" + }, + { + "$ref": "#/definitions/optional_file" + } + ] + } + } + } + } + ] + }, + "fastq_pass": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "fastq_pass" + }, + "children": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/fastq_subfolder" + }, + { + "$ref": "#/definitions/fastq_unclassified_folder" + }, + { + "$ref": "#/definitions/fastqgz_file" + } + ] + } + } + } + } + ] + }, + "fastq_subfolder": { + "description": "folder containing gzipped fastq data from a single sample (only when pooling is used)", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "$ref": "#/definitions/fastqgz_file" + }, + "minItems": 1 + } + } + } + ] + }, + "optional_folder": { + "description": "Folder not expected in the current schemas but not invalidating the minimal datastructure required", + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": {} + } + ] + }, + "measurements": { + "description": "Top folder generated by the facility, containing one or more timestamped measurements", + "allOf": [ + { + "$ref": "#/definitions/barcoded_folder" + }, + { + "properties": { + "children": { + "items": { + "allOf": [ + { + "$ref": "#/definitions/measurement" + } + ] + }, + "minItems": 1 + } + } + } + ] + }, + "measurement": { + "allOf": [ + { + "$ref": "#/definitions/folder" + }, + { + "properties": { + "name": { + "pattern": "\\d{4}(0?[1-9]|1[012])(0?[1-9]|[12][0-9]|3[01])_([01][0-9]|2[0-3])([0-5][0-9]).*", + "description": "Name of measurement subfolder. Starts with date and time of measurement e.g. 20200122_1217..." + }, + "children": { + "type": "array", + "minItems": 6, + "contains": { + "oneOf": [ + { + "$ref": "#/definitions/fast5_skip" + }, + { + "$ref": "#/definitions/pod5_skip" + }, + { + "$ref": "#/definitions/final_summary_log" + }, + { + "$ref": "#/definitions/report_md_log" + }, + { + "$ref": "#/definitions/sequencing_summary_log" + } + ] + }, + "minContains": 5, + "uniqueItems": true + } + } + } + ] + }, + "final_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "final_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "report_md_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "report_.*" + }, + "file_type": { + "pattern": "md" + } + } + } + ] + }, + "sequencing_summary_log": { + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": { + "name": { + "pattern": "sequencing_summary_.*" + }, + "file_type": { + "pattern": "txt" + } + } + } + ] + }, + "optional_file": { + "description": "File not expected in the current schemas but not invalidating the minimal datastructure required", + "allOf": [ + { + "$ref": "#/definitions/file" + }, + { + "properties": {} + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/measurements" + } + ] +} diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy index 3b94c87a0b..fc051ce6b0 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy @@ -61,6 +61,12 @@ class OxfordNanoporeExperimentSpec extends Specification { @Shared Map minimalDataStructurePooled + @Shared + Map minimalDoradoDataStructure + + @Shared + Map fullDoradoDataStructure + def setupSpec() { def folder = "nanopore/" InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example.json") @@ -89,6 +95,13 @@ class OxfordNanoporeExperimentSpec extends Specification { // read in minimal required pooled example stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-minimal-structure-pooled.json") minimalDataStructurePooled = (Map) new JsonSlurper().parse(stream) + // read in minimal required example with dorado based basecalling + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-minimal-structure-dorado-basecaller.json") + minimalDoradoDataStructure = (Map) new JsonSlurper().parse(stream) + stream.close() + // read in minimal required example with dorado based basecalling + stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(folder+"valid-example-dorado-basecaller.json") + fullDoradoDataStructure = (Map) new JsonSlurper().parse(stream) stream.close() } @@ -179,6 +192,8 @@ class OxfordNanoporeExperimentSpec extends Specification { assert experiment.sampleCode == "QABCD001AB" assert measurements.size() == 1 assert measurements[0].asicTemp == "32.631687" + assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("pod5_skip") + assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fast5_skip") } def "Create sample Oxford Nanopore experiment successfully for the minimal required pooled structure"() { @@ -195,6 +210,42 @@ class OxfordNanoporeExperimentSpec extends Specification { assert measurements[0].asicTemp == "32.631687" } + def "Create sample Oxford Nanopore experiment successfully for dorado basecaller generated minimal structure"() { + given: + final def example = minimalDoradoDataStructure + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("pod5skip") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fast5skip") + } + + def "Create sample Oxford Nanopore experiment successfully for dorado basecaller generated full structure"() { + given: + final def example = fullDoradoDataStructure + + when: + final def experiment = OxfordNanoporeExperiment.create(example) + final def measurements = experiment.getMeasurements() + + then: + assert experiment.sampleCode == "QABCD001AB" + assert measurements.size() == 1 + assert measurements[0].asicTemp == "32.631687" + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("pod5skip") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fast5skip") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fast5pass") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fast5fail") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("pod5pass") + assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("pod5fail") + } + def "Create a simple pooled Oxford Nanopore experiment successfully"() { given: final def example = pooledDataStructure @@ -213,7 +264,7 @@ class OxfordNanoporeExperimentSpec extends Specification { } - def "Create unclassified example Oxford Nanopore experiment sucessfully"() { + def "Create unclassified example Oxford Nanopore experiment successfully"() { given: final def example = unclassifiedWorkingDataStructure diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy index ec875a22e9..dfc8277579 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy @@ -37,6 +37,11 @@ class OxfordNanoporeMeasurementSpec extends Specification { UnclassifiedFast5Folder unclassifiedFast5Folder @Shared UnclassifiedFastQFolder unclassifiedFastQFolder + @Shared + Pod5SkipFolder pod5SkipFolder + @Shared + Fast5SkipFolder fast5SkipFolder + @Shared Map metaData @@ -230,6 +235,23 @@ class OxfordNanoporeMeasurementSpec extends Specification { } + def "If both pod5 skip and fast5 skip folder are empty, an IllegalStateException shall be thrown"() { + given: + def emptyPod5SkipFolder = Pod5SkipFolder.create("pod5_skip","root/pod5_skip", []) + def emptyFast5SkipFolder = Fast5SkipFolder.create("fast5_skip","root/fast5_skip", []) + + when: + OxfordNanoporeMeasurement.create( + "20200219_1107_1-E3-H3_PAE26974_454b8dc6", + "path/20200219_1107_1-E3-H3_PAE26974_454b8dc6", + [emptyPod5SkipFolder, emptyFast5SkipFolder], + metaData) + + then: + thrown(IllegalStateException) + + } + def "If either fastq pass or fail folder is empty, no IllegalStateException shall be thrown"() { given: def emptyFastQFailedFolder = FastQFailFolder.create("fastq_fail","root/fastq_fail", []) diff --git a/src/test/resources/nanopore/valid-example-dorado-basecaller.json b/src/test/resources/nanopore/valid-example-dorado-basecaller.json new file mode 100644 index 0000000000..411f70d873 --- /dev/null +++ b/src/test/resources/nanopore/valid-example-dorado-basecaller.json @@ -0,0 +1,269 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "", + "base_caller_version": "3.2.8+bd67289", + "device_type": "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "additional_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/additional_file_.new", + "file_type": "new" + }, + { + "name": "not_relevant_file_.wow", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/not_relevant_file_.wow", + "file_type": "wow" + }, + { + "name": "unknown_folder", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder", + "children": [ + { + "name": "unknown_child_folder", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder", + "children": [ + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "fast5_skip", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "pod5_skip", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/", + "children": [ + { + "name": "myfile2.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile2.pod5", + "file_type": "pod5" + }, + { + "name": "myfile4.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile4.pod5", + "file_type": "pod5" + }, + { + "name": "myfile3.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile3.pod5", + "file_type": "pod5" + }, + { + "name": "myfile5.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile5.pod5", + "file_type": "pod5" + }, + { + "name": "myfile.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile.pod5", + "file_type": "pod5" + } + ] + }, + { + "name": "pod5_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass", + "children": [ + { + "name": "myfile2.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass/myfile2.pod5", + "file_type": "pod5" + }, + { + "name": "myfile4.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass/myfile4.pod5", + "file_type": "pod5" + }, + { + "name": "myfile3.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass/myfile3.pod5", + "file_type": "pod5" + }, + { + "name": "myfile5.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass/myfile5.pod5", + "file_type": "pod5" + }, + { + "name": "myfile.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_pass/myfile.pod5", + "file_type": "pod5" + } + ] + }, + { + "name": "pod5_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/", + "children": [ + { + "name": "myfile2.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/myfile2.pod5", + "file_type": "pod5" + }, + { + "name": "myfile4.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/myfile4.pod5", + "file_type": "pod5" + }, + { + "name": "myfile3.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/myfile3.pod5", + "file_type": "pod5" + }, + { + "name": "myfile5.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/myfile5.pod5", + "file_type": "pod5" + }, + { + "name": "myfile.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_fail/myfile.pod5", + "file_type": "pod5" + } + ] + }, + { + "name": "basecalling", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling", + "children": [ + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "guppy_basecall_client_log*.log", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/guppy_basecall_client_log*.log", + "file_type": "log" + } + ] + } + ] + } + ] +} diff --git a/src/test/resources/nanopore/valid-minimal-structure-dorado-basecaller.json b/src/test/resources/nanopore/valid-minimal-structure-dorado-basecaller.json new file mode 100644 index 0000000000..9a60ed1cdd --- /dev/null +++ b/src/test/resources/nanopore/valid-minimal-structure-dorado-basecaller.json @@ -0,0 +1,207 @@ +{ + "name": "QABCD001AB_E12A345a01_PAE12345", + "path": "./", + "children": [ + { + "name": "20200122_1217_1-A1-B1-PAE12345_1234567a", + "metadata": { + "adapter": "flongle", + "asic_temp": "32.631687", + "base_caller": "", + "base_caller_version": "3.2.8+bd67289", + "device_type": "promethion", + "flow_cell_id": "PAE26306", + "flow_cell_product_code": "FLO-PRO002", + "flow_cell_position": "2-A3-D3", + "hostname": "PCT0094", + "protocol": "sequencing/sequencing_PRO002_DNA:FLO-PRO002:SQK-LSK109:True", + "started": "2020-02-11T15:52:10.465982+01:00" + }, + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a", + "children": [ + { + "name": "report_.md", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/report_.md", + "file_type": "md" + }, + { + "name": "final_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/final_summary_.txt", + "file_type": "txt" + }, + { + "name": "sequencing_summary_.txt", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/sequencing_summary_.txt", + "file_type": "txt" + }, + { + "name": "additional_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/additional_file_.new", + "file_type": "new" + }, + { + "name": "not_relevant_file_.wow", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/not_relevant_file_.wow", + "file_type": "wow" + }, + { + "name": "unknown_folder", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder", + "children": [ + { + "name": "unknown_child_folder", + "path": "20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder", + "children": [ + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_child_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "unknown_file_.new", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/unknown_folder/unknown_file_.new", + "file_type": "new" + } + ] + }, + { + "name": "fast5_skip", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/", + "children": [ + { + "name": "myfile2.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile2.fast5", + "file_type": "fast5" + }, + { + "name": "myfile4.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile4.fast5", + "file_type": "fast5" + }, + { + "name": "myfile3.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile3.fast5", + "file_type": "fast5" + }, + { + "name": "myfile5.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile5.fast5", + "file_type": "fast5" + }, + { + "name": "myfile.fast5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/fast5_skip/myfile.fast5", + "file_type": "fast5" + } + ] + }, + { + "name": "pod5_skip", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/", + "children": [ + { + "name": "myfile2.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile2.pod5", + "file_type": "pod5" + }, + { + "name": "myfile4.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile4.pod5", + "file_type": "pod5" + }, + { + "name": "myfile3.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile3.pod5", + "file_type": "pod5" + }, + { + "name": "myfile5.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile5.pod5", + "file_type": "pod5" + }, + { + "name": "myfile.pod5", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/pod5_skip/myfile.pod5", + "file_type": "pod5" + } + ] + }, + { + "name": "basecalling", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling", + "children": [ + { + "name": "fastq_pass", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile1.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_pass/myfile1.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "fastq_fail", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/", + "children": [ + { + "name": "myfile3.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile3.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile2.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile2.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile4.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile4.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile5.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile5.fastq.gz", + "file_type": "fastq.gz" + }, + { + "name": "myfile.fastq.gz", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/fastq_fail/myfile.fastq.gz", + "file_type": "fastq.gz" + } + ] + }, + { + "name": "guppy_basecall_client_log*.log", + "path": "./20200122_1217_1-A1-B1-PAE12345_1234567a/basecalling/guppy_basecall_client_log*.log", + "file_type": "log" + } + ] + } + ] + } + ] +} From 1ecd7fff4f5378a2a1a26f52c6d6000ad7c9c1b2 Mon Sep 17 00:00:00 2001 From: Steffengreiner Date: Tue, 14 Nov 2023 15:28:22 +0100 Subject: [PATCH 62/62] Make runID optional for nf-core registration (#374) --- .../datasets/NfCorePipelineResult.groovy | 54 ++++++++++++------- ...nformatics-analysis-result-set.schema.json | 3 +- .../NfCorePipelineResultSpec.groovy | 27 ++++++++++ .../valid-resultset-no-run_id-example.json | 52 ++++++++++++++++++ 4 files changed, 116 insertions(+), 20 deletions(-) create mode 100644 src/test/resources/examples/resultset/valid-resultset-no-run_id-example.json diff --git a/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy b/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy index 8bc997fc72..65f030dd17 100644 --- a/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy +++ b/src/main/groovy/life/qbic/datamodel/datasets/NfCorePipelineResult.groovy @@ -45,6 +45,7 @@ final class NfCorePipelineResult { private SampleIds sampleIds + // The RunId is only generated if the result was generated by a NF-Tower instance private RunId runId private PipelineInformationFolder pipelineInformationFolder @@ -53,7 +54,7 @@ final class NfCorePipelineResult { private List processFolders - NfCorePipelineResult(PipelineInformationFolder pipelineInformationFolder, QualityControlFolder qualityControlFolder, List processFolders, RunId runId, SampleIds sampleIds) { + NfCorePipelineResult(PipelineInformationFolder pipelineInformationFolder, QualityControlFolder qualityControlFolder, List processFolders, RunId runId, SampleIds sampleIds) { Objects.requireNonNull(pipelineInformationFolder, "Please provide a PipelineInformation folder.") Objects.requireNonNull(qualityControlFolder, "Please provide a QualityControl folder") Objects.requireNonNull(processFolders, "Please provide a List of process folders") @@ -67,6 +68,17 @@ final class NfCorePipelineResult { this.sampleIds = sampleIds } + NfCorePipelineResult(PipelineInformationFolder pipelineInformationFolder, QualityControlFolder qualityControlFolder, List processFolders, SampleIds sampleIds) { + Objects.requireNonNull(pipelineInformationFolder, "Please provide a PipelineInformation folder.") + Objects.requireNonNull(qualityControlFolder, "Please provide a QualityControl folder") + Objects.requireNonNull(processFolders, "Please provide a List of process folders") + Objects.requireNonNull(sampleIds, "Please provide a sampleIds file") + this.pipelineInformationFolder = pipelineInformationFolder + this.qualityControlFolder = qualityControlFolder + this.processFolders = processFolders + this.sampleIds = sampleIds + } + /** * Static factory method that creates a new nfcoreExperiment instance from the bioinformatic pipeline output. * See this @{link
    example} @@ -80,14 +92,13 @@ final class NfCorePipelineResult { //Check if all required folders are in root directory Objects.requireNonNull(bioinformaticPipelineOutput.get("pipelineInformation"), "The root folder must contain a PipelineInformation folder.") - Objects.requireNonNull(bioinformaticPipelineOutput.get("qualityControl"),"The root folder must contain a QualityControl folder.") + Objects.requireNonNull(bioinformaticPipelineOutput.get("qualityControl"), "The root folder must contain a QualityControl folder.") Objects.requireNonNull(bioinformaticPipelineOutput.get("processFolders"), "The root folder must contain at least one process folder.") //Check if all required files are in the pipeline_info directory Map pipelineInfoMap = bioinformaticPipelineOutput["pipelineInformation"] as Map Objects.requireNonNull(pipelineInfoMap.get("softwareVersions"), "The pipeline_info folder must contain a softwareVersions.yml file.") Objects.requireNonNull(pipelineInfoMap.get("executionReport"), "The pipeline_info folder must contain a executionReport.html file.") //Check if all required files are in root directory - Objects.requireNonNull(bioinformaticPipelineOutput.get("runId"), "The root folder must contain a run_id.txt file.") Objects.requireNonNull(bioinformaticPipelineOutput.get("sampleIds"), "The root folder must contain an sample_ids.txt file.") //Parse all folders in the root directory @@ -108,12 +119,16 @@ final class NfCorePipelineResult { pipelineInformation.softwareVersions = softwareVersions as SoftwareVersions pipelineInformation.executionReport = executionReport as ExecutionReport - //Parse all files in the root directory - DataFile runId = parseFile(bioinformaticPipelineOutput.get("runId") as Map) as RunId + //Parse all mandatory files in the root directory DataFile sampleIds = parseFile(bioinformaticPipelineOutput.get("sampleIds") as Map) as SampleIds - //Create new NfCorePipelineResult with parsed information - return new NfCorePipelineResult(pipelineInformation, qualityControl, processFolders, runId, sampleIds) + // Parse optional Files in the root directory and generate NfCorePipelineResult accordingly + if (bioinformaticPipelineOutput.get("runId") != null) { + DataFile runId = parseFile(bioinformaticPipelineOutput.get("runId") as Map) as RunId + return new NfCorePipelineResult(pipelineInformation, qualityControl, processFolders, runId, sampleIds) + } else { + return new NfCorePipelineResult(pipelineInformation, qualityControl, processFolders, sampleIds) + } } /** @@ -165,11 +180,12 @@ final class NfCorePipelineResult { /* * Helper method that creates a DataFile instance from a map */ + private static DataFile parseFile(Map fileTree) throws IllegalArgumentException { String name = fileTree.get("name") String fileType = fileTree.get("fileType") String path = fileTree.get("path") - + for (String nfCoreFileType : nfCoreFileTypes) { Class c = Class.forName(nfCoreFileType) Method method = c.getDeclaredMethod("create", String.class, String.class) @@ -183,15 +199,15 @@ final class NfCorePipelineResult { } } // We have to check for files of unknown type since this Parser will encounter variable file output dependent on the pipeline - if(!fileType) - { - throw new IllegalArgumentException("File $name with path $path is of unknown nfcore file type.") + if (!fileType) { + throw new IllegalArgumentException("File $name with path $path is of unknown nfcore file type.") } } /* * Helper method that creates a DataFolder instance from a map */ + private static DataFolder parseFolder(Map fileTree) throws IllegalArgumentException { def name = fileTree.get("name") as String @@ -215,18 +231,19 @@ final class NfCorePipelineResult { * Helper method that tries to create a DataFolder instance * based on the DataFolder's different static factory create methods. */ + private static Optional tryToCreateDataFolder(Method method, String name, String relativePath, List children) { Optional folder = Optional.empty() - try { - // We only have named Folders - def dataFolder = method.invoke(null, name, relativePath, children) as DataFolder - folder = Optional.of(dataFolder) - } catch (InvocationTargetException e2) { - // Do nothing - } + try { + // We only have named Folders + def dataFolder = method.invoke(null, name, relativePath, children) as DataFolder + folder = Optional.of(dataFolder) + } catch (InvocationTargetException e2) { + // Do nothing + } return folder } @@ -234,6 +251,7 @@ final class NfCorePipelineResult { /* * Helper method that parses the children of a folder. */ + private static List parseChildren(List children) { def parsedChildren = [] children.each { Map unknownChild -> diff --git a/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json b/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json index 22453af42e..96b7b6113e 100644 --- a/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json +++ b/src/main/resources/schemas/bioinformatics-analysis-result-set.schema.json @@ -115,7 +115,6 @@ "pipelineInformation", "qualityControl", "processFolders", - "sampleIds", - "runId" + "sampleIds" ] } diff --git a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy index d7db7a6015..1ba3baefd3 100644 --- a/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy +++ b/src/test/groovy/life/qbic/datamodel/datasets/datastructure/NfCorePipelineResultSpec.groovy @@ -35,6 +35,9 @@ class NfCorePipelineResultSpec extends Specification { @Shared Map missingQualityControlDataStructure + @Shared + Map validDataStructureWithoutRunId + def setupSpec() { InputStream validStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/valid-resultset-example.json") validDataStructure = (Map) new JsonSlurper().parse(validStream) @@ -55,6 +58,10 @@ class NfCorePipelineResultSpec extends Specification { InputStream missingQualityControlStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/missing-quality-control-resultset-example.json") missingQualityControlDataStructure = (Map) new JsonSlurper().parse(missingQualityControlStream) missingQualityControlStream.close() + + InputStream validStreamWithoutRunId = Thread.currentThread().getContextClassLoader().getResourceAsStream("examples/resultset/valid-resultset-no-run_id-example.json") + validDataStructureWithoutRunId = (Map) new JsonSlurper().parse(validStreamWithoutRunId) + validStreamWithoutRunId.close() } def "Create NfCorePipelineOutput from Map successfully"() { @@ -122,4 +129,24 @@ class NfCorePipelineResultSpec extends Specification { thrown(NullPointerException) } + def "Create NfCorePipelineOutput from Map without RunId successfully"() { + given: + final Map validExample = validDataStructureWithoutRunId + + when: + final NfCorePipelineResult validPipelineResult = NfCorePipelineResult.createFrom(validExample) + SampleIds sampleIds = validPipelineResult.getSampleIds() + List processFolders = validPipelineResult.getProcessFolders() + QualityControlFolder qualityControlFolder = validPipelineResult.getQualityControlFolder() + PipelineInformationFolder pipelineInformationFolder = validPipelineResult.getPipelineInformation() + + then: + sampleIds.name == "sample_ids.txt" + processFolders.get(0).name == "salmon" + qualityControlFolder.name == "multiqc" + pipelineInformationFolder.getSoftwareVersions().name == "software_versions.yml" + pipelineInformationFolder.getExecutionReport().name == "execution_report.html" + assert validPipelineResult.runId == null + } + } diff --git a/src/test/resources/examples/resultset/valid-resultset-no-run_id-example.json b/src/test/resources/examples/resultset/valid-resultset-no-run_id-example.json new file mode 100644 index 0000000000..746261055a --- /dev/null +++ b/src/test/resources/examples/resultset/valid-resultset-no-run_id-example.json @@ -0,0 +1,52 @@ +{ + "pipelineInformation": { + "name": "pipeline_info", + "path": "./pipeline_info", + "children": [], + "softwareVersions": { + "name": "software_versions.yml", + "fileType": "yml", + "path": "./pipeline_info/software_versions.yml" + }, + "executionReport": { + "name": "execution_report.html", + "fileType": "html", + "path": "./pipeline_info/execution_report.html" + } + }, + "qualityControl": { + "name": "multiqc", + "path": "./multiqc", + "children": [ + { + "name": "star_salmon", + "path": "./multiqc/star_salmon", + "children": [ + { + "name": "multiqc_report.html", + "path": "./multiqc/star_salmon/multiqc_report.html", + "fileType": "html" + } + ] + } + ] + }, + "processFolders": [ + { + "name": "salmon", + "path": "./salmon", + "children": [ + { + "name": "salmon.merged.gene_tpm.tsv", + "fileType": "tsv", + "path": "./salmon/salmon.merged.gene_tpm.tsv" + } + ] + } + ], + "sampleIds": { + "name": "sample_ids.txt", + "fileType": "txt", + "path": "./sample_ids.txt" + } +}