From 1c6b6d258b3924bffef6f9546463c55cd112b441 Mon Sep 17 00:00:00 2001 From: Chris Norman Date: Mon, 20 Jun 2022 14:49:20 -0400 Subject: [PATCH] Java 17/Spark 3.3.0. --- .../upload-gatk-test-results/action.yml | 6 +- .github/workflows/gatk-tests.yml | 53 +- Dockerfile | 44 +- README.md | 8 +- build.gradle | 702 ++++++++++------- gatk | 116 ++- gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 59821 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 257 ++++--- scripts/docker/dockertest.gradle | 180 ++++- .../run_vcf_site_level_filtering_wdl.sh | 2 +- .../GATKAnnotationPluginDescriptor.java | 67 +- .../tools/HaplotypeCallerSpark.java | 22 +- .../tools/dragstr/CalibrateDragstrModel.java | 1 + .../HaplotypeCallerEngine.java | 3 +- .../RampedHaplotypeCallerEngine.java | 3 +- .../utils/SerializableConsumer.java | 6 + .../utils/SerializablePredicate.java | 6 + .../utils/SerializableSupplier.java | 6 + .../CachingIndexedFastaSequenceFile.java | 8 +- .../utils/help/GATKDocWorkUnit.java | 82 +- .../utils/help/GATKGSONWorkUnit.java | 34 +- .../help/GATKHelpDocWorkUnitHandler.java | 122 +-- .../hellbender/utils/help/GATKHelpDoclet.java | 212 +++--- .../hellbender/utils/help/GATKWDLDoclet.java | 444 +++++------ .../utils/help/GATKWDLWorkUnitHandler.java | 712 +++++++++--------- .../utils/mcmc/PosteriorSummary.java | 51 -- .../utils/mcmc/PosteriorSummaryUtils.java | 148 ---- .../broadinstitute/hellbender/MainTest.java | 94 +-- ...ATKAnnotationPluginDescriptorUnitTest.java | 1 + .../GATKReadFilterPluginDescriptorTest.java | 1 + .../AssemblyRegionIteratorUnitTest.java | 2 +- .../datasources/ReadsSparkSinkUnitTest.java | 6 + .../datasources/ReadsSparkSourceUnitTest.java | 11 + .../VariantsSparkSinkUnitTest.java | 6 + .../spark/PileupSparkIntegrationTest.java | 9 +- .../PrintReadsSparkIntegrationTest.java | 6 + ...iantReInterpreterSparkIntegrationTest.java | 6 + ...ntigAlignmentsSAMSparkIntegrationTest.java | 6 + ...reakpointEvidenceSparkIntegrationTest.java | 6 + ...DiscoveryPipelineSparkIntegrationTest.java | 6 + .../walkers/sv/SVClusterIntegrationTest.java | 12 +- .../utils/bigquery/BigQueryUtilsUnitTest.java | 6 +- .../utils/gcs/BucketUtilsUnitTest.java | 6 + ...ocumentationGenerationIntegrationTest.java | 128 ++-- .../help/TabCompletionIntegrationTest.java | 188 ++--- .../hellbender/utils/help/TestWDLTool.java | 652 ++++++++-------- .../help/WDLGenerationIntegrationTest.java | 284 +++---- .../hellbender/utils/io/IOUtilsUnitTest.java | 10 + .../mcmc/PosteriorSummaryUtilsUnitTest.java | 103 --- .../utils/spark/SparkUtilsUnitTest.java | 6 + ...-sample-ac-nac-tumor-1.modelBegin.af.param | 6 +- ...tiple-sample-ac-nac-tumor-1.modelBegin.seg | 382 +++++----- ...iple-sample-ac-tumor-1.modelBegin.af.param | 6 +- .../multiple-sample-ac-tumor-1.modelBegin.seg | 576 +++++++------- ...mple-cr-ac-nac-tumor-1.modelBegin.af.param | 6 +- ...le-sample-cr-ac-nac-tumor-1.modelBegin.seg | 156 ++-- ...e-sample-cr-ac-tumor-1.modelBegin.af.param | 6 +- ...ltiple-sample-cr-ac-tumor-1.modelBegin.seg | 222 +++--- .../single-sample-ac-nac.af.igv.seg | 18 +- .../single-sample-ac-nac.cr.igv.seg | 8 +- .../single-sample-ac-nac.cr.seg | 8 +- .../single-sample-ac-nac.modelBegin.af.param | 6 +- .../single-sample-ac-nac.modelBegin.seg | 92 +-- .../single-sample-ac-nac.modelFinal.af.param | 6 +- .../single-sample-ac-nac.modelFinal.seg | 18 +- .../single-sample-ac.af.igv.seg | 6 +- .../single-sample-ac.cr.igv.seg | 4 +- .../single-sample-ac.cr.seg | 4 +- .../single-sample-ac.modelBegin.af.param | 6 +- .../single-sample-ac.modelBegin.seg | 136 ++-- .../single-sample-ac.modelFinal.af.param | 6 +- .../single-sample-ac.modelFinal.seg | 6 +- .../single-sample-cr-ac-nac.modelBegin.seg | 2 +- ...ityAnnotationRevamp.expected.flowbased.vcf | 6 +- ...nnotationRevamp.expected.flowbased.vcf.idx | Bin 438909 -> 438916 bytes .../testutils/IntegrationTestSpec.java | 2 +- .../testutils/VariantContextTestUtils.java | 1 + 78 files changed, 3429 insertions(+), 3118 deletions(-) create mode 100644 src/main/java/org/broadinstitute/hellbender/utils/SerializableConsumer.java create mode 100644 src/main/java/org/broadinstitute/hellbender/utils/SerializablePredicate.java create mode 100644 src/main/java/org/broadinstitute/hellbender/utils/SerializableSupplier.java delete mode 100644 src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummary.java delete mode 100644 src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtils.java delete mode 100644 src/test/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtilsUnitTest.java diff --git a/.github/actions/upload-gatk-test-results/action.yml b/.github/actions/upload-gatk-test-results/action.yml index 62166d4c64f..a1645913cf1 100644 --- a/.github/actions/upload-gatk-test-results/action.yml +++ b/.github/actions/upload-gatk-test-results/action.yml @@ -11,10 +11,10 @@ inputs: description: 'The job-unique identifier to use for uploading the results of this run into a google bucket' required: true is-docker: - description: 'Whether to label the uplaod artifact as coming from a docker test' + description: 'Whether to label the upload artifact as coming from a docker test' required: false identifier: - description: 'Identifier to use for finding the unique name for jobs in order to determine html logs location (eg. "Java 8 build and test integration")' + description: 'Identifier to use for finding the unique name for jobs in order to determine html logs location (eg. "Java 17 build and test integration")' required: true ## Secrets and token inputs repo-token: @@ -23,7 +23,7 @@ inputs: bot-comment-key: description: 'Key corresponding to the user account to be used for making comments on github about test failures' required: false -## option to skip all but the artifact uplaod +## option to skip all but the artifact upload only-artifact: description: 'if "true" this will skip any uploading steps that require permissions and only upload the artifact file' required: false diff --git a/.github/workflows/gatk-tests.yml b/.github/workflows/gatk-tests.yml index a908b98cd15..20471b29890 100644 --- a/.github/workflows/gatk-tests.yml +++ b/.github/workflows/gatk-tests.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - CROMWELL_VERSION: 51 + CROMWELL_VERSION: 84 TERM: dumb GRADLE_OPTS: "-Xmx2048m -Dorg.gradle.daemon=false" HELLBENDER_TEST_INPUTS: gs://hellbender/test/resources/ @@ -73,19 +73,10 @@ jobs: needs: check-secrets strategy: matrix: - java: [ 8, 11 ] + java: [ 17 ] experimental: [ false ] - scalaVersion: [ 2.11, 2.12 ] + scalaVersion: [ 2.12 ] testType: [ cloud, integration, unit ] - exclude: - - java: 11 - scalaVersion: 2.11 - - java: 8 - scalaVersion: 2.12 - - java: 8 - testType: integration - - java: 8 - testType: unit fail-fast: false continue-on-error: ${{ matrix.experimental }} env: @@ -100,7 +91,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: ${{ matrix.Java }} - distribution: 'adopt' + distribution: 'temurin' cache: gradle - name: 'Compile with Gradle' @@ -120,6 +111,10 @@ jobs: if: needs.check-secrets.outputs.google-credentials == 'true' run: echo "HELLBENDER_JSON_SERVICE_ACCOUNT_KEY=${{ steps.auth.outputs.credentials_file_path }}" >> $GITHUB_ENV + # See https://cloud.google.com/compute/docs/troubleshooting/known-issues#ubuntu-systems + - name: "get the updated signature key for google cloud" + run: curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - + - name: 'Set up Cloud SDK' if: needs.check-secrets.outputs.google-credentials == 'true' uses: google-github-actions/setup-gcloud@v0 @@ -134,7 +129,7 @@ jobs: if: ${{ needs.check-secrets.outputs.google-credentials == 'true' || matrix.testType != 'cloud'}} id: jacoco-tests run: | - ./gradlew -Dscala.version=${{ env.SCALA_VERSION }} jacocoTestReport + ./gradlew --daemon -Dscala.version=${{ env.SCALA_VERSION }} jacocoTestReport - uses: ./.github/actions/upload-gatk-test-results if: always() @@ -154,9 +149,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ 8 ] + java: [ 17 ] experimental: [ false ] - scalaVersion: [ 2.11 ] + scalaVersion: [ 2.12 ] testType: [ integration, unit, variantcalling, conda ] fail-fast: false continue-on-error: ${{ matrix.experimental }} @@ -174,7 +169,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: ${{ matrix.Java }} - distribution: 'adopt' + distribution: 'temurin' cache: gradle #Google Cloud stuff @@ -190,6 +185,10 @@ jobs: if: needs.check-secrets.outputs.google-credentials == 'true' run: echo "HELLBENDER_JSON_SERVICE_ACCOUNT_KEY=${{ steps.auth.outputs.credentials_file_path }}" >> $GITHUB_ENV + # See https://cloud.google.com/compute/docs/troubleshooting/known-issues#ubuntu-systems + - name: "get the updated signature key for google cloud" + run: curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - + - name: 'Set up Cloud SDK' if: needs.check-secrets.outputs.google-credentials == 'true' uses: google-github-actions/setup-gcloud@v0 @@ -259,6 +258,12 @@ jobs: - uses: actions/checkout@v2 with: fetch: 0 + - name: Set up java 17 + uses: actions/setup-java@v2 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle - uses: ./.github/actions/install-cromwell with: CROMWELL_VERSION: ${{ env.CROMWELL_VERSION }} @@ -273,11 +278,11 @@ jobs: - uses: actions/checkout@v2 with: fetch: 0 - - name: Set up java 8 + - name: Set up java 17 uses: actions/setup-java@v2 with: - java-version: '8' - distribution: 'adopt' + java-version: '17' + distribution: 'temurin' cache: gradle - uses: ./.github/actions/install-cromwell with: @@ -300,11 +305,11 @@ jobs: fetch-depth: 0 - name: pull lfs files run: git lfs pull - - name: Set up java 8 + - name: Set up java 17 uses: actions/setup-java@v2 with: - java-version: '8' - distribution: 'adopt' + java-version: '17' + distribution: 'temurin' cache: gradle - uses: ./.github/actions/install-cromwell with: @@ -335,6 +340,8 @@ jobs: run: | echo "Running CNV somatic workflows"; bash scripts/cnv_cromwell_tests/somatic/run_cnv_somatic_workflows.sh; + echo "Gather CNV somatic cromwell workflows logs"; + bash -c "find /home/runner/work/gatk/gatk/scripts/cnv_cromwell_tests/somatic/cromwell-executions -exec cat {} \;"; - name: "M2_WDL_TEST" if: ${{ matrix.wdlTest == 'RUN_M2_WDL' }} diff --git a/Dockerfile b/Dockerfile index 3c551f0ff24..57f7f5ee5fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,27 @@ ADD . /gatk WORKDIR /gatk # Get an updated gcloud signing key, in case the one in the base image has expired -RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - +RUN rm /etc/apt/sources.list.d/google-cloud-sdk.list +RUN apt update +RUN apt-key list +RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - RUN add-apt-repository universe && apt update RUN apt-get --assume-yes install git-lfs RUN git lfs install --force +##Get Java 17 temurin JDK +#RUN apt update && apt upgrade +RUN apt install wget +RUN wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz +RUN tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.*.tar.gz +RUN mv jdk-17.0.1+12 /opt/ +# +ENV JAVA_HOME /opt/jdk-17.0.1+12 +ENV PATH $JAVA_HOME/bin:$PATH +RUN echo $JAVA_HOME +RUN update-alternatives --install /usr/bin/java java /opt/jdk-17.0.1+12/bin/java 1 +RUN java -version + #Download only resources required for the build, not for testing RUN git lfs pull --include src/main/resources/large @@ -23,6 +39,23 @@ RUN unzip -o -j $( find /gatk/unzippedJar -name "gatkPython*.zip" ) -d /gatk/unz # Using OpenJDK 8 FROM broadinstitute/gatk:gatkbase-2.3.0 +RUN rm /etc/apt/sources.list.d/google-cloud-sdk.list +RUN apt update +RUN apt-key list + +#Get Java 17 temurin JDK +#RUN apt update && apt upgrade +RUN apt install wget +RUN wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz +RUN tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.*.tar.gz +RUN mv jdk-17.0.1+12 /opt/ + +ENV JAVA_HOME /opt/jdk-17.0.1+12 +ENV PATH $JAVA_HOME/bin:$PATH +RUN echo $JAVA_HOME +RUN update-alternatives --install /usr/bin/java java /opt/jdk-17.0.1+12/bin/java 1 +RUN java -version + WORKDIR /gatk # Location of the unzipped gatk bundle files @@ -43,6 +76,9 @@ RUN mkdir .gradle WORKDIR /gatk +# use UTF-8 encoding to get around (??) scala class name shapeless/$tilde$qmark$greater$?.class +ENV LANG="en_US.UTF-8" LANGUAGE="en_US:en" LC_ALL="en_US.UTF-8" + # Create a simple unit test runner ENV CI true RUN echo "source activate gatk" > /root/run_unit_tests.sh && \ @@ -54,11 +90,11 @@ RUN echo "source activate gatk" > /root/run_unit_tests.sh && \ echo "mkdir /gatk/srcdir" >> /root/run_unit_tests.sh && \ echo "cp -rp /gatkCloneMountPoint/src/main/java/* /gatk/srcdir" >> /root/run_unit_tests.sh && \ echo "export SOURCE_DIR=/gatk/srcdir" >> /root/run_unit_tests.sh && \ - echo "export GRADLE_OPTS=\"-Xmx1024m -Dorg.gradle.daemon=false\"" /root/run_unit_tests.sh && \ - echo "export CP_DIR=/gatk/testClasses" /root/run_unit_tests.sh && \ + echo "export GRADLE_OPTS=\"-Xmx1024m -Dorg.gradle.daemon=false --add-opens java.prefs/java.util.prefs=ALL-UNNAMED\"" >> /root/run_unit_tests.sh && \ + echo "export CP_DIR=/gatk/testClasses" >> /root/run_unit_tests.sh && \ echo "ln -s /gatkCloneMountPoint/src/ /gatkCloneMountPoint/scripts/docker/src" >> /root/run_unit_tests.sh && \ echo "ln -s /gatkCloneMountPoint/build/ /gatkCloneMountPoint/scripts/docker/build" >> /root/run_unit_tests.sh && \ - echo "cd /gatk/ && /gatkCloneMountPoint/gradlew -b /gatkCloneMountPoint/dockertest.gradle testOnPackagedReleaseJar jacocoTestReportOnPackagedReleaseJar -a -p /gatkCloneMountPoint" >> /root/run_unit_tests.sh + echo "cd /gatk/ && /gatkCloneMountPoint/gradlew -Dfile.encoding=UTF-8 -b /gatkCloneMountPoint/dockertest.gradle testOnPackagedReleaseJar jacocoTestReportOnPackagedReleaseJar -a -p /gatkCloneMountPoint" >> /root/run_unit_tests.sh WORKDIR /root RUN cp -r /root/run_unit_tests.sh /gatk diff --git a/README.md b/README.md index c90e7a78802..30c15f47797 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ releases of the toolkit. ## Requirements * To run GATK: - * Java 8 is needed to run or build GATK. + * Java 17 is needed to run or build GATK. We recommend either of the following: * OpenJDK 8 with Hotspot from [AdoptOpenJdk](https://adoptopenjdk.net/) * [OracleJDK 8](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) @@ -61,7 +61,7 @@ releases of the toolkit. See [Python Dependencies](#python) for more information. * R 3.2.5 (needed for producing plots in certain tools) * To build GATK: - * A Java 8 JDK + * A Java 17 JDK * Git 2.5 or greater * [git-lfs](https://git-lfs.github.com/) 1.1.0 or greater. Required to download the large files used to build GATK, and test files required to run the test suite. Run `git lfs install` after downloading, followed by `git lfs pull` from @@ -454,7 +454,7 @@ We use [git-lfs](https://git-lfs.github.com/) to version and distribute test dat #### Creating a GATK project in the IntelliJ IDE (last tested with version 2016.2.4): -* Ensure that you have `gradle` and the Java 8 JDK installed +* Ensure that you have `gradle` and the Java 17 JDK installed * You may need to install the TestNG and Gradle plugins (in preferences) @@ -476,7 +476,7 @@ We use [git-lfs](https://git-lfs.github.com/) to version and distribute test dat * After downloading project dependencies, IntelliJ should open a new window with your GATK project -* Make sure that the Java version is set correctly by going to File -> "Project Structure" -> "Project". Check that the "Project SDK" is set to your Java 1.8 JDK, and "Project language level" to 8 (you may need to add your Java 8 JDK under "Platform Settings" -> SDKs if it isn't there already). Then click "Apply"/"Ok". +* Make sure that the Java version is set correctly by going to File -> "Project Structure" -> "Project". Check that the "Project SDK" is set to your Java 1.17 JDK, and "Project language level" to 17 (you may need to add your Java 17 JDK under "Platform Settings" -> SDKs if it isn't there already). Then click "Apply"/"Ok". #### Setting up debugging in IntelliJ diff --git a/build.gradle b/build.gradle index e2754b5a489..a22bac75e66 100644 --- a/build.gradle +++ b/build.gradle @@ -23,8 +23,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import de.undercouch.gradle.tasks.download.Download import javax.tools.ToolProvider -import java.time.format.DateTimeFormatter -import java.time.ZonedDateTime mainClassName = "org.broadinstitute.hellbender.Main" @@ -63,9 +61,9 @@ repositories { final htsjdkVersion = System.getProperty('htsjdk.version','2.24.1') final picardVersion = System.getProperty('picard.version','2.27.1') final barclayVersion = System.getProperty('barclay.version','4.0.2') -final sparkVersion = System.getProperty('spark.version', '2.4.5') -final scalaVersion = System.getProperty('scala.version', '2.11') -final hadoopVersion = System.getProperty('hadoop.version', '3.2.1') +final sparkVersion = System.getProperty('spark.version', '3.3.0') +final scalaVersion = System.getProperty('scala.version', '2.12') +final hadoopVersion = System.getProperty('hadoop.version', '3.3.1') final disqVersion = System.getProperty('disq.version','0.3.6') final genomicsdbVersion = System.getProperty('genomicsdb.version','1.4.3') final bigQueryVersion = System.getProperty('bigQuery.version', '2.9.0') @@ -138,19 +136,13 @@ def looksLikeWereInAGitRepository(){ // Ensure that we have a clone of the git repository, and resolve any required git-lfs // resource files that are needed to run the build but are still lfs stub files. def ensureBuildPrerequisites(largeResourcesFolder, buildPrerequisitesMessage, skipGitCheck) { - if (!JavaVersion.current().isJava8Compatible()) { - throw new GradleException( - "Java 8 or later is required to build GATK, but ${JavaVersion.current()} was found. " - + "$buildPrerequisitesMessage") + if (!JavaVersion.current().equals(JavaVersion.VERSION_17)) { + println("Warning: using Java ${JavaVersion.current()} but only Java 17 has been tested.") } - // Make sure we can get a ToolProvider class loader (for Java 8). If not we may have just a JRE. - if (JavaVersion.current().isJava8() && ToolProvider.getSystemToolClassLoader() == null) { + if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)) { throw new GradleException( - "The ClassLoader obtained from the Java ToolProvider is null. " - + "A full Java 8 or 11 JDK must be installed, check that you are not using a JRE. $buildPrerequisitesMessage") - } - if (!JavaVersion.current().isJava8() && !JavaVersion.current().isJava11()) { - println("Warning: using Java ${JavaVersion.current()} but only Java 8 and Java 11 have been tested.") + "A Java 17 compatible (Java 17 or later) version is required to build GATK, but ${JavaVersion.current()} was found. " + + "$buildPrerequisitesMessage") } if (!skipGitCheck && !looksLikeWereInAGitRepository() ) { throw new GradleException("This doesn't appear to be a git folder. " + @@ -182,11 +174,18 @@ configurations.all { // force testng dependency so we don't pick up a different version via GenomicsDB force 'org.testng:testng:' + testNGVersion force 'org.broadinstitute:barclay:' + barclayVersion - force 'com.twitter:chill_2.11:0.8.1' + force 'com.twitter:chill_2.12:0.10.0' + force 'org.apache.commons:commons-math3:3.5' // make sure we don't pick up an incorrect version of the GATK variant of the google-nio library // via Picard, etc. force googleCloudNioDependency + + force 'com.esotericsoftware:kryo:4.0.0' + + // hadoop uses an old jetty that doesn't like the new java version numbering scheme but 11.0.1 is + //missing methods used by org.apache.hadoop.http.HttpServer2 + //force 'org.eclipse.jetty:jetty-servlet:9.4.40.v20210413' } all*.exclude group: 'org.slf4j', module: 'slf4j-jdk14' //exclude this to prevent slf4j complaining about to many slf4j bindings all*.exclude group: 'com.google.guava', module: 'guava-jdk5' @@ -231,7 +230,7 @@ configurations { exclude module: 'javax.servlet' exclude module: 'servlet-api' exclude group: 'com.esotericsoftware.kryo' - exclude module: 'spark-mllib_2.11' + exclude module: 'spark-mllib_2.12' exclude group: 'org.scala-lang' exclude module: 'kryo' } @@ -327,7 +326,7 @@ dependencies { implementation('org.apache.hadoop:hadoop-client:' + hadoopVersion) // should be a 'provided' dependency implementation('com.github.jsr203hadoop:jsr203hadoop:1.0.3') - implementation('de.javakaffee:kryo-serializers:0.41') { + implementation('de.javakaffee:kryo-serializers:0.45') { exclude module: 'kryo' // use Spark's version } @@ -342,15 +341,15 @@ dependencies { implementation('com.github.fommil.netlib:netlib-native_system-osx-x86_64:1.1:natives') // Dependency change for including MLLib - implementation('com.esotericsoftware:kryo:3.0.3'){ - exclude group: 'com.esotericsoftware', module: 'reflectasm' + implementation('com.esotericsoftware:kryo:5.3.0'){ + //exclude group: 'com.esotericsoftware', module: 'reflectasm' exclude group: 'org.ow2.asm', module: 'asm' } - // Dependency change for including MLLib - implementation('com.esotericsoftware:reflectasm:1.10.0:shaded') { - transitive = false - } +// // Dependency change for including MLLib +// implementation('com.esotericsoftware:reflectasm:1.10.0:shaded') { +// transitive = false +// } implementation('com.intel.gkl:gkl:0.8.8') { exclude module: 'htsjdk' @@ -378,6 +377,125 @@ dependencies { testImplementation "com.google.jimfs:jimfs:1.1" } +run { + // taken from the union of everything encountered by tests, plus everything defined here: + // https://github.com/apache/spark/blob/v3.3.0/launcher/src/main/java/org/apache/spark/launcher/JavaModuleOptions.java + jvmArgs = [ + '--add-opens', 'java.base/java.lang=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens', 'java.base/java.io=ALL-UNNAMED', + '--add-opens', 'java.base/java.net=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio=ALL-UNNAMED', + '--add-opens', 'java.base/java.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.atomic=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.cs=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.action=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.fs=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.zip=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.jar=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.file.attribute=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED', + '--add-opens', 'java.base/sun.net.www.protocol.jar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.invoke.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.locks=ALL-UNNAMED', + '--add-opens', 'java.base/java.security=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.annotation=ALL-UNNAMED', + '--add-opens', 'java.base/java.text=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.regex=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.locale=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.math=ALL-UNNAMED', + '--add-opens', 'java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.factory=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time.zone=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.scope=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.tree=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.interceptor=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management.openmbean=ALL-UNNAMED', + '--add-opens', 'java.management/sun.management=ALL-UNNAMED', + '--add-opens', 'jdk.management/com.sun.management.internal=ALL-UNNAMED', + '--add-opens', 'jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED', + '--add-opens', 'jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.module=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED', + '--add-opens', 'java.security.jgss/sun.security.krb5=ALL-UNNAMED', + '--add-opens', 'java.prefs/java.util.prefs=ALL-UNNAMED', // jacoco + + '-Dio.netty.tryReflectionSetAccessible=true' + ] + } +test { + jvmArgs = [ + '--add-opens', 'java.base/java.lang=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens', 'java.base/java.io=ALL-UNNAMED', + '--add-opens', 'java.base/java.net=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio=ALL-UNNAMED', + '--add-opens', 'java.base/java.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.atomic=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.cs=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.action=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.fs=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.zip=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.jar=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.file.attribute=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED', + '--add-opens', 'java.base/sun.net.www.protocol.jar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.invoke.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.locks=ALL-UNNAMED', + '--add-opens', 'java.base/java.security=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.annotation=ALL-UNNAMED', + '--add-opens', 'java.base/java.text=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.regex=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.locale=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.math=ALL-UNNAMED', + '--add-opens', 'java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.factory=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time.zone=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.scope=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.tree=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.interceptor=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management.openmbean=ALL-UNNAMED', + '--add-opens', 'java.management/sun.management=ALL-UNNAMED', + '--add-opens', 'jdk.management/com.sun.management.internal=ALL-UNNAMED', + '--add-opens', 'jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED', + '--add-opens', 'jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.module=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED', + '--add-opens', 'java.security.jgss/sun.security.krb5=ALL-UNNAMED', + '--add-opens', 'java.prefs/java.util.prefs=ALL-UNNAMED', // jacoco + + '-Dio.netty.tryReflectionSetAccessible=true' + ] +} + //add gatk launcher script to the jar as a resource processResources { from("gatk") @@ -390,8 +508,8 @@ processTestResources { include "org/broadinstitute/hellbender/utils/io/*" } -sourceCompatibility = 1.8 -targetCompatibility = 1.8 +sourceCompatibility = 1.17 +targetCompatibility = 1.17 def createSymlinks(archivePath, symlinkLocation) { exec { @@ -428,7 +546,7 @@ tasks.withType(Jar) { } wrapper { - gradleVersion = '7.3.2' + gradleVersion = '7.5.1' } tasks.withType(ShadowJar) { @@ -487,6 +605,7 @@ task shadowTestClassJar(type: ShadowJar){ // A minimal jar that only contains the extra dependencies needed for running the tests task shadowTestJar(type: ShadowJar){ + dependsOn 'compileTestUtilsJava', 'processTestUtilsResources' group = "Shadow" description = " A minimal jar that only contains the extra dependencies needed for running the tests that arent packaged in the main shadow jar" from { @@ -498,12 +617,13 @@ task shadowTestJar(type: ShadowJar){ } task collectBundleIntoDir(type: Copy) { - dependsOn shadowJar, sparkJar, 'condaEnvironmentDefinition', 'gatkTabComplete', 'gatkDoc' + //dependsOn shadowJar, sparkJar, 'condaEnvironmentDefinition', 'gatkTabComplete', 'gatkDoc' + dependsOn shadowJar, sparkJar, 'condaEnvironmentDefinition' doFirst { assert file("gatk").exists() assert file("README.md").exists() - assert file("$docBuildDir/tabCompletion/gatk-completion.sh").exists() + //assert file("$docBuildDir/tabCompletion/gatk-completion.sh").exists() assert file("src/main/resources/org/broadinstitute/hellbender/utils/config/GATKConfig.properties").exists() } @@ -511,8 +631,8 @@ task collectBundleIntoDir(type: Copy) { from(sparkJar.archivePath) from("gatk") from("README.md") - from("$docBuildDir/tabCompletion/gatk-completion.sh") - from("$docBuildDir/gatkDoc", { into("gatkdoc") }) + //from("$docBuildDir/tabCompletion/gatk-completion.sh") + //from("$docBuildDir/gatkDoc", { into("gatkdoc") }) from("src/main/resources/org/broadinstitute/hellbender/utils/config/GATKConfig.properties") { rename 'GATKConfig.properties', 'GATKConfig.EXAMPLE.properties' @@ -619,36 +739,36 @@ task testUtilsJar(type: Jar){ from sourceSets.testUtils.output } -tasks.withType(Javadoc) { - // do this for all javadoc tasks, including gatkDoc - options.addStringOption('Xdoclint:none') - options.addStringOption('encoding', 'UTF-8') -} - -javadoc { - // This is a hack to disable the java 8 default javadoc lint until we fix the html formatting - // We only want to do this for the javadoc task, not gatkDoc - options.addStringOption('Xdoclint:none', '-quiet') - source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) - include '**/*.java' -} - - -task testUtilsJavadoc(type: Javadoc) { - // This is a hack to disable the java 8 default javadoc lint until we fix the html formatting - // We only want to do this for the javadoc task, not gatkDoc - options.addStringOption('Xdoclint:none', '-quiet') - source = sourceSets.testUtils.allJava - classpath = sourceSets.testUtils.runtimeClasspath - destinationDir = file("$docBuildDir/testUtilsJavadoc") - include '**/*.java' -} - -task testUtilsJavadocJar(type: Jar, dependsOn: testUtilsJavadoc){ - archiveBaseName = "$project.name-test-utils" - archiveClassifier = 'javadoc' - from "$docBuildDir/testUtilsJavadoc" -} +//tasks.withType(Javadoc) { +// // do this for all javadoc tasks, including gatkDoc +// options.addStringOption('Xdoclint:none') +// options.addStringOption('encoding', 'UTF-8') +//} +// +//javadoc { +// // This is a hack to disable the java 8 default javadoc lint until we fix the html formatting +// // We only want to do this for the javadoc task, not gatkDoc +// options.addStringOption('Xdoclint:none', '-quiet') +// source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) +// include '**/*.java' +//} +// +// +//task testUtilsJavadoc(type: Javadoc) { +// // This is a hack to disable the java 8 default javadoc lint until we fix the html formatting +// // We only want to do this for the javadoc task, not gatkDoc +// options.addStringOption('Xdoclint:none', '-quiet') +// source = sourceSets.testUtils.allJava +// classpath = sourceSets.testUtils.runtimeClasspath +// destinationDir = file("$docBuildDir/testUtilsJavadoc") +// include '**/*.java' +//} +// +//task testUtilsJavadocJar(type: Jar, dependsOn: testUtilsJavadoc){ +// archiveBaseName = "$project.name-test-utils" +// archiveClassifier = 'javadoc' +// from "$docBuildDir/testUtilsJavadoc" +//} task testUtilsSourcesJar(type: Jar){ archiveBaseName = "$project.name-test-utils" @@ -657,244 +777,244 @@ task testUtilsSourcesJar(type: Jar){ } // Generate GATK Online Doc -task gatkDoc(type: Javadoc, dependsOn: classes) { - final File gatkDocDir = new File("$docBuildDir/gatkdoc") - doFirst { - // make sure the output folder exists or we can create it - if (!gatkDocDir.exists() && !gatkDocDir.mkdirs()) { - throw new GradleException(String.format("Failure creating folder (%s) for GATK doc output in task (%s)", - gatkDocDir.getAbsolutePath(), - it.name)); - } - copy { - from('src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates') - include 'gatkDoc.css' - into gatkDocDir - } - } - // Include the Picard source jar, which contains various .R, .sh, .css, .html, .xml and .MF files and - // other resources, but we only want the files that javadoc can handle, so just take the .java files. - source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) - include '**/*.java' - - // The gatkDoc process instantiates any documented feature classes, so to run it we need the entire - // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives. - classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles - options.docletpath = classpath.asType(List) - options.doclet = "org.broadinstitute.hellbender.utils.help.GATKHelpDoclet" - - //gradle 6.x+ defaults to setting this true which breaks the barclay doclet - options.noTimestamp(false) - - outputs.dir(gatkDocDir) - options.destinationDirectory(gatkDocDir) - - options.addStringOption("settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates"); - if (project.hasProperty('phpDoc')) { - // use -PphpDoc to generate .php file extensions, otherwise rely on default of .html - final String phpExtension = "php" - options.addStringOption("output-file-extension", phpExtension) - options.addStringOption("index-file-extension", phpExtension) - } - options.addStringOption("absolute-version", getVersion()) - options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) -} - -// Generate GATK Bash Tab Completion File -task gatkTabComplete(type: Javadoc, dependsOn: classes) { - final File tabCompletionDir = new File("$docBuildDir/tabCompletion") - doFirst { - // make sure the output folder exists or we can create it - if (!tabCompletionDir.exists() && !tabCompletionDir.mkdirs()) { - throw new GradleException(String.format("Failure creating folder (%s) for GATK tab completion output in task (%s)", - tabCompletionDir.getAbsolutePath(), - it.name)); - } - } - // Include the Picard source jar, which contains various .R, .sh, .css, .html, .xml and .MF files and - // other resources, but we only want the files that javadoc can handle, so just take the .java files. - source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) - include '**/*.java' - - // The gatkDoc process instantiates any documented feature classes, so to run it we need the entire - // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives, and Picard. - classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles - - options.docletpath = classpath.asType(List) - options.doclet = "org.broadinstitute.barclay.help.BashTabCompletionDoclet" - - //gradle 6.x+ defaults to setting this true which breaks the barclay doclet - options.noTimestamp(false) - - outputs.dir(tabCompletionDir) - options.destinationDirectory(tabCompletionDir) - - // This is a hack to work around a gross Gradle bug: - options.addStringOption('use-default-templates', '-use-default-templates') - - options.addStringOption("output-file-extension", "sh") - options.addStringOption("index-file-extension", "sh") - options.addStringOption("absolute-version", getVersion()) - options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) - - options.addStringOption("caller-script-name", "gatk") - - options.addStringOption("caller-pre-legal-args", "--help --list --dry-run --java-options") - options.addStringOption("caller-pre-arg-val-types", "null null null String") - options.addStringOption("caller-pre-mutex-args", "--help;list,dry-run,java-options --list;help,dry-run,java-options") - options.addStringOption("caller-pre-alias-args", "--help;-h") - options.addStringOption("caller-pre-arg-min-occurs", "0 0 0 0") - options.addStringOption("caller-pre-arg-max-occurs", "1 1 1 1") - - options.addStringOption("caller-post-legal-args", "--spark-runner --spark-master --cluster --dry-run --java-options --conf --driver-memory --driver-cores --executor-memory --executor-cores --num-executors") - options.addStringOption("caller-post-arg-val-types", "String String String null String file int int int int int") - options.addStringOption("caller-post-mutex-args", "") - options.addStringOption("caller-post-alias-args", "") - options.addStringOption("caller-post-arg-min-occurs", "0 0 0 0 0 0 0 0 0 0") - options.addStringOption("caller-post-arg-max-occurs", "1 1 1 1 1 1 1 1 1 1") -} - -def getWDLInputJSONTestFileNameFromWDLName(File wdlName) { - String fileWithoutExt = wdlName.name.take(wdlName.name.lastIndexOf('.')) - return new File (wdlName.getParentFile(), fileWithoutExt + "Inputs.json").getAbsolutePath() -} +//task gatkDoc(type: Javadoc, dependsOn: classes) { +// final File gatkDocDir = new File("$docBuildDir/gatkdoc") +// doFirst { +// // make sure the output folder exists or we can create it +// if (!gatkDocDir.exists() && !gatkDocDir.mkdirs()) { +// throw new GradleException(String.format("Failure creating folder (%s) for GATK doc output in task (%s)", +// gatkDocDir.getAbsolutePath(), +// it.name)); +// } +// copy { +// from('src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates') +// include 'gatkDoc.css' +// into gatkDocDir +// } +// } +// // Include the Picard source jar, which contains various .R, .sh, .css, .html, .xml and .MF files and +// // other resources, but we only want the files that javadoc can handle, so just take the .java files. +// source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) +// include '**/*.java' +// +// // The gatkDoc process instantiates any documented feature classes, so to run it we need the entire +// // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives. +// classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles +// options.docletpath = classpath.asType(List) +// options.doclet = "org.broadinstitute.hellbender.utils.help.GATKHelpDoclet" +// +// //gradle 6.x+ defaults to setting this true which breaks the barclay doclet +// options.noTimestamp(false) +// +// outputs.dir(gatkDocDir) +// options.destinationDirectory(gatkDocDir) +// +// options.addStringOption("settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates"); +// if (project.hasProperty('phpDoc')) { +// // use -PphpDoc to generate .php file extensions, otherwise rely on default of .html +// final String phpExtension = "php" +// options.addStringOption("output-file-extension", phpExtension) +// options.addStringOption("index-file-extension", phpExtension) +// } +// options.addStringOption("absolute-version", getVersion()) +// options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) +//} +// +//// Generate GATK Bash Tab Completion File +//task gatkTabComplete(type: Javadoc, dependsOn: classes) { +// final File tabCompletionDir = new File("$docBuildDir/tabCompletion") +// doFirst { +// // make sure the output folder exists or we can create it +// if (!tabCompletionDir.exists() && !tabCompletionDir.mkdirs()) { +// throw new GradleException(String.format("Failure creating folder (%s) for GATK tab completion output in task (%s)", +// tabCompletionDir.getAbsolutePath(), +// it.name)); +// } +// } +// // Include the Picard source jar, which contains various .R, .sh, .css, .html, .xml and .MF files and +// // other resources, but we only want the files that javadoc can handle, so just take the .java files. +// source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) +// include '**/*.java' +// +// // The gatkDoc process instantiates any documented feature classes, so to run it we need the entire +// // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives, and Picard. +// classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles +// +// options.docletpath = classpath.asType(List) +// options.doclet = "org.broadinstitute.barclay.help.BashTabCompletionDoclet" +// +// //gradle 6.x+ defaults to setting this true which breaks the barclay doclet +// options.noTimestamp(false) +// +// outputs.dir(tabCompletionDir) +// options.destinationDirectory(tabCompletionDir) +// +// // This is a hack to work around a gross Gradle bug: +// options.addStringOption('use-default-templates', '-use-default-templates') +// +// options.addStringOption("output-file-extension", "sh") +// options.addStringOption("index-file-extension", "sh") +// options.addStringOption("absolute-version", getVersion()) +// options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) +// +// options.addStringOption("caller-script-name", "gatk") +// +// options.addStringOption("caller-pre-legal-args", "--help --list --dry-run --java-options") +// options.addStringOption("caller-pre-arg-val-types", "null null null String") +// options.addStringOption("caller-pre-mutex-args", "--help;list,dry-run,java-options --list;help,dry-run,java-options") +// options.addStringOption("caller-pre-alias-args", "--help;-h") +// options.addStringOption("caller-pre-arg-min-occurs", "0 0 0 0") +// options.addStringOption("caller-pre-arg-max-occurs", "1 1 1 1") +// +// options.addStringOption("caller-post-legal-args", "--spark-runner --spark-master --cluster --dry-run --java-options --conf --driver-memory --driver-cores --executor-memory --executor-cores --num-executors") +// options.addStringOption("caller-post-arg-val-types", "String String String null String file int int int int int") +// options.addStringOption("caller-post-mutex-args", "") +// options.addStringOption("caller-post-alias-args", "") +// options.addStringOption("caller-post-arg-min-occurs", "0 0 0 0 0 0 0 0 0 0") +// options.addStringOption("caller-post-arg-max-occurs", "1 1 1 1 1 1 1 1 1 1") +//} +// +//def getWDLInputJSONTestFileNameFromWDLName(File wdlName) { +// String fileWithoutExt = wdlName.name.take(wdlName.name.lastIndexOf('.')) +// return new File (wdlName.getParentFile(), fileWithoutExt + "Inputs.json").getAbsolutePath() +//} // Generate GATK Tool WDL -task gatkWDLGen(type: Javadoc, dependsOn: classes) { - final File gatkWDLDir = new File("$docBuildDir/wdlGen") - outputs.dir(gatkWDLDir) - doFirst { - // make sure the output folder exists or we can create it - if (!gatkWDLDir.exists() && !gatkWDLDir.mkdirs()) { - throw new GradleException(String.format("Failure creating folder (%s) for GATK WDL output in task (%s)", - gatkWDLDir.getAbsolutePath(), - it.name)); - } - copy { - from('src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates/common.html') - into gatkWDLDir - } - } - source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) - include '**/*.java' - - // The gatkWDLGen process instantiates any documented feature classes, so to run it we need the entire - // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives. - classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles - options.docletpath = classpath.asType(List) - options.doclet = "org.broadinstitute.hellbender.utils.help.GATKWDLDoclet" - - //gradle 6.x+ defaults to setting this true which breaks the barclay doclet - options.noTimestamp(false) - - outputs.dir(gatkWDLDir) - options.destinationDirectory(gatkWDLDir) - - options.addStringOption("settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates"); - options.addStringOption("output-file-extension", "wdl") - options.addStringOption("index-file-extension", "html") - - options.addStringOption("absolute-version", getVersion()) - options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) - - // the wdl doclet will populate the test JSON input files with the name of a dummy - // file in this location, in order to satisfy cromwell's attempts to localize inputs and outputs - options.addStringOption("build-dir", System.getenv("TRAVIS_BUILD_DIR") ?: new File(".").getAbsolutePath()) -} - -def execWDLValidation = { validateWDL -> - println "Executing: $validateWDL" - try { - def retCode = validateWDL.execute().waitFor() - if (retCode.intValue() != 0) { - throw new GradleException("Execution of \"$validateWDL\" failed with exit code: $retCode.") - } - return retCode - } catch (IOException e) { - throw new GradleException("An IOException occurred while attempting to execute the command $validateWDL.") - } -} - -task gatkValidateScriptsWdl() { - doFirst { - // running this task requires a local cromwell installation, with environment variables CROMWELL_JAR, - // WOMTOOL_JAR set to the jar locations - if (System.getenv('CROMWELL_JAR') == null || System.getenv('WOMTOOL_JAR') == null) { - throw new GradleException("Running this task requires the CROMWELL_JAR and WOMTOOL_JAR environment variables to be set") - } - } - - doLast { - // Run the womtool validator on all WDL files in the 'scripts' directory - final File wdlFolder = new File("scripts") - def wdlFiles = fileTree(dir: wdlFolder).filter { - f -> f.getAbsolutePath().endsWith(".wdl") - } - final womtoolLocation = System.getenv('WOMTOOL_JAR') - wdlFiles.any() { wdlFile -> - final validateWDLCommand = "java -jar $womtoolLocation validate $wdlFile" - execWDLValidation(validateWDLCommand) - } - } -} - -task gatkValidateGeneratedWdl(dependsOn: [gatkWDLGen, shadowJar]) { - doFirst { - // running this task requires a local cromwell installation, with environment variables CROMWELL_JAR, - // WOMTOOL_JAR set to the jar locations - if (System.getenv('CROMWELL_JAR') == null || System.getenv('WOMTOOL_JAR') == null) { - throw new GradleException("Running this task requires the CROMWELL_JAR and WOMTOOL_JAR environment variables to be set") - } - } - - doLast { - // first, run the womtool validator on WDL files in the 'docs/wdlGen' directory - final File wdlGenFolder = new File("$docBuildDir/wdlGen") - def wdlFiles = fileTree(dir: wdlGenFolder).filter { - f -> !f.getAbsolutePath().endsWith(".html") && !f.getAbsolutePath().endsWith(".json") - } - final womtoolLocation = System.getenv('WOMTOOL_JAR') - wdlFiles.any() { wdlFile -> - final validateWDLCommand = "java -jar $womtoolLocation validate $wdlFile" - execWDLValidation(validateWDLCommand) - } - - // now execute the *AllArgs test wdls using cromwell - wdlFiles = fileTree(dir: wdlGenFolder).filter { - f -> f.getAbsolutePath().endsWith("AllArgsTest.wdl") - } - - // the test JSON input file is populated by the WDL gen process with the name of this dummy file - // to satisfy cromwell's attempt to de/localize input/output files - def buildDir = System.getenv("TRAVIS_BUILD_DIR") ?: new File(".").getAbsolutePath() - final dummyWDLTestFileName = "$buildDir/dummyWDLTestFile" - final File dummyWDLTestFile = file(dummyWDLTestFileName) - final cromwellLocation = System.getenv('CROMWELL_JAR') - try { - wdlFiles.any() { wdlFile -> - final testInputJSON = getWDLInputJSONTestFileNameFromWDLName(wdlFile) - final runWDLCommand = "java -jar $cromwellLocation run --inputs $testInputJSON $wdlFile" - execWDLValidation("touch $dummyWDLTestFileName") - execWDLValidation(runWDLCommand) - } - } finally { - // delete the dummy test file and the 'cromwell-executions' directory left behind by cromwell - dummyWDLTestFile.delete() - file("$buildDir/cromwell-executions").deleteDir() - file("$buildDir/cromwell-workflow-logs").deleteDir() - } - } -} +//task gatkWDLGen(type: Javadoc, dependsOn: classes) { +// final File gatkWDLDir = new File("$docBuildDir/wdlGen") +// outputs.dir(gatkWDLDir) +// doFirst { +// // make sure the output folder exists or we can create it +// if (!gatkWDLDir.exists() && !gatkWDLDir.mkdirs()) { +// throw new GradleException(String.format("Failure creating folder (%s) for GATK WDL output in task (%s)", +// gatkWDLDir.getAbsolutePath(), +// it.name)); +// } +// copy { +// from('src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates/common.html') +// into gatkWDLDir +// } +// } +// source = sourceSets.main.allJava + files(configurations.externalSourceConfiguration.collect { zipTree(it) }) +// include '**/*.java' +// +// // The gatkWDLGen process instantiates any documented feature classes, so to run it we need the entire +// // runtime classpath, as well as jdk javadoc files such as tools.jar, where com.sun.javadoc lives. +// classpath = sourceSets.main.runtimeClasspath + javadocJDKFiles +// options.docletpath = classpath.asType(List) +// options.doclet = "org.broadinstitute.hellbender.utils.help.GATKWDLDoclet" +// +// //gradle 6.x+ defaults to setting this true which breaks the barclay doclet +// options.noTimestamp(false) +// +// outputs.dir(gatkWDLDir) +// options.destinationDirectory(gatkWDLDir) +// +// options.addStringOption("settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates"); +// options.addStringOption("output-file-extension", "wdl") +// options.addStringOption("index-file-extension", "html") +// +// options.addStringOption("absolute-version", getVersion()) +// options.addStringOption("build-timestamp", ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)) +// +// // the wdl doclet will populate the test JSON input files with the name of a dummy +// // file in this location, in order to satisfy cromwell's attempts to localize inputs and outputs +// options.addStringOption("build-dir", System.getenv("TRAVIS_BUILD_DIR") ?: new File(".").getAbsolutePath()) +//} +// +//def execWDLValidation = { validateWDL -> +// println "Executing: $validateWDL" +// try { +// def retCode = validateWDL.execute().waitFor() +// if (retCode.intValue() != 0) { +// throw new GradleException("Execution of \"$validateWDL\" failed with exit code: $retCode.") +// } +// return retCode +// } catch (IOException e) { +// throw new GradleException("An IOException occurred while attempting to execute the command $validateWDL.") +// } +//} +// +//task gatkValidateScriptsWdl() { +// doFirst { +// // running this task requires a local cromwell installation, with environment variables CROMWELL_JAR, +// // WOMTOOL_JAR set to the jar locations +// if (System.getenv('CROMWELL_JAR') == null || System.getenv('WOMTOOL_JAR') == null) { +// throw new GradleException("Running this task requires the CROMWELL_JAR and WOMTOOL_JAR environment variables to be set") +// } +// } +// +// doLast { +// // Run the womtool validator on all WDL files in the 'scripts' directory +// final File wdlFolder = new File("scripts") +// def wdlFiles = fileTree(dir: wdlFolder).filter { +// f -> f.getAbsolutePath().endsWith(".wdl") +// } +// final womtoolLocation = System.getenv('WOMTOOL_JAR') +// wdlFiles.any() { wdlFile -> +// final validateWDLCommand = "java -jar $womtoolLocation validate $wdlFile" +// execWDLValidation(validateWDLCommand) +// } +// } +//} +// +//task gatkValidateGeneratedWdl(dependsOn: [gatkWDLGen, shadowJar]) { +// doFirst { +// // running this task requires a local cromwell installation, with environment variables CROMWELL_JAR, +// // WOMTOOL_JAR set to the jar locations +// if (System.getenv('CROMWELL_JAR') == null || System.getenv('WOMTOOL_JAR') == null) { +// throw new GradleException("Running this task requires the CROMWELL_JAR and WOMTOOL_JAR environment variables to be set") +// } +// } +// +// doLast { +// // first, run the womtool validator on WDL files in the 'docs/wdlGen' directory +// final File wdlGenFolder = new File("$docBuildDir/wdlGen") +// def wdlFiles = fileTree(dir: wdlGenFolder).filter { +// f -> !f.getAbsolutePath().endsWith(".html") && !f.getAbsolutePath().endsWith(".json") +// } +// final womtoolLocation = System.getenv('WOMTOOL_JAR') +// wdlFiles.any() { wdlFile -> +// final validateWDLCommand = "java -jar $womtoolLocation validate $wdlFile" +// execWDLValidation(validateWDLCommand) +// } +// +// // now execute the *AllArgs test wdls using cromwell +// wdlFiles = fileTree(dir: wdlGenFolder).filter { +// f -> f.getAbsolutePath().endsWith("AllArgsTest.wdl") +// } +// +// // the test JSON input file is populated by the WDL gen process with the name of this dummy file +// // to satisfy cromwell's attempt to de/localize input/output files +// def buildDir = System.getenv("TRAVIS_BUILD_DIR") ?: new File(".").getAbsolutePath() +// final dummyWDLTestFileName = "$buildDir/dummyWDLTestFile" +// final File dummyWDLTestFile = file(dummyWDLTestFileName) +// final cromwellLocation = System.getenv('CROMWELL_JAR') +// try { +// wdlFiles.any() { wdlFile -> +// final testInputJSON = getWDLInputJSONTestFileNameFromWDLName(wdlFile) +// final runWDLCommand = "java -jar $cromwellLocation run --inputs $testInputJSON $wdlFile" +// execWDLValidation("touch $dummyWDLTestFileName") +// execWDLValidation(runWDLCommand) +// } +// } finally { +// // delete the dummy test file and the 'cromwell-executions' directory left behind by cromwell +// dummyWDLTestFile.delete() +// file("$buildDir/cromwell-executions").deleteDir() +// file("$buildDir/cromwell-workflow-logs").deleteDir() +// } +// } +//} /** *This specifies what artifacts will be built and uploaded when performing a maven upload. */ artifacts { - archives javadocJar + //archives javadocJar archives sourcesJar archives testUtilsJar - archives testUtilsJavadocJar + //archives testUtilsJavadocJar archives testUtilsSourcesJar } @@ -963,7 +1083,7 @@ publishing { artifact testUtilsJar artifact testUtilsSourcesJar - artifact testUtilsJavadocJar + //artifact testUtilsJavadocJar } } diff --git a/gatk b/gatk index 45559912047..6d515be8acb 100755 --- a/gatk +++ b/gatk @@ -37,12 +37,120 @@ EXTRA_JAVA_OPTIONS_SPARK= "-DGATK_STACKTRACE_ON_USER_EXCEPTION=true " \ "-Dsamjdk.use_async_io_read_samtools=false " \ "-Dsamjdk.use_async_io_write_samtools=false " \ "-Dsamjdk.use_async_io_write_tribble=false " \ - "-Dsamjdk.compression_level=2 " - -PACKAGED_LOCAL_JAR_OPTIONS= ["-Dsamjdk.use_async_io_read_samtools=false", + "-Dsamjdk.compression_level=2 " \ + "--add-opens", "java.base/java.lang=ALL-UNNAMED " \ + "--add-opens", "java.base/java.lang.invoke=ALL-UNNAMED " \ + "--add-opens", "java.base/java.lang.reflect=ALL-UNNAMED " \ + "--add-opens", "java.base/java.io=ALL-UNNAMED " \ + "--add-opens", "java.base/java.net=ALL-UNNAMED " \ + "--add-opens", "java.base/java.nio=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.concurrent=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.concurrent.atomic=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.nio.ch=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.nio.cs=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.security.action=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.util.calendar=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.nio.fs=ALL-UNNAMED " \ + "--add-opens", "java.base/java.nio.channels.spi=ALL-UNNAMED " \ + "--add-opens", "java.base/jdk.internal.ref=ALL-UNNAMED " \ + "--add-opens", "java.base/java.lang.ref=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.zip=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.jar=ALL-UNNAMED " \ + "--add-opens", "java.base/java.nio.file.attribute=ALL-UNNAMED " \ + "--add-opens", "java.base/jdk.internal.loader=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.net.www.protocol.jar=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.invoke.util=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.concurrent.locks=ALL-UNNAMED " \ + "--add-opens", "java.base/java.security=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.reflect.annotation=ALL-UNNAMED " \ + "--add-opens", "java.base/java.text=ALL-UNNAMED " \ + "--add-opens", "java.base/java.nio.charset=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED " \ + "--add-opens", "java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED " \ + "--add-opens", "java.management/javax.management=ALL-UNNAMED " \ + "--add-opens", "java.base/java.util.regex=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.util.locale=ALL-UNNAMED " \ + "--add-opens", "java.base/jdk.internal.math=ALL-UNNAMED " \ + "--add-opens", "java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED " \ + "--add-opens", "java.base/java.time=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.reflect.generics.factory=ALL-UNNAMED' " \ + "--add-opens", "java.base/java.nio.channels=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.security.util=ALL-UNNAMED " \ + "--add-opens", "java.base/java.time.zone=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.reflect.generics.scope=ALL-UNNAMED " \ + "--add-opens", "java.base/sun.reflect.generics.tree=ALL-UNNAMED " \ + "--add-opens", "java.management/com.sun.jmx.interceptor=ALL-UNNAMED " \ + "--add-opens", "java.management/javax.management.openmbean=ALL-UNNAMED " \ + "--add-opens", "java.management/sun.management=ALL-UNNAMED " \ + "--add-opens", "jdk.management/com.sun.management.internal=ALL-UNNAMED " \ + "--add-opens", "jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED " \ + "--add-opens", "jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED " \ + "--add-opens", "java.base/jdk.internal.module=ALL-UNNAMED " \ + "--add-opens", "java.base/java.lang.module=ALL-UNNAMED " \ + "--add-opens", "java.security.jgss/sun.security.krb5=ALL-UNNAMED " \ + "--add-opens", "java.prefs/java.util.prefs=ALL-UNNAMED " \ + "-Dio.netty.tryReflectionSetAccessible=true" + +PACKAGED_LOCAL_JAR_OPTIONS= [ + "-Dsamjdk.use_async_io_read_samtools=false", "-Dsamjdk.use_async_io_write_samtools=true", "-Dsamjdk.use_async_io_write_tribble=false", - "-Dsamjdk.compression_level=2"] + "-Dsamjdk.compression_level=2", + "--add-opens", "java.base/java.lang=ALL-UNNAMED", + "--add-opens", "java.base/java.lang.invoke=ALL-UNNAMED", + "--add-opens", "java.base/java.lang.reflect=ALL-UNNAMED", + "--add-opens", "java.base/java.io=ALL-UNNAMED", + "--add-opens", "java.base/java.net=ALL-UNNAMED", + "--add-opens", "java.base/java.nio=ALL-UNNAMED", + "--add-opens", "java.base/java.util=ALL-UNNAMED", + "--add-opens", "java.base/java.util.concurrent=ALL-UNNAMED", + "--add-opens", "java.base/java.util.concurrent.atomic=ALL-UNNAMED ", + "--add-opens", "java.base/sun.nio.ch=ALL-UNNAMED", + "--add-opens", "java.base/sun.nio.cs=ALL-UNNAMED", + "--add-opens", "java.base/sun.security.action=ALL-UNNAMED", + "--add-opens", "java.base/sun.util.calendar=ALL-UNNAMED", + "--add-opens", "java.base/sun.nio.fs=ALL-UNNAMED", + "--add-opens", "java.base/java.nio.channels.spi=ALL-UNNAMED", + "--add-opens", "java.base/jdk.internal.ref=ALL-UNNAMED", + "--add-opens", "java.base/java.lang.ref=ALL-UNNAMED", + "--add-opens", "java.base/java.util.zip=ALL-UNNAMED", + "--add-opens", "java.base/java.util.jar=ALL-UNNAMED", + "--add-opens", "java.base/java.nio.file.attribute=ALL-UNNAMED", + "--add-opens", "java.base/jdk.internal.loader=ALL-UNNAMED", + "--add-opens", "java.base/sun.net.www.protocol.jar=ALL-UNNAMED", + "--add-opens", "java.base/sun.invoke.util=ALL-UNNAMED", + "--add-opens", "java.base/java.util.concurrent.locks=ALL-UNNAMED", + "--add-opens", "java.base/java.security=ALL-UNNAMED", + "--add-opens", "java.base/sun.reflect.annotation=ALL-UNNAMED", + "--add-opens", "java.base/java.text=ALL-UNNAMED", + "--add-opens", "java.base/java.nio.charset=ALL-UNNAMED", + "--add-opens", "java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED", + "--add-opens", "java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED", + "--add-opens", "java.management/javax.management=ALL-UNNAMED", + "--add-opens", "java.base/java.util.regex=ALL-UNNAMED", + "--add-opens", "java.base/sun.util.locale=ALL-UNNAMED", + "--add-opens", "java.base/jdk.internal.math=ALL-UNNAMED", + "--add-opens", "java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED", + "--add-opens", "java.base/java.time=ALL-UNNAMED", + "--add-opens", "java.base/sun.reflect.generics.factory=ALL-UNNAMED", + "--add-opens", "java.base/java.nio.channels=ALL-UNNAMED", + "--add-opens", "java.base/sun.security.util=ALL-UNNAMED", + "--add-opens", "java.base/java.time.zone=ALL-UNNAMED", + "--add-opens", "java.base/sun.reflect.generics.scope=ALL-UNNAMED", + "--add-opens", "java.base/sun.reflect.generics.tree=ALL-UNNAMED", + "--add-opens", "java.management/com.sun.jmx.interceptor=ALL-UNNAMED", + "--add-opens", "java.management/javax.management.openmbean=ALL-UNNAMED", + "--add-opens", "java.management/sun.management=ALL-UNNAMED", + "--add-opens", "jdk.management/com.sun.management.internal=ALL-UNNAMED", + "--add-opens", "jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED", + "--add-opens", "jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED", + "--add-opens", "java.base/jdk.internal.module=ALL-UNNAMED", + "--add-opens", "java.base/java.lang.module=ALL-UNNAMED", + "--add-opens", "java.security.jgss/sun.security.krb5=ALL-UNNAMED", + "--add-opens", "java.prefs/java.util.prefs=ALL-UNNAMED", + "-Dio.netty.tryReflectionSetAccessible=true" +] DEFAULT_SPARK_ARGS_PREFIX = '--conf' DEFAULT_SPARK_ARGS = { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 20926 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 i_W%EDg1>@4`_NK(#)z|gdCiK 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d2880ba8000..ae04661ee73 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c811..1b6c787337f 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/scripts/docker/dockertest.gradle b/scripts/docker/dockertest.gradle index 3623dc18b52..bf21192493f 100644 --- a/scripts/docker/dockertest.gradle +++ b/scripts/docker/dockertest.gradle @@ -36,9 +36,130 @@ task unpackTestJar(type: Copy){ } } +test { + jvmArgs = [ + '--add-opens', 'java.base/java.lang=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens', 'java.base/java.io=ALL-UNNAMED', + '--add-opens', 'java.base/java.net=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio=ALL-UNNAMED', + '--add-opens', 'java.base/java.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.atomic=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.cs=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.action=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.fs=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED', + + // required for tests + '--add-opens', 'java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.zip=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.jar=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.file.attribute=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED', + '--add-opens', 'java.base/sun.net.www.protocol.jar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.invoke.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.locks=ALL-UNNAMED', + '--add-opens', 'java.base/java.security=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.annotation=ALL-UNNAMED', + '--add-opens', 'java.base/java.text=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.regex=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.locale=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.math=ALL-UNNAMED', + '--add-opens', 'java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.factory=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time.zone=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.scope=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.tree=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.interceptor=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management.openmbean=ALL-UNNAMED', + '--add-opens', 'java.management/sun.management=ALL-UNNAMED', + '--add-opens', 'jdk.management/com.sun.management.internal=ALL-UNNAMED', + '--add-opens', 'jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED', + '--add-opens', 'jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.module=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED', + '--add-opens', 'java.prefs/java.util.prefs=ALL-UNNAMED', // jacoco + + '-Dio.netty.tryReflectionSetAccessible=true' + ] + jacoco { + jvmArgs = [ + '--add-opens', 'java.base/java.lang=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens', 'java.base/java.io=ALL-UNNAMED', + '--add-opens', 'java.base/java.net=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio=ALL-UNNAMED', + '--add-opens', 'java.base/java.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.atomic=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.cs=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.action=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.fs=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED', + + // required for tests + '--add-opens', 'java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.zip=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.jar=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.file.attribute=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED', + '--add-opens', 'java.base/sun.net.www.protocol.jar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.invoke.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.locks=ALL-UNNAMED', + '--add-opens', 'java.base/java.security=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.annotation=ALL-UNNAMED', + '--add-opens', 'java.base/java.text=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED', + '--add-opens', 'java.base/javax.management=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.regex=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.locale=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.math=ALL-UNNAMED', + '--add-opens', 'java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.factory=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time.zone=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.scope=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.tree=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.interceptor=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management.openmbean=ALL-UNNAMED', + '--add-opens', 'java.management/sun.management=ALL-UNNAMED', + '--add-opens', 'jdk.management/com.sun.management.internal=ALL-UNNAMED', + '--add-opens', 'jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED', + '--add-opens', 'jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.module=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED', + '--add-opens', 'java.prefs/java.util.prefs=ALL-UNNAMED', // jacoco + + '-Dio.netty.tryReflectionSetAccessible=true' + ] + } +} + task testOnPackagedReleaseJar(type: Test){ String testClassesJar = "$System.env.TEST_JAR" + String testDependencyJar = "$System.env.TEST_DEPENDENCY_JAR" + String gatkJar = "$System.env.GATK_JAR" String testClassesUnpacked = "$System.env.CP_DIR" @@ -60,7 +181,64 @@ task testOnPackagedReleaseJar(type: Test){ classpath.each {println it} } - classpath = files( gatkJar, testDependencyJar, testClassesJar) + jvmArgs = [ + '--add-opens', 'java.base/java.lang=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.invoke=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens', 'java.base/java.io=ALL-UNNAMED', + '--add-opens', 'java.base/java.net=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio=ALL-UNNAMED', + '--add-opens', 'java.base/java.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.atomic=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.ch=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.cs=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.action=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.calendar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.nio.fs=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels.spi=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.ref=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.zip=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.jar=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.file.attribute=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED', + '--add-opens', 'java.base/sun.net.www.protocol.jar=ALL-UNNAMED', + '--add-opens', 'java.base/sun.invoke.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.concurrent.locks=ALL-UNNAMED', + '--add-opens', 'java.base/java.security=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.annotation=ALL-UNNAMED', + '--add-opens', 'java.base/java.text=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.charset=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management=ALL-UNNAMED', + '--add-opens', 'java.base/java.util.regex=ALL-UNNAMED', + '--add-opens', 'java.base/sun.util.locale=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.math=ALL-UNNAMED', + '--add-opens', 'java.xml/com.sun.xml.internal.stream.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.factory=ALL-UNNAMED', + '--add-opens', 'java.base/java.nio.channels=ALL-UNNAMED', + '--add-opens', 'java.base/sun.security.util=ALL-UNNAMED', + '--add-opens', 'java.base/java.time.zone=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.scope=ALL-UNNAMED', + '--add-opens', 'java.base/sun.reflect.generics.tree=ALL-UNNAMED', + '--add-opens', 'java.management/com.sun.jmx.interceptor=ALL-UNNAMED', + '--add-opens', 'java.management/javax.management.openmbean=ALL-UNNAMED', + '--add-opens', 'java.management/sun.management=ALL-UNNAMED', + '--add-opens', 'jdk.management/com.sun.management.internal=ALL-UNNAMED', + '--add-opens', 'jdk.management.jfr/jdk.management.jfr=ALL-UNNAMED', + '--add-opens', 'jdk.jfr/jdk.jfr.internal.management=ALL-UNNAMED', + '--add-opens', 'java.base/jdk.internal.module=ALL-UNNAMED', + '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED', + '--add-opens', 'java.security.jgss/sun.security.krb5=ALL-UNNAMED', + '--add-opens', 'java.prefs/java.util.prefs=ALL-UNNAMED', // jacoco + + '-Dio.netty.tryReflectionSetAccessible=true' + ] + + classpath = files( gatkJar, testClassesJar, testDependencyJar) testClassesDirs = files(testClassesUnpacked) } diff --git a/scripts/vcf_site_level_filtering_cromwell_tests/run_vcf_site_level_filtering_wdl.sh b/scripts/vcf_site_level_filtering_cromwell_tests/run_vcf_site_level_filtering_wdl.sh index 1c19d18c3b6..d726678360b 100644 --- a/scripts/vcf_site_level_filtering_cromwell_tests/run_vcf_site_level_filtering_wdl.sh +++ b/scripts/vcf_site_level_filtering_cromwell_tests/run_vcf_site_level_filtering_wdl.sh @@ -35,4 +35,4 @@ echo "==================" echo "Running Filtering WDL through cromwell" ln -fs $WORKING_DIR/gatk/scripts/vcf_site_level_filtering_wdl/JointVcfFiltering.wdl cd $WORKING_DIR/gatk/scripts/vcf_site_level_filtering_wdl/ -java -jar $CROMWELL_JAR run JointVcfFiltering.wdl -i $WORKING_DIR/vcf_site_level_filtering_travis.json +java -DLOG_LEVEL=TRACE -jar $CROMWELL_JAR run JointVcfFiltering.wdl -i $WORKING_DIR/vcf_site_level_filtering_travis.json diff --git a/src/main/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptor.java b/src/main/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptor.java index c03be1fbc76..aa7e467b62e 100644 --- a/src/main/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptor.java +++ b/src/main/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptor.java @@ -11,12 +11,15 @@ import org.broadinstitute.hellbender.exceptions.GATKException; import org.broadinstitute.hellbender.tools.walkers.annotator.Annotation; import org.broadinstitute.hellbender.tools.walkers.annotator.PedigreeAnnotation; +import org.broadinstitute.hellbender.utils.SerializableConsumer; +import org.broadinstitute.hellbender.utils.SerializableFunction; +import org.broadinstitute.hellbender.utils.SerializablePredicate; import org.broadinstitute.hellbender.tools.walkers.annotator.flow.FlowAnnotatorBase; import org.broadinstitute.hellbender.utils.Utils; import org.broadinstitute.hellbender.utils.config.ConfigFactory; import org.broadinstitute.hellbender.utils.config.GATKConfig; -import java.io.File; +import java.io.Serializable; import java.lang.reflect.Modifier; import java.util.*; import java.util.stream.Collectors; @@ -36,7 +39,9 @@ * NOTE: this class enforces that annotations with required arguments must see their arguments, yet this is not currently tested * as no such annotations exist in the GATK. */ -public class GATKAnnotationPluginDescriptor extends CommandLinePluginDescriptor { +public class GATKAnnotationPluginDescriptor extends CommandLinePluginDescriptor implements Serializable { + private static final long serialVersionUID = 1L; + /** * At startup, set the plugin package name to the one(s) in the configuration file. */ @@ -116,7 +121,7 @@ public List getPackageNames() { public GATKAnnotationPluginDescriptor(final GATKAnnotationArgumentCollection userArgs, final List toolDefaultAnnotations, final List> toolDefaultGroups) { this.userArgs = userArgs; if (null != toolDefaultAnnotations) { - toolDefaultAnnotations.forEach(f -> { + toolDefaultAnnotations.forEach((SerializableConsumer) (f -> { final Class annotClass = f.getClass(); // anonymous classes have a 0-length simple name, and thus cannot be accessed or // controlled by the user via the command line, but they should still be valid @@ -128,15 +133,16 @@ public GATKAnnotationPluginDescriptor(final GATKAnnotationArgumentCollection use } populateAnnotationGroups(className, f); this.toolDefaultAnnotations.put(className, f); - }); + })); } if (null != toolDefaultGroups) { - toolDefaultGroups.forEach(a -> {if (a.isInterface() && a!=Annotation.class) { - this.toolDefaultGroups.add(a.getSimpleName()); - } else { - throw new GATKException(String.format("Tool specified annotation group %s is not a valid annotation group, must be an interface extending Annotation", a.getSimpleName())); - } - }); + toolDefaultGroups.forEach((SerializableConsumer>) (a -> { + if (a.isInterface() && a!=Annotation.class) { + this.toolDefaultGroups.add(a.getSimpleName()); + } else { + throw new GATKException(String.format("Tool specified annotation group %s is not a valid annotation group, must be an interface extending Annotation", a.getSimpleName())); + } + })); } } /** @@ -257,7 +263,9 @@ public Set getAllowedValuesForDescriptorHelp(String longArgName) { return allDiscoveredAnnotations.keySet(); } if (longArgName.equals(StandardArgumentDefinitions.ANNOTATIONS_TO_EXCLUDE_LONG_NAME)) { - Set annotations = toolDefaultGroups.stream().map(k -> discoveredGroups.get(k).keySet()).flatMap(Collection::stream).collect(Collectors.toSet()); + Set annotations = toolDefaultGroups.stream().map( + k -> discoveredGroups.get(k).keySet()) + .flatMap(Collection::stream).collect(Collectors.toSet()); annotations.addAll(toolDefaultAnnotations.keySet()); return annotations; } @@ -281,9 +289,11 @@ public boolean isDependentArgumentAllowed(final Class predecessorClass) { if (!isAllowed) { // Check whether any of the annotations have been added via groups (either tool default or user enabled) isAllowed = Stream.of(userArgs.getUserEnabledAnnotationGroups(), toolDefaultGroups) - .flatMap(Collection::stream) - .anyMatch(group -> - discoveredGroups.containsKey(group) && discoveredGroups.get(group).keySet().stream().anyMatch(s -> s.equals(predecessorName))); + .flatMap((SerializableFunction, Stream>) t -> t.stream()) + .anyMatch((SerializablePredicate) (group -> + discoveredGroups.containsKey(group) && + discoveredGroups.get(group).keySet().stream() + .anyMatch((SerializablePredicate) (s -> s.equals(predecessorName))))); } if (isAllowed) { // Keep track of the ones we allow so we can validate later that they weren't subsequently disabled @@ -326,29 +336,29 @@ public void validateAndResolvePlugins() throws CommandLineException { } // throw if a disabled annotation doesn't exist; warn if it wasn't enabled by the tool in the first place - userArgs.getUserDisabledAnnotationNames().forEach(s -> { + userArgs.getUserDisabledAnnotationNames().forEach((SerializableConsumer) (s -> { if (!allDiscoveredAnnotations.containsKey(s)) { throw new CommandLineException.BadArgumentValue(String.format("Disabled annotation (%s) does not exist", s)); } else if (!toolDefaultAnnotations.containsKey(s)) { logger.warn(String.format("Disabled annotation (%s) is not enabled by this tool", s)); } - }); + })); // warn if an annotation is both default and enabled by the user final Set redundantAnnots = new HashSet<>(toolDefaultAnnotations.keySet()); redundantAnnots.retainAll(userArgs.getUserEnabledAnnotationNames()); - redundantAnnots.forEach( - s -> { + redundantAnnots.forEach((SerializableConsumer) + (s -> { logger.warn(String.format("Redundant enabled annotation (%s) is enabled for this tool by default", s)); - }); + })); // warn if an annotation group is both default and enabled by the user final Set redundantGroups = new HashSet<>(toolDefaultGroups); redundantGroups.retainAll(userArgs.getUserEnabledAnnotationGroups()); - redundantGroups.forEach( - s -> { + redundantGroups.forEach((SerializableConsumer) + (s -> { logger.warn(String.format("Redundant enabled annotation group (%s) is enabled for this tool by default", s)); - }); + })); // Throw if args were specified for an annotation that was also disabled, or that was not enabled by the // tool by default. @@ -376,21 +386,21 @@ public void validateAndResolvePlugins() throws CommandLineException { }); // throw if an annotation name was specified that has no corresponding instance - userArgs.getUserEnabledAnnotationNames().forEach(s -> { + userArgs.getUserEnabledAnnotationNames().forEach((SerializableConsumer) (s -> { Annotation ta = allDiscoveredAnnotations.get(s); if (null == ta) { if (!toolDefaultAnnotations.containsKey(s)) { throw new CommandLineException("Unrecognized annotation name: " + s); } } - }); + })); // throw if an annotation group was specified that has no corresponding instance - userArgs.getUserEnabledAnnotationGroups().forEach(s -> { + userArgs.getUserEnabledAnnotationGroups().forEach((SerializableConsumer) (s -> { if (!discoveredGroups.containsKey(s)) { throw new CommandLineException("Unrecognized annotation group name: " + s); } - }); + })); // Populating the tool default annotations with the ones requested by groups for (String group : toolDefaultGroups ) { @@ -418,6 +428,7 @@ public void validateAndResolvePlugins() throws CommandLineException { allDiscoveredAnnotations.values().stream().filter(PedigreeAnnotation.class::isInstance).map(a -> a.getClass().getSimpleName()).collect(Collectors.joining(", ")))); } + //TODO: fix these lambdas to have serializable types // Populating any discovered flow annotations with the flowOrder arguments from the command line. if (flowOrder!=null && !flowOrder.isEmpty() && getResolvedInstances().stream() .filter(FlowAnnotatorBase.class::isInstance) @@ -465,8 +476,8 @@ public List getDefaultInstances() { @Override public List getResolvedInstances() { if (resolvedInstances == null) { - final SortedSet annotations = new TreeSet<>(Comparator.comparing(t -> t.getClass().getSimpleName())); - + final SortedSet annotations = new TreeSet<>(Comparator.comparing( + (SerializableFunction) t -> t.getClass().getSimpleName())); if (!userArgs.getDisableToolDefaultAnnotations()) { annotations.addAll(toolDefaultAnnotations.values()); } diff --git a/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java b/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java index 8ff76a1ae6c..52277de766f 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/HaplotypeCallerSpark.java @@ -3,7 +3,6 @@ import com.google.common.collect.Iterators; import htsjdk.samtools.SAMFileHeader; import htsjdk.samtools.SAMSequenceDictionary; -import htsjdk.samtools.reference.ReferenceSequenceFile; import htsjdk.samtools.util.FileExtensions; import htsjdk.variant.variantcontext.VariantContext; import org.apache.logging.log4j.Logger; @@ -29,6 +28,11 @@ import org.broadinstitute.hellbender.exceptions.UserException; import org.broadinstitute.hellbender.tools.walkers.annotator.Annotation; import org.broadinstitute.hellbender.tools.walkers.annotator.VariantAnnotatorEngine; +import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.HaplotypeCaller; +import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.HaplotypeCallerArgumentCollection; +import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.HaplotypeCallerEngine; +import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.ReferenceConfidenceMode; +import org.broadinstitute.hellbender.utils.SerializableSupplier; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.*; import org.broadinstitute.hellbender.utils.Utils; import org.broadinstitute.hellbender.utils.fasta.CachingIndexedFastaSequenceFile; @@ -142,7 +146,7 @@ private static void processAssemblyRegions( final VariantAnnotatorEngine variantannotatorEngine = new VariantAnnotatorEngine(annotations, hcArgs.dbsnp.dbsnp, hcArgs.comps, hcArgs.emitReferenceConfidence != ReferenceConfidenceMode.NONE, false); final Path referencePath = IOUtils.getPath(reference); - final ReferenceSequenceFile driverReferenceSequenceFile = new CachingIndexedFastaSequenceFile(referencePath); + final CachingIndexedFastaSequenceFile driverReferenceSequenceFile = new CachingIndexedFastaSequenceFile(referencePath); final HaplotypeCallerEngine hcEngine = new HaplotypeCallerEngine(hcArgs, assemblyRegionArgs, false, false, header, driverReferenceSequenceFile, variantannotatorEngine); final String referenceFileName = referencePath.getFileName().toString(); final Broadcast hcArgsBroadcast = ctx.broadcast(hcArgs); @@ -165,9 +169,9 @@ private static FlatMapFunction, VariantCon final Broadcast hcArgsBroadcast, final Broadcast assemblyRegionArgsBroadcast, final Broadcast annotatorEngineBroadcast) { - return (FlatMapFunction, VariantContext>) contexts -> { + return contexts -> { // HaplotypeCallerEngine isn't serializable but is expensive to instantiate, so construct and reuse one for every partition - final ReferenceSequenceFile taskReferenceSequenceFile = taskReferenceSequenceFile(referenceFileName); + final CachingIndexedFastaSequenceFile taskReferenceSequenceFile = taskReferenceSequenceFile(referenceFileName); final HaplotypeCallerEngine hcEngine = new HaplotypeCallerEngine(hcArgsBroadcast.value(), assemblyRegionArgsBroadcast.value(), false, false, header, taskReferenceSequenceFile, annotatorEngineBroadcast.getValue()); Iterator> iterators = Utils.stream(contexts).map(context -> { AssemblyRegion region = context.getAssemblyRegion(); @@ -194,7 +198,7 @@ protected Broadcast> assemblyRegionEvaluatorSu final Path referencePath = IOUtils.getPath(referenceArguments.getReferenceFileName()); final String referenceFileName = referencePath.getFileName().toString(); final String pathOnExecutor = SparkFiles.get(referenceFileName); - final ReferenceSequenceFile taskReferenceSequenceFile = new CachingIndexedFastaSequenceFile(IOUtils.getPath(pathOnExecutor)); + final CachingIndexedFastaSequenceFile taskReferenceSequenceFile = new CachingIndexedFastaSequenceFile(IOUtils.getPath(pathOnExecutor)); final Collection annotations = makeVariantAnnotations(); final VariantAnnotatorEngine annotatorEngine = new VariantAnnotatorEngine(annotations, hcArgs.dbsnp.dbsnp, hcArgs.comps, hcArgs.emitReferenceConfidence != ReferenceConfidenceMode.NONE, false); return assemblyRegionEvaluatorSupplierBroadcastFunction(ctx, hcArgs, assemblyRegionArgs, getHeaderForReads(), taskReferenceSequenceFile, annotatorEngine); @@ -208,12 +212,12 @@ private static Broadcast> assemblyRegionEvalua final Collection annotations) { final Path referencePath = IOUtils.getPath(reference); final String referenceFileName = referencePath.getFileName().toString(); - final ReferenceSequenceFile taskReferenceSequenceFile = taskReferenceSequenceFile(referenceFileName); + final CachingIndexedFastaSequenceFile taskReferenceSequenceFile = taskReferenceSequenceFile(referenceFileName); final VariantAnnotatorEngine annotatorEngine = new VariantAnnotatorEngine(annotations, hcArgs.dbsnp.dbsnp, hcArgs.comps, hcArgs.emitReferenceConfidence != ReferenceConfidenceMode.NONE, false); return assemblyRegionEvaluatorSupplierBroadcastFunction(ctx, hcArgs, assemblyRegionArgs, header, taskReferenceSequenceFile, annotatorEngine); } - private static ReferenceSequenceFile taskReferenceSequenceFile(final String referenceFileName) { + private static CachingIndexedFastaSequenceFile taskReferenceSequenceFile(final String referenceFileName) { final String pathOnExecutor = SparkFiles.get(referenceFileName); return new CachingIndexedFastaSequenceFile(IOUtils.getPath(pathOnExecutor)); } @@ -222,9 +226,9 @@ private static Broadcast> assemblyRegionEvalua final JavaSparkContext ctx, final HaplotypeCallerArgumentCollection hcArgs, AssemblyRegionArgumentCollection assemblyRegionArgs, final SAMFileHeader header, - final ReferenceSequenceFile taskReferenceSequenceFile, + final CachingIndexedFastaSequenceFile taskReferenceSequenceFile, final VariantAnnotatorEngine annotatorEngine) { - Supplier supplier = new Supplier() { + SerializableSupplier supplier = new SerializableSupplier() { @Override public AssemblyRegionEvaluator get() { return new HaplotypeCallerEngine(hcArgs, assemblyRegionArgs, false, false, header, taskReferenceSequenceFile, annotatorEngine); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/dragstr/CalibrateDragstrModel.java b/src/main/java/org/broadinstitute/hellbender/tools/dragstr/CalibrateDragstrModel.java index 24bb5df696f..9b75290cb60 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/dragstr/CalibrateDragstrModel.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/dragstr/CalibrateDragstrModel.java @@ -263,6 +263,7 @@ private void checkSequenceDictionaryCompatibility(final SAMSequenceDictionary re } } + @SuppressWarnings("deprecation") private PrintWriter openSitesOutputWriter(final String sitesOutput) { return sitesOutput == null ? new PrintWriter(new NullOutputStream()) : new PrintWriter(BucketUtils.createFile(sitesOutput)); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java index 768264446de..00d22c7600c 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/HaplotypeCallerEngine.java @@ -25,6 +25,7 @@ import org.broadinstitute.hellbender.tools.walkers.genotyper.OutputMode; import org.broadinstitute.hellbender.tools.walkers.genotyper.StandardCallerArgumentCollection; import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.readthreading.ReadThreadingAssembler; +import org.broadinstitute.hellbender.utils.fasta.CachingIndexedFastaSequenceFile; import org.broadinstitute.hellbender.utils.pileup.PileupBasedAlleles; import org.broadinstitute.hellbender.transformers.IUPACReadTransformer; import org.broadinstitute.hellbender.transformers.ReadTransformer; @@ -169,7 +170,7 @@ public class HaplotypeCallerEngine implements AssemblyRegionEvaluator { */ public HaplotypeCallerEngine(final HaplotypeCallerArgumentCollection hcArgs, AssemblyRegionArgumentCollection assemblyRegionArgs, boolean createBamOutIndex, boolean createBamOutMD5, final SAMFileHeader readsHeader, - ReferenceSequenceFile referenceReader, VariantAnnotatorEngine annotationEngine) { + CachingIndexedFastaSequenceFile referenceReader, VariantAnnotatorEngine annotationEngine) { this.dragstrParams = DragstrParamUtils.parse(hcArgs.likelihoodArgs.dragstrParams); this.hcArgs = Utils.nonNull(hcArgs); this.readsHeader = Utils.nonNull(readsHeader); diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java index f0db1b52bac..b66bc6e7202 100644 --- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java +++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/haplotypecaller/RampedHaplotypeCallerEngine.java @@ -14,6 +14,7 @@ import org.broadinstitute.hellbender.tools.walkers.haplotypecaller.ramps.*; import org.broadinstitute.hellbender.utils.SimpleInterval; import org.broadinstitute.hellbender.utils.downsampling.ReservoirDownsampler; +import org.broadinstitute.hellbender.utils.fasta.CachingIndexedFastaSequenceFile; import org.broadinstitute.hellbender.utils.genotyper.AlleleLikelihoods; import org.broadinstitute.hellbender.utils.haplotype.EventMap; import org.broadinstitute.hellbender.utils.haplotype.Haplotype; @@ -61,7 +62,7 @@ public class RampedHaplotypeCallerEngine extends HaplotypeCallerEngine { public RampedHaplotypeCallerEngine(final HaplotypeCallerArgumentCollection hcArgs, AssemblyRegionArgumentCollection assemblyRegionArgs, boolean createBamOutIndex, boolean createBamOutMD5, final SAMFileHeader readsHeader, - ReferenceSequenceFile referenceReader, VariantAnnotatorEngine annotationEngine, + CachingIndexedFastaSequenceFile referenceReader, VariantAnnotatorEngine annotationEngine, RampedHaplotypeCallerArgumentCollection rpArgs) { super(hcArgs, assemblyRegionArgs, createBamOutIndex, diff --git a/src/main/java/org/broadinstitute/hellbender/utils/SerializableConsumer.java b/src/main/java/org/broadinstitute/hellbender/utils/SerializableConsumer.java new file mode 100644 index 00000000000..2f61106669e --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/utils/SerializableConsumer.java @@ -0,0 +1,6 @@ +package org.broadinstitute.hellbender.utils; + +import java.io.Serializable; +import java.util.function.Consumer; + +public interface SerializableConsumer extends Consumer, Serializable {} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/SerializablePredicate.java b/src/main/java/org/broadinstitute/hellbender/utils/SerializablePredicate.java new file mode 100644 index 00000000000..3da23d638bd --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/utils/SerializablePredicate.java @@ -0,0 +1,6 @@ +package org.broadinstitute.hellbender.utils; + +import java.io.Serializable; +import java.util.function.Predicate; + +public interface SerializablePredicate extends Predicate, Serializable {} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/SerializableSupplier.java b/src/main/java/org/broadinstitute/hellbender/utils/SerializableSupplier.java new file mode 100644 index 00000000000..b62df11bc71 --- /dev/null +++ b/src/main/java/org/broadinstitute/hellbender/utils/SerializableSupplier.java @@ -0,0 +1,6 @@ +package org.broadinstitute.hellbender.utils; + +import java.io.Serializable; +import java.util.function.Supplier; + +public interface SerializableSupplier extends Supplier, Serializable {} \ No newline at end of file diff --git a/src/main/java/org/broadinstitute/hellbender/utils/fasta/CachingIndexedFastaSequenceFile.java b/src/main/java/org/broadinstitute/hellbender/utils/fasta/CachingIndexedFastaSequenceFile.java index 1ead048346e..6cd2d678347 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/fasta/CachingIndexedFastaSequenceFile.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/fasta/CachingIndexedFastaSequenceFile.java @@ -19,6 +19,7 @@ import org.broadinstitute.hellbender.utils.Utils; import java.io.IOException; +import java.io.Serializable; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; @@ -31,10 +32,13 @@ * * Instances of this class should be closed when they are no longer needed. */ -public final class CachingIndexedFastaSequenceFile implements ReferenceSequenceFile { +public final class CachingIndexedFastaSequenceFile implements ReferenceSequenceFile, Serializable { + private static final long serialVersionUID = 1L; + protected static final Logger logger = LogManager.getLogger(CachingIndexedFastaSequenceFile.class); - private final ReferenceSequenceFile sequenceFile; + // TODO: this gets around numerous serialization issues with non-serializable lambdas + private transient final ReferenceSequenceFile sequenceFile; /** do we want to print debugging information about cache efficiency? */ private static final boolean PRINT_EFFICIENCY = false; diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKDocWorkUnit.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKDocWorkUnit.java index 1dce5a8422b..b94df3c80b8 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKDocWorkUnit.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKDocWorkUnit.java @@ -1,41 +1,41 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.help.DocWorkUnit; -import org.broadinstitute.barclay.help.DocWorkUnitHandler; -import org.broadinstitute.barclay.help.DocumentedFeature; - -import org.broadinstitute.hellbender.utils.runtime.RuntimeUtils; - -/** - * Custom DocWorkUnit used for generating GATK help/documentation. Overrides the defaults to provide tool - * names that are annotated with a " (Picard)" suffix for Picard tools. - * - * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called - * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, - * which may not be present since they're not provided as part of the normal GATK runtime classpath. - */ -@SuppressWarnings("removal") -public class GATKDocWorkUnit extends DocWorkUnit { - - public GATKDocWorkUnit( - final DocWorkUnitHandler workUnitHandler, - final DocumentedFeature documentedFeatureAnnotation, - final com.sun.javadoc.ClassDoc classDoc, - final Class clazz) { - super(workUnitHandler, documentedFeatureAnnotation, classDoc, clazz); - } - - @Override - public String getName() { - // Override getName to return a display name that annotates Picard tool names with " (Picard)" - return RuntimeUtils.toolDisplayName(getClazz()); - } - - /** - * Sort in order of the name of this WorkUnit - */ - @Override - public int compareTo(DocWorkUnit other) { - return this.getName().compareTo(other.getName()); - } -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.help.DocWorkUnit; +//import org.broadinstitute.barclay.help.DocWorkUnitHandler; +//import org.broadinstitute.barclay.help.DocumentedFeature; +// +//import org.broadinstitute.hellbender.utils.runtime.RuntimeUtils; +// +///** +// * Custom DocWorkUnit used for generating GATK help/documentation. Overrides the defaults to provide tool +// * names that are annotated with a " (Picard)" suffix for Picard tools. +// * +// * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called +// * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, +// * which may not be present since they're not provided as part of the normal GATK runtime classpath. +// */ +//@SuppressWarnings("removal") +//public class GATKDocWorkUnit extends DocWorkUnit { +// +// public GATKDocWorkUnit( +// final DocWorkUnitHandler workUnitHandler, +// final DocumentedFeature documentedFeatureAnnotation, +// final com.sun.javadoc.ClassDoc classDoc, +// final Class clazz) { +// super(workUnitHandler, documentedFeatureAnnotation, classDoc, clazz); +// } +// +// @Override +// public String getName() { +// // Override getName to return a display name that annotates Picard tool names with " (Picard)" +// return RuntimeUtils.toolDisplayName(getClazz()); +// } +// +// /** +// * Sort in order of the name of this WorkUnit +// */ +// @Override +// public int compareTo(DocWorkUnit other) { +// return this.getName().compareTo(other.getName()); +// } +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKGSONWorkUnit.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKGSONWorkUnit.java index 72eeb27aeb6..0216ab9b707 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKGSONWorkUnit.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKGSONWorkUnit.java @@ -1,17 +1,17 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.help.GSONWorkUnit; - -/** - * Class representing a GSONWorkUnit for GATK work units. - * - * Adds "walkertype" to the base gson object created by Barclay. - */ -public class GATKGSONWorkUnit extends GSONWorkUnit { - - private String walkerType; - - public void setWalkerType(final String walkerType){ - this.walkerType = walkerType; - } -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.help.GSONWorkUnit; +// +///** +// * Class representing a GSONWorkUnit for GATK work units. +// * +// * Adds "walkertype" to the base gson object created by Barclay. +// */ +//public class GATKGSONWorkUnit extends GSONWorkUnit { +// +// private String walkerType; +// +// public void setWalkerType(final String walkerType){ +// this.walkerType = walkerType; +// } +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDocWorkUnitHandler.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDocWorkUnitHandler.java index ab2cf1a9d06..b31bfcc640a 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDocWorkUnitHandler.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDocWorkUnitHandler.java @@ -1,61 +1,61 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; -import org.broadinstitute.barclay.help.DefaultDocWorkUnitHandler; -import org.broadinstitute.barclay.help.DocWorkUnit; - -import org.broadinstitute.barclay.help.HelpDoclet; - -/** - * The GATK Documentation work unit handler class that is the companion to GATKHelpDoclet. - * - * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called - * by methods that are used by the GATK runtime, as this class assumes a dependency on com.sun.javadoc classes - * which may not be present. - */ -public class GATKHelpDocWorkUnitHandler extends DefaultDocWorkUnitHandler { - - private final static String GATK_JAVADOC_TAG_PREFIX = "GATK"; // prefix for custom javadoc tags used by GATK - - private final static String GATK_FREEMARKER_TEMPLATE_NAME = "generic.template.html"; - - public GATKHelpDocWorkUnitHandler(final HelpDoclet doclet) { - super(doclet); - } - /** - * @return Prefix for custom GATK tags that should be lifted from the javadoc and stored in the - * FreeMarker map. These will be available in the template returned by {@link #getTemplateName}. - */ - @Override - protected String getTagFilterPrefix() { return GATK_JAVADOC_TAG_PREFIX; } - - /** - * @param workUnit the classdoc object being processed - * @return the name of a the freemarker template to be used for the class being documented. - * Must reside in the folder passed to the Barclay Doclet via the "-settings-dir" parameter to - * Javadoc. - */ - @Override - public String getTemplateName(final DocWorkUnit workUnit) { return GATK_FREEMARKER_TEMPLATE_NAME; } - - - /** - * Add any custom freemarker bindings discovered via custom javadoc tags. Subclasses can override this to - * provide additional custom bindings. - * - * @param currentWorkUnit the work unit for the feature being documented - */ - @Override - protected void addCustomBindings(final DocWorkUnit currentWorkUnit) { - super.addCustomBindings(currentWorkUnit); - - // Picard tools use the summary line for the long overview section, so extract that - // from Picard tools only, and put it in the freemarker map. - Class toolClass = currentWorkUnit.getClazz(); - if (picard.cmdline.CommandLineProgram.class.isAssignableFrom(toolClass)) { - final CommandLineProgramProperties clpProperties = currentWorkUnit.getCommandLineProperties(); - currentWorkUnit.setProperty("picardsummary", clpProperties.summary()); - } - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; +//import org.broadinstitute.barclay.help.DefaultDocWorkUnitHandler; +//import org.broadinstitute.barclay.help.DocWorkUnit; +// +//import org.broadinstitute.barclay.help.HelpDoclet; +// +///** +// * The GATK Documentation work unit handler class that is the companion to GATKHelpDoclet. +// * +// * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called +// * by methods that are used by the GATK runtime, as this class assumes a dependency on com.sun.javadoc classes +// * which may not be present. +// */ +//public class GATKHelpDocWorkUnitHandler extends DefaultDocWorkUnitHandler { +// +// private final static String GATK_JAVADOC_TAG_PREFIX = "GATK"; // prefix for custom javadoc tags used by GATK +// +// private final static String GATK_FREEMARKER_TEMPLATE_NAME = "generic.template.html"; +// +// public GATKHelpDocWorkUnitHandler(final HelpDoclet doclet) { +// super(doclet); +// } +// /** +// * @return Prefix for custom GATK tags that should be lifted from the javadoc and stored in the +// * FreeMarker map. These will be available in the template returned by {@link #getTemplateName}. +// */ +// @Override +// protected String getTagFilterPrefix() { return GATK_JAVADOC_TAG_PREFIX; } +// +// /** +// * @param workUnit the classdoc object being processed +// * @return the name of a the freemarker template to be used for the class being documented. +// * Must reside in the folder passed to the Barclay Doclet via the "-settings-dir" parameter to +// * Javadoc. +// */ +// @Override +// public String getTemplateName(final DocWorkUnit workUnit) { return GATK_FREEMARKER_TEMPLATE_NAME; } +// +// +// /** +// * Add any custom freemarker bindings discovered via custom javadoc tags. Subclasses can override this to +// * provide additional custom bindings. +// * +// * @param currentWorkUnit the work unit for the feature being documented +// */ +// @Override +// protected void addCustomBindings(final DocWorkUnit currentWorkUnit) { +// super.addCustomBindings(currentWorkUnit); +// +// // Picard tools use the summary line for the long overview section, so extract that +// // from Picard tools only, and put it in the freemarker map. +// Class toolClass = currentWorkUnit.getClazz(); +// if (picard.cmdline.CommandLineProgram.class.isAssignableFrom(toolClass)) { +// final CommandLineProgramProperties clpProperties = currentWorkUnit.getCommandLineProperties(); +// currentWorkUnit.setProperty("picardsummary", clpProperties.summary()); +// } +// } +// +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDoclet.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDoclet.java index 69fd8588bf9..9175d6bd557 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDoclet.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKHelpDoclet.java @@ -1,106 +1,106 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.help.DocumentedFeature; -import org.broadinstitute.barclay.help.DocWorkUnit; -import org.broadinstitute.barclay.help.GSONWorkUnit; -import org.broadinstitute.barclay.help.HelpDoclet; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -/** - * Custom Barclay-based Javadoc Doclet used for generating GATK help/documentation. - * - * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called - * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, - * which may not be present since they're not provided as part of the normal GATK runtime classpath. - */ -@SuppressWarnings("removal") -public class GATKHelpDoclet extends HelpDoclet { - - private final static String GATK_FREEMARKER_INDEX_TEMPLATE_NAME = "generic.index.template.html"; - private final static String WALKER_TYPE_MAP_ENTRY = "walkertype"; // populated from javadoc custom tag - - /** - * Create a doclet of the appropriate type and generate the FreeMarker templates properties. - * @param rootDoc - * @throws IOException - */ - public static boolean start(final com.sun.javadoc.RootDoc rootDoc) throws IOException { - return new GATKHelpDoclet().startProcessDocs(rootDoc); - } - - /** - * Return the name of the freemarker template to be used for the index generated by Barclay. - * Must reside in the folder passed to the Barclay Javadc Doclet via the "-settings-dir" parameter. - * @return name of freemarker index template - */ - @Override - public String getIndexTemplateName() { - return GATK_FREEMARKER_INDEX_TEMPLATE_NAME; - } - - /** - * @return Create and return a DocWorkUnit-derived object to handle documentation - * for the target feature(s) represented by documentedFeature. - * - * @param documentedFeature DocumentedFeature annotation for the target feature - * @param classDoc javadoc classDoc for the target feature - * @param clazz class of the target feature - * @return DocWorkUnit to be used for this feature - */ - @Override - protected DocWorkUnit createWorkUnit( - final DocumentedFeature documentedFeature, - final com.sun.javadoc.ClassDoc classDoc, - final Class clazz) - { - return new GATKDocWorkUnit( - new GATKHelpDocWorkUnitHandler(this), - documentedFeature, - classDoc, - clazz); - } - - /** - * Create a GSONWorkUnit-derived object that holds our custom data. This method should create the object, and - * propagate any custom javadoc tags from the template map to the newly created GSON object; specifically - * "walkertype", which is pulled from a custom javadoc tag. - * - * @param workUnit work unit for which a GSON object is required - * @param groupMaps - * @param featureMaps - * @return a GSONWorkUnit-derived object for this work unit, populated with any custom values - */ - @Override - protected GSONWorkUnit createGSONWorkUnit( - final DocWorkUnit workUnit, - final List> groupMaps, - final List> featureMaps) - { - GATKGSONWorkUnit gatkGSONWorkUnit = new GATKGSONWorkUnit(); - gatkGSONWorkUnit.setWalkerType((String)workUnit.getRootMap().get(WALKER_TYPE_MAP_ENTRY)); - return gatkGSONWorkUnit; - } - - /** - * Adds a super-category so that we can custom-order the categories in the doc index - * - * @param docWorkUnit - * @return - */ - @Override - protected final Map getGroupMap(final DocWorkUnit docWorkUnit) { - final Map root = super.getGroupMap(docWorkUnit); - - /** - * Add-on super-category definitions. The super-category and spark value strings need to be the - * same as used in the Freemarker template. - */ - root.put("supercat", HelpConstants.getSuperCategoryProperty(docWorkUnit.getGroupName())); - - return root; - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.help.DocumentedFeature; +//import org.broadinstitute.barclay.help.DocWorkUnit; +//import org.broadinstitute.barclay.help.GSONWorkUnit; +//import org.broadinstitute.barclay.help.HelpDoclet; +// +//import java.io.IOException; +//import java.util.List; +//import java.util.Map; +// +///** +// * Custom Barclay-based Javadoc Doclet used for generating GATK help/documentation. +// * +// * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called +// * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, +// * which may not be present since they're not provided as part of the normal GATK runtime classpath. +// */ +//@SuppressWarnings("removal") +//public class GATKHelpDoclet extends HelpDoclet { +// +// private final static String GATK_FREEMARKER_INDEX_TEMPLATE_NAME = "generic.index.template.html"; +// private final static String WALKER_TYPE_MAP_ENTRY = "walkertype"; // populated from javadoc custom tag +// +// /** +// * Create a doclet of the appropriate type and generate the FreeMarker templates properties. +// * @param rootDoc +// * @throws IOException +// */ +// public static boolean start(final com.sun.javadoc.RootDoc rootDoc) throws IOException { +// return new GATKHelpDoclet().startProcessDocs(rootDoc); +// } +// +// /** +// * Return the name of the freemarker template to be used for the index generated by Barclay. +// * Must reside in the folder passed to the Barclay Javadc Doclet via the "-settings-dir" parameter. +// * @return name of freemarker index template +// */ +// @Override +// public String getIndexTemplateName() { +// return GATK_FREEMARKER_INDEX_TEMPLATE_NAME; +// } +// +// /** +// * @return Create and return a DocWorkUnit-derived object to handle documentation +// * for the target feature(s) represented by documentedFeature. +// * +// * @param documentedFeature DocumentedFeature annotation for the target feature +// * @param classDoc javadoc classDoc for the target feature +// * @param clazz class of the target feature +// * @return DocWorkUnit to be used for this feature +// */ +// @Override +// protected DocWorkUnit createWorkUnit( +// final DocumentedFeature documentedFeature, +// final com.sun.javadoc.ClassDoc classDoc, +// final Class clazz) +// { +// return new GATKDocWorkUnit( +// new GATKHelpDocWorkUnitHandler(this), +// documentedFeature, +// classDoc, +// clazz); +// } +// +// /** +// * Create a GSONWorkUnit-derived object that holds our custom data. This method should create the object, and +// * propagate any custom javadoc tags from the template map to the newly created GSON object; specifically +// * "walkertype", which is pulled from a custom javadoc tag. +// * +// * @param workUnit work unit for which a GSON object is required +// * @param groupMaps +// * @param featureMaps +// * @return a GSONWorkUnit-derived object for this work unit, populated with any custom values +// */ +// @Override +// protected GSONWorkUnit createGSONWorkUnit( +// final DocWorkUnit workUnit, +// final List> groupMaps, +// final List> featureMaps) +// { +// GATKGSONWorkUnit gatkGSONWorkUnit = new GATKGSONWorkUnit(); +// gatkGSONWorkUnit.setWalkerType((String)workUnit.getRootMap().get(WALKER_TYPE_MAP_ENTRY)); +// return gatkGSONWorkUnit; +// } +// +// /** +// * Adds a super-category so that we can custom-order the categories in the doc index +// * +// * @param docWorkUnit +// * @return +// */ +// @Override +// protected final Map getGroupMap(final DocWorkUnit docWorkUnit) { +// final Map root = super.getGroupMap(docWorkUnit); +// +// /** +// * Add-on super-category definitions. The super-category and spark value strings need to be the +// * same as used in the Freemarker template. +// */ +// root.put("supercat", HelpConstants.getSuperCategoryProperty(docWorkUnit.getGroupName())); +// +// return root; +// } +// +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLDoclet.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLDoclet.java index f0a83f00f4d..47fabca8f09 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLDoclet.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLDoclet.java @@ -1,222 +1,222 @@ -package org.broadinstitute.hellbender.utils.help; - -import freemarker.template.Configuration; -import freemarker.template.Template; -import freemarker.template.TemplateException; -import org.apache.commons.io.FilenameUtils; -import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; -import org.broadinstitute.barclay.argparser.WorkflowProperties; -import org.broadinstitute.barclay.help.*; - -import java.io.*; -import java.util.List; -import java.util.Map; - -/** - * Custom Barclay-based Javadoc Doclet used for generating tool WDL. - * - * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called - * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, - * which may not be present since they're not provided as part of the normal GATK runtime classpath. - */ -@SuppressWarnings("removal") -public class GATKWDLDoclet extends WDLDoclet { - - // emit an index file with links to all of the .wdl files - private final static String GATK_FREEMARKER_INDEX_TEMPLATE_NAME = "wdlIndexTemplate.html.ftl"; - - // the directory where the wdlgen build is running - public final static String OPT_BUILD_DIR = "-build-dir"; - private String buildDir; - - @Override - public String getIndexFileExtension() { return "html"; } - - /** - * Validates the given options against options supported by this doclet. - * - * @param option Option to validate. - * @return Number of potential parameters; 0 if not supported. - */ - public static int optionLength(final String option) { - // Any arguments used for the doclet need to be recognized here. Many javadoc plugins (ie. gradle) - // automatically add some such as "-doctitle", "-windowtitle", which we ignore. - if (option.equals(OPT_BUILD_DIR)) { - return 2; - } - return WDLDoclet.optionLength(option); - } - - @Override - protected boolean parseOption(final String[] option) { - if (option[0].equals(OPT_BUILD_DIR)) { - buildDir = option[1]; - return true; - } else { - return super.parseOption(option); - } - } - - /** - * Create a WDL doclet and generate the FreeMarker templates properties. - * @param rootDoc - * @throws IOException - */ - public static boolean start(final com.sun.javadoc.RootDoc rootDoc) throws IOException { - return new GATKWDLDoclet().startProcessDocs(rootDoc); - } - - /** - * @return the location where the build is running; used in the cromwell validation tests to generate a dummy - * input file to satisfy cromwell file localization - */ - public String getBuildDir() { return buildDir; } - - /** - * Return the name of the freemarker template to be used for the index generated by Barclay. - * For WDL gen, we create an index file that links to each of the generated WDL files. - * Must reside in the folder passed to the Barclay Javadc Doclet via the "-settings-dir" parameter. - * @return name of freemarker index template - */ - @Override - public String getIndexTemplateName() { - return GATK_FREEMARKER_INDEX_TEMPLATE_NAME; - } - - /** - * @return Create and return a DocWorkUnit-derived object to handle documentation - * for the target feature(s) represented by documentedFeature. - * - * @param documentedFeature DocumentedFeature annotation for the target feature - * @param classDoc javadoc classDoc for the target feature - * @param clazz class of the target feature - * @return DocWorkUnit to be used for this feature - */ - @Override - protected DocWorkUnit createWorkUnit( - final DocumentedFeature documentedFeature, - final com.sun.javadoc.ClassDoc classDoc, - final Class clazz) - { - return includeInDocs(documentedFeature, classDoc, clazz) ? - // for WDL we don't need to customize the work unit, only the handler, so just use the - // Barclay default WorkUnit class - new DocWorkUnit( - new GATKWDLWorkUnitHandler(this), - documentedFeature, - classDoc, - clazz) : - null; - } - - @Override - protected void processWorkUnitTemplate( - final Configuration cfg, - final DocWorkUnit workUnit, - final List> indexByGroupMaps, - final List> featureMaps) - { - final String defaultWDLOutputFileName = workUnit.getTargetFileName(); - final String defaultJSONOutputFileName = workUnit.getJSONFileName(); - - // generate the default WDL and input JSON, which expose only required args - exportWorkUnitTemplate( - cfg, - workUnit, - workUnit.getTemplateName(), - new File(getDestinationDir(), defaultWDLOutputFileName)); - exportWorkUnitTemplate( - cfg, - workUnit, - "wdlJSONTemplate.json.ftl", - new File(getDestinationDir(), defaultJSONOutputFileName)); - - // generate a second pair of files containing ALL arguments - exportWorkUnitTemplate( - cfg, - workUnit, - "wdlToolTemplateAllArgs.wdl.ftl", - new File(getDestinationDir(), - String.format("%sAllArgs.%s", - FilenameUtils.getBaseName(defaultWDLOutputFileName), - FilenameUtils.getExtension(defaultWDLOutputFileName))) - ); - exportWorkUnitTemplate( - cfg, - workUnit, - "wdlJSONTemplateAllArgs.json.ftl", - new File(getDestinationDir(), - String.format("%sAllArgsInputs.json", - FilenameUtils.getBaseName(defaultWDLOutputFileName))) - ); - - // Finally, we need to emit a test WDL and JSON pair for use by the cromwell execution test (which - // runs GATK in command line evaluation only mode). The JSON file is primed with dummy values for any - // required args. The test WDL specifies no docker image, and has no runtime outputs, since in - // command line validation mode no outputs are produced, so otherwise cromwell will fail attempting to - // de-localize them. - exportWorkUnitTemplate( - cfg, - workUnit, - "wdlToolTemplateAllArgsTest.wdl.ftl", - new File(getDestinationDir(), - String.format("%sAllArgsTest.%s", - FilenameUtils.getBaseName(defaultWDLOutputFileName), - FilenameUtils.getExtension(defaultWDLOutputFileName))) - ); - exportWorkUnitTemplate( - cfg, - workUnit, - "wdlJSONTemplateAllArgsTest.json.ftl", - new File(getDestinationDir(), - String.format("%sAllArgsTestInputs.json", - FilenameUtils.getBaseName(defaultWDLOutputFileName))) - ); - } - - /** - * Export the generated files from templates for a single work unit. - * - * @param cfg freemarker config - * @param workUnit the WorkUnit being processed - * @param wdlTemplateName name of the template to use - * @param wdlOutputPath output file - */ - protected final void exportWorkUnitTemplate( - final Configuration cfg, - final DocWorkUnit workUnit, - final String wdlTemplateName, - final File wdlOutputPath) { - try { - // Merge data-model with wdl template - final Template wdlTemplate = cfg.getTemplate(wdlTemplateName); - try (final Writer out = new OutputStreamWriter(new FileOutputStream(wdlOutputPath))) { - wdlTemplate.process(workUnit.getRootMap(), out); - } - } catch (IOException e) { - throw new DocException("IOException during documentation creation", e); - } catch (TemplateException e) { - throw new DocException("TemplateException during documentation creation", e); - } - } - - /** - * Return the group map for this workunit. This adds the custom super-category property so that we can - * order the categories in the documentation index. - * - * @param docWorkUnit the DocWorkUnit being processed - * @return the group map for this work unit, updated to include any custom properties - */ - @Override - protected final Map getGroupMap(final DocWorkUnit docWorkUnit) { - final Map root = super.getGroupMap(docWorkUnit); - - /** - * Add-on super-category definitions. The super-category needs to match the string(s) used - * in the Freemarker template. - */ - root.put("supercat", HelpConstants.getSuperCategoryProperty(docWorkUnit.getGroupName())); - return root; - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import freemarker.template.Configuration; +//import freemarker.template.Template; +//import freemarker.template.TemplateException; +//import org.apache.commons.io.FilenameUtils; +//import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; +//import org.broadinstitute.barclay.argparser.WorkflowProperties; +//import org.broadinstitute.barclay.help.*; +// +//import java.io.*; +//import java.util.List; +//import java.util.Map; +// +///** +// * Custom Barclay-based Javadoc Doclet used for generating tool WDL. +// * +// * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called +// * by methods that are used by the GATK runtime. This class has a dependency on com.sun.javadoc classes, +// * which may not be present since they're not provided as part of the normal GATK runtime classpath. +// */ +//@SuppressWarnings("removal") +//public class GATKWDLDoclet extends WDLDoclet { +// +// // emit an index file with links to all of the .wdl files +// private final static String GATK_FREEMARKER_INDEX_TEMPLATE_NAME = "wdlIndexTemplate.html.ftl"; +// +// // the directory where the wdlgen build is running +// public final static String OPT_BUILD_DIR = "-build-dir"; +// private String buildDir; +// +// @Override +// public String getIndexFileExtension() { return "html"; } +// +// /** +// * Validates the given options against options supported by this doclet. +// * +// * @param option Option to validate. +// * @return Number of potential parameters; 0 if not supported. +// */ +// public static int optionLength(final String option) { +// // Any arguments used for the doclet need to be recognized here. Many javadoc plugins (ie. gradle) +// // automatically add some such as "-doctitle", "-windowtitle", which we ignore. +// if (option.equals(OPT_BUILD_DIR)) { +// return 2; +// } +// return WDLDoclet.optionLength(option); +// } +// +// @Override +// protected boolean parseOption(final String[] option) { +// if (option[0].equals(OPT_BUILD_DIR)) { +// buildDir = option[1]; +// return true; +// } else { +// return super.parseOption(option); +// } +// } +// +// /** +// * Create a WDL doclet and generate the FreeMarker templates properties. +// * @param rootDoc +// * @throws IOException +// */ +// public static boolean start(final com.sun.javadoc.RootDoc rootDoc) throws IOException { +// return new GATKWDLDoclet().startProcessDocs(rootDoc); +// } +// +// /** +// * @return the location where the build is running; used in the cromwell validation tests to generate a dummy +// * input file to satisfy cromwell file localization +// */ +// public String getBuildDir() { return buildDir; } +// +// /** +// * Return the name of the freemarker template to be used for the index generated by Barclay. +// * For WDL gen, we create an index file that links to each of the generated WDL files. +// * Must reside in the folder passed to the Barclay Javadc Doclet via the "-settings-dir" parameter. +// * @return name of freemarker index template +// */ +// @Override +// public String getIndexTemplateName() { +// return GATK_FREEMARKER_INDEX_TEMPLATE_NAME; +// } +// +// /** +// * @return Create and return a DocWorkUnit-derived object to handle documentation +// * for the target feature(s) represented by documentedFeature. +// * +// * @param documentedFeature DocumentedFeature annotation for the target feature +// * @param classDoc javadoc classDoc for the target feature +// * @param clazz class of the target feature +// * @return DocWorkUnit to be used for this feature +// */ +// @Override +// protected DocWorkUnit createWorkUnit( +// final DocumentedFeature documentedFeature, +// final com.sun.javadoc.ClassDoc classDoc, +// final Class clazz) +// { +// return includeInDocs(documentedFeature, classDoc, clazz) ? +// // for WDL we don't need to customize the work unit, only the handler, so just use the +// // Barclay default WorkUnit class +// new DocWorkUnit( +// new GATKWDLWorkUnitHandler(this), +// documentedFeature, +// classDoc, +// clazz) : +// null; +// } +// +// @Override +// protected void processWorkUnitTemplate( +// final Configuration cfg, +// final DocWorkUnit workUnit, +// final List> indexByGroupMaps, +// final List> featureMaps) +// { +// final String defaultWDLOutputFileName = workUnit.getTargetFileName(); +// final String defaultJSONOutputFileName = workUnit.getJSONFileName(); +// +// // generate the default WDL and input JSON, which expose only required args +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// workUnit.getTemplateName(), +// new File(getDestinationDir(), defaultWDLOutputFileName)); +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// "wdlJSONTemplate.json.ftl", +// new File(getDestinationDir(), defaultJSONOutputFileName)); +// +// // generate a second pair of files containing ALL arguments +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// "wdlToolTemplateAllArgs.wdl.ftl", +// new File(getDestinationDir(), +// String.format("%sAllArgs.%s", +// FilenameUtils.getBaseName(defaultWDLOutputFileName), +// FilenameUtils.getExtension(defaultWDLOutputFileName))) +// ); +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// "wdlJSONTemplateAllArgs.json.ftl", +// new File(getDestinationDir(), +// String.format("%sAllArgsInputs.json", +// FilenameUtils.getBaseName(defaultWDLOutputFileName))) +// ); +// +// // Finally, we need to emit a test WDL and JSON pair for use by the cromwell execution test (which +// // runs GATK in command line evaluation only mode). The JSON file is primed with dummy values for any +// // required args. The test WDL specifies no docker image, and has no runtime outputs, since in +// // command line validation mode no outputs are produced, so otherwise cromwell will fail attempting to +// // de-localize them. +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// "wdlToolTemplateAllArgsTest.wdl.ftl", +// new File(getDestinationDir(), +// String.format("%sAllArgsTest.%s", +// FilenameUtils.getBaseName(defaultWDLOutputFileName), +// FilenameUtils.getExtension(defaultWDLOutputFileName))) +// ); +// exportWorkUnitTemplate( +// cfg, +// workUnit, +// "wdlJSONTemplateAllArgsTest.json.ftl", +// new File(getDestinationDir(), +// String.format("%sAllArgsTestInputs.json", +// FilenameUtils.getBaseName(defaultWDLOutputFileName))) +// ); +// } +// +// /** +// * Export the generated files from templates for a single work unit. +// * +// * @param cfg freemarker config +// * @param workUnit the WorkUnit being processed +// * @param wdlTemplateName name of the template to use +// * @param wdlOutputPath output file +// */ +// protected final void exportWorkUnitTemplate( +// final Configuration cfg, +// final DocWorkUnit workUnit, +// final String wdlTemplateName, +// final File wdlOutputPath) { +// try { +// // Merge data-model with wdl template +// final Template wdlTemplate = cfg.getTemplate(wdlTemplateName); +// try (final Writer out = new OutputStreamWriter(new FileOutputStream(wdlOutputPath))) { +// wdlTemplate.process(workUnit.getRootMap(), out); +// } +// } catch (IOException e) { +// throw new DocException("IOException during documentation creation", e); +// } catch (TemplateException e) { +// throw new DocException("TemplateException during documentation creation", e); +// } +// } +// +// /** +// * Return the group map for this workunit. This adds the custom super-category property so that we can +// * order the categories in the documentation index. +// * +// * @param docWorkUnit the DocWorkUnit being processed +// * @return the group map for this work unit, updated to include any custom properties +// */ +// @Override +// protected final Map getGroupMap(final DocWorkUnit docWorkUnit) { +// final Map root = super.getGroupMap(docWorkUnit); +// +// /** +// * Add-on super-category definitions. The super-category needs to match the string(s) used +// * in the Freemarker template. +// */ +// root.put("supercat", HelpConstants.getSuperCategoryProperty(docWorkUnit.getGroupName())); +// return root; +// } +// +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLWorkUnitHandler.java b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLWorkUnitHandler.java index 5d3aeeb8c64..bd2c7e02956 100644 --- a/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLWorkUnitHandler.java +++ b/src/main/java/org/broadinstitute/hellbender/utils/help/GATKWDLWorkUnitHandler.java @@ -1,356 +1,356 @@ -package org.broadinstitute.hellbender.utils.help; - -import htsjdk.samtools.util.Iso8601Date; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; - -import org.broadinstitute.barclay.argparser.*; -import org.broadinstitute.barclay.help.DocWorkUnit; -import org.broadinstitute.barclay.help.HelpDoclet; -import org.broadinstitute.barclay.help.TemplateProperties; -import org.broadinstitute.barclay.help.WDLWorkUnitHandler; -import org.broadinstitute.hellbender.engine.FeatureInput; -import org.broadinstitute.hellbender.engine.GATKPath; -import org.broadinstitute.hellbender.engine.spark.GATKSparkTool; -import org.broadinstitute.hellbender.exceptions.GATKException; -import picard.illumina.parser.ReadStructure; - -import java.util.*; - -// Note: WDL Gen doesn't handle arguments that accept tagged argument values - -/** - * The GATK WDL work unit handler. Its main task is to convert the types for all arguments for a given work - * unit (tool) from Java types to WDL-compatible types by updating the freemarker map with the transformed types. - * - * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called - * by methods that are used by the GATK runtime, as this class assumes a dependency on com.sun.javadoc classes - * which may not be present. - */ -public class GATKWDLWorkUnitHandler extends WDLWorkUnitHandler { - - private final static String GATK_FREEMARKER_TEMPLATE_NAME = "wdlToolTemplate.wdl.ftl"; - - // This must be kept in sync with the value used in build.gradle, where the file is created - private final static String dummyWDLTestFileName = "dummyWDLTestFile"; - - private final static String WDL_TEST_VALUE_PROPERTY = "testValue"; - - // Map of Java argument types that the WDL generator knows how to convert to a WDL type, along with the - // corresponding string substitution that needs to be run on the (Barclay-generated) string that describes - // the type. From a purely string perspective, some of these transforms are no-ops in that no actual - // conversion is required because the type names are identical in Java and WDL (i.e, File->File or - // String->String), but they're included here for completeness, and to document the allowed type transitions. - private final static Map, ImmutablePair> javaToWDLTypeMap = - new HashMap, ImmutablePair>() { - private static final long serialVersionUID = 1L; - { - // GATK-specific File Types - put(GATKPath.class, new ImmutablePair<>(GATKPath.class.getSimpleName(), "File")); - // FeatureInputs require special handling to account for the generic type param(s) - put(FeatureInput.class, new ImmutablePair<>(FeatureInput.class.getSimpleName(), "File")); - - put(Iso8601Date.class, new ImmutablePair<>(Iso8601Date.class.getSimpleName(), "String")); - put(Date.class, new ImmutablePair<>(Date.class.getSimpleName(), "String")); - put(ReadStructure.class, new ImmutablePair<>(ReadStructure.class.getSimpleName(), "String")); - } - }; - - public GATKWDLWorkUnitHandler(final HelpDoclet doclet) { - super(doclet); - } - - /** - * @param workUnit the DocWorkUnit object being processed - * @return the name of a the freemarker template to be used for the class being documented. - * Must reside in the folder passed to the Barclay Doclet via the "-settings-dir" parameter to - * Javadoc. - */ - @Override - public String getTemplateName(final DocWorkUnit workUnit) { return GATK_FREEMARKER_TEMPLATE_NAME; } - - /** - * Return the flat filename (no paths) that the handler would like the Doclet to - * write out the documentation for workUnit. - * @param workUnit - * @return the name of the destination file to which documentation output will be written - */ - @Override - public String getDestinationFilename(final DocWorkUnit workUnit) { - return workUnit.getClazz().getSimpleName() + ".wdl"; - } - - /** - * Returns the JSON output file name. - */ - @Override - public String getJSONFilename(final DocWorkUnit workUnit) { - return workUnit.getClazz().getSimpleName() + "Inputs.json"; - } - - /** - * Add the named argument {@code argDef}to the property map if applicable. - * @param currentWorkUnit current work unit - * @param args the freemarker arg map - * @param argDef the arg to add - */ - @Override - @SuppressWarnings("unchecked") - protected void processNamedArgument( - final DocWorkUnit currentWorkUnit, - final Map>> args, - final NamedArgumentDefinition argDef) - { - // for WDL gen, we don't want the special args such as --help or --version to show up in the - // WDL or JSON input files - if (!argDef.getUnderlyingField().getDeclaringClass().equals(SpecialArgumentsCollection.class)) { - super.processNamedArgument(currentWorkUnit, args, argDef); - - // now extract any newlines out of the summary since the summary appears in a WDL line comment - final List> argMapList = args.get("all"); - argMapList.stream().forEach( - m -> { - final String actualArgName = (String) m.get(TemplateProperties.WDL_ARGUMENT_ACTUAL_NAME); - if (actualArgName != null && actualArgName.equals("--" + argDef.getLongName())) { - // the summary string must be suitable to embed in a quoted string in the param_meta section, - // so remove any quotes and newlines - final String newSummary = ((String) m.get(TemplateProperties.ARGUMENT_SUMMARY)).replaceAll("[\"\'\n]", ""); - m.put(TemplateProperties.ARGUMENT_SUMMARY, newSummary); - } - }); - } - } - - @Override - protected String processNamedArgument( - final Map argBindings, - final NamedArgumentDefinition argDef, - final String fieldCommentText) { - final String argCategory = super.processNamedArgument(argBindings, argDef, fieldCommentText); - argBindings.put(WDL_TEST_VALUE_PROPERTY, - testValueAsJSON( - argDef.getLongName(), - argDef, - (String) argBindings.get(TemplateProperties.ARGUMENT_TYPE), - (String) argBindings.get(TemplateProperties.ARGUMENT_DEFAULT_VALUE)) - ); - - return argCategory; - } - - @Override - protected void processPositionalArguments( - final CommandLineArgumentParser clp, - final Map>> args) { - super.processPositionalArguments(clp, args); - final List> positionalArgsList = args.get(TemplateProperties.ARGUMENTS_POSITIONAL); - if (positionalArgsList != null && !positionalArgsList.isEmpty()) { - final Map positionalArgs = args.get(TemplateProperties.ARGUMENTS_POSITIONAL).get(0); - positionalArgs.put(WDL_TEST_VALUE_PROPERTY, - testValueAsJSON( - WDLWorkUnitHandler.POSITIONAL_ARGS, - clp.getPositionalArgumentDefinition(), - (String) positionalArgs.get(TemplateProperties.ARGUMENT_TYPE), - (String) positionalArgs.get(TemplateProperties.ARGUMENT_DEFAULT_VALUE)) - ); - } - } - - /** - * Return a test input value for use in the WDL validation test inputs. - * - * If an option has WDL type File, then we need to provide the name of an actual file that exists so cromwell - * can localize it: "dummyWDLTestFileName" is a file that will be created by the test task. - * - * @param longName the long name for this arg - * @param argDef the ArgumentDefinition for this arg - * @param wdlType the wdl type for which an input value is needed - * @param defaultWDLValue the default value for the argument for which an input value is required - * @return a test input value that is either the default value, or the name of an actual test file - * that will exist at test execution time - */ - protected String testValueAsJSON( - final String longName, - final ArgumentDefinition argDef, - final String wdlType, - final String defaultWDLValue) { - final Argument argumentAnnotation = argDef.getUnderlyingField().getAnnotation(Argument.class); - final PositionalArguments positionalAnnotation = argDef.getUnderlyingField().getAnnotation(PositionalArguments.class); - final boolean isRequired = - (argumentAnnotation != null && !argumentAnnotation.optional()) - || positionalAnnotation != null; - final String dummyWDLTestFile = ((GATKWDLDoclet) getDoclet()).getBuildDir() + "/" + dummyWDLTestFileName; - - // Hack to resolve the mutex argument in GATKSparkTool; otherwise all spark tools will fail since all - // mutex args will have a value - if (longName.equals(GATKSparkTool.OUTPUT_SHARD_DIR_LONG_NAME)) { - return "null"; - } - - // first check the wdl type; for File we always want to use the name of the dummy file that is created by - // the test process that is used to ensure localization is handled correctly - if (wdlType.equals("File")) { - if (isRequired) { - return "\"" + dummyWDLTestFile + "\""; - } else { - return "null"; - } - } else if (wdlType.equals("Array[File]")) { - return String.format("[\"%s\", \"%s\"]", dummyWDLTestFile, dummyWDLTestFile); - } - - // for other (non-File) types, use the default value and arg def to synthesize a value - if (defaultWDLValue.equals("null") || defaultWDLValue.equals("\"\"") || defaultWDLValue.equals("[]")) { - if (isRequired) { - if (wdlType.startsWith("Array")) { - // we use two values to accommodate tools that take positional args, such as CompareSams that - // require more than one arg - return String.format("[\"%s\", \"%s\"]", getDefaultValueForType(argDef), getDefaultValueForType(argDef)); - } else { - return "\"" + getDefaultValueForType(argDef) + "\""; - } - } else { - return "null"; - } - } else if (defaultWDLValue.startsWith("[")) { - // for required arrays, we need to provide SOME value in the array - if (isRequired) { - return defaultWDLValue; - } else { - return "null"; - } - } else if (wdlType.equals("Float")) { - if (defaultWDLValue.equals("Infinity") || defaultWDLValue.equals("Nan")) { - // JSON does not recognize "Infinity" or "Nan" as valid float values (!), so we - // need to treat them as String values - return "\"" + defaultWDLValue + "\""; - } - } - return defaultWDLValue; - } - - /** - * Return a value that will satisfy the constructor for argDef's underlying class. - * @param argDef - * @return a value that will satisfy the constructor for argDef's underlying class. - */ - protected String getDefaultValueForType(final ArgumentDefinition argDef) { - final Class clazz = argDef.getUnderlyingFieldClass(); - if (clazz.isEnum()) { - // any enum constant for this enum will do - return argDef.getUnderlyingFieldClass().getEnumConstants()[0].toString(); - } else { - // get a value that is formatted appropriately by calling toString() on the value - // on the underlying object if its not null, otherwise return a synthetic string - // suitable for the underlying type - final Object fieldDefaultValue = argDef.getArgumentValue(); - if (fieldDefaultValue != null && !fieldDefaultValue.toString().equals("[]")) { - return fieldDefaultValue.toString(); - } else if (clazz.isAssignableFrom(Boolean.class) || - clazz.isAssignableFrom(boolean.class)) { - return "true"; - } else if (clazz.isAssignableFrom(Float.class) || - clazz.isAssignableFrom(float.class) || - clazz.isAssignableFrom(Double.class) || - clazz.isAssignableFrom(double.class)) { - return "0.0"; - } else if (clazz.isAssignableFrom(Integer.class) || - clazz.isAssignableFrom(int.class) || - clazz.isAssignableFrom(Long.class) || - clazz.isAssignableFrom(long.class)) { - return "1"; - } else { - // give up and return a String with a synthetic value - return "syntheticTestValue"; - } - } - } - - /** - * Given a Java class representing the underlying field type of an argument, and a human readable doc type, - * convert the docType to a WDL type. - * - * @param workflowOutput the WorkflowOutput associated with the instance of argumentClass, if any - * @param argumentClass the Class for the underlying field of the argument being converted - * @param docType a string representing the human readable type assigned by the Barclay doc system - * @param sourceContext a String describing the context for this argument, used for error reporting - * @return the docType string transformed to the corresponding WDL type - */ - @Override - protected String convertJavaTypeToWDLType( - final WorkflowOutput workflowOutput, - final Class argumentClass, - final String docType, - final String sourceContext) { - String convertedWDLType; - if (FeatureInput.class.isAssignableFrom(argumentClass)) { - if (!docType.contains(FeatureInput.class.getSimpleName())) { - throw new GATKException( - String.format( - "Don't know how to convert Java type %s in %s to a corresponding WDL type. " + - "The WDL generator type converter code must be updated to support this Java type.", - argumentClass, - sourceContext)); - } - final Pair typeConversionPair = transformToWDLType(argumentClass); - convertedWDLType = docType.replaceFirst("FeatureInput\\[[a-zA-Z0-9?]+\\]", typeConversionPair.getValue()); - - // finally, if this type is for an arg that is a WorkflowOutput that is a workflow output, and its type - // is file, we need to use a different type (String) as the input type for this arg to prevent the workflow - // manager from attempting to localize the (non-existent) output file when localizing inputs - return transformWorkflowOutputTypeToInputType(workflowOutput, convertedWDLType); - } - return super.convertJavaTypeToWDLType(workflowOutput, argumentClass, docType, sourceContext); - } - - /** - * Given an argument class, return a String pair representing the string that should be replaced (the Java type), - * and the string to substitute (the corresponding WDL type), i.e., for an argument with type Java Integer.class, - * return the Pair ("Integer", "Int") to convert from the Java type to the corresponding WDL type. - * @param argumentClass Class of the argument being converter - * @return a String pair representing the original and replacement type text, or null if no conversion is available - */ - @Override - protected Pair transformToWDLType(final Class argumentClass) { - Pair conversion = javaToWDLTypeMap.get(argumentClass); - return conversion == null ? super.transformToWDLType(argumentClass) : conversion; - } - - /** - * Given a Java collection class, return a String pair representing the string that should be replaced (the Java type), - * and the string to substitute (the corresponding WDL type), i.e., for an argument with type Java List.class, - * return the Pair ("List", "Array") to convert from the Java type to the corresponding WDL collection type. - * @param argumentCollectionClass collection Class of the argument being converter - * @return a String pair representing the original and replacement type text, or null if no conversion is available - */ - @Override - protected Pair transformToWDLCollectionType(final Class argumentCollectionClass) { - // required for Picard LiftoverVcf - return argumentCollectionClass.equals(Collection.class) ? - new ImmutablePair<>("Collection", "Array"): - super.transformToWDLCollectionType(argumentCollectionClass); - } - - /** - * Add any custom freemarker bindings discovered via custom javadoc tags. Subclasses can override this to - * provide additional custom bindings. - * - * @param currentWorkUnit the work unit for the feature being documented - */ - @Override - protected void addCustomBindings(final DocWorkUnit currentWorkUnit) { - super.addCustomBindings(currentWorkUnit); - - // Picard tools use the summary line for the long overview section, so extract that - // from Picard tools only, and put it in the freemarker map. - Class toolClass = currentWorkUnit.getClazz(); - if (picard.cmdline.CommandLineProgram.class.isAssignableFrom(toolClass)) { - final CommandLineProgramProperties clpProperties = currentWorkUnit.getCommandLineProperties(); - currentWorkUnit.setProperty("picardsummary", clpProperties.summary()); - } - - // add the buildDir as a property so it can be accessed by the test inputs JSON file - currentWorkUnit.setProperty("buildDir", ((GATKWDLDoclet)getDoclet()).getBuildDir()); - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import htsjdk.samtools.util.Iso8601Date; +//import org.apache.commons.lang3.tuple.ImmutablePair; +//import org.apache.commons.lang3.tuple.Pair; +// +//import org.broadinstitute.barclay.argparser.*; +//import org.broadinstitute.barclay.help.DocWorkUnit; +//import org.broadinstitute.barclay.help.HelpDoclet; +//import org.broadinstitute.barclay.help.TemplateProperties; +//import org.broadinstitute.barclay.help.WDLWorkUnitHandler; +//import org.broadinstitute.hellbender.engine.FeatureInput; +//import org.broadinstitute.hellbender.engine.GATKPath; +//import org.broadinstitute.hellbender.engine.spark.GATKSparkTool; +//import org.broadinstitute.hellbender.exceptions.GATKException; +//import picard.illumina.parser.ReadStructure; +// +//import java.util.*; +// +//// Note: WDL Gen doesn't handle arguments that accept tagged argument values +// +///** +// * The GATK WDL work unit handler. Its main task is to convert the types for all arguments for a given work +// * unit (tool) from Java types to WDL-compatible types by updating the freemarker map with the transformed types. +// * +// * NOTE: Methods in this class are intended to be called by Gradle/Javadoc only, and should not be called +// * by methods that are used by the GATK runtime, as this class assumes a dependency on com.sun.javadoc classes +// * which may not be present. +// */ +//public class GATKWDLWorkUnitHandler extends WDLWorkUnitHandler { +// +// private final static String GATK_FREEMARKER_TEMPLATE_NAME = "wdlToolTemplate.wdl.ftl"; +// +// // This must be kept in sync with the value used in build.gradle, where the file is created +// private final static String dummyWDLTestFileName = "dummyWDLTestFile"; +// +// private final static String WDL_TEST_VALUE_PROPERTY = "testValue"; +// +// // Map of Java argument types that the WDL generator knows how to convert to a WDL type, along with the +// // corresponding string substitution that needs to be run on the (Barclay-generated) string that describes +// // the type. From a purely string perspective, some of these transforms are no-ops in that no actual +// // conversion is required because the type names are identical in Java and WDL (i.e, File->File or +// // String->String), but they're included here for completeness, and to document the allowed type transitions. +// private final static Map, ImmutablePair> javaToWDLTypeMap = +// new HashMap, ImmutablePair>() { +// private static final long serialVersionUID = 1L; +// { +// // GATK-specific File Types +// put(GATKPath.class, new ImmutablePair<>(GATKPath.class.getSimpleName(), "File")); +// // FeatureInputs require special handling to account for the generic type param(s) +// put(FeatureInput.class, new ImmutablePair<>(FeatureInput.class.getSimpleName(), "File")); +// +// put(Iso8601Date.class, new ImmutablePair<>(Iso8601Date.class.getSimpleName(), "String")); +// put(Date.class, new ImmutablePair<>(Date.class.getSimpleName(), "String")); +// put(ReadStructure.class, new ImmutablePair<>(ReadStructure.class.getSimpleName(), "String")); +// } +// }; +// +// public GATKWDLWorkUnitHandler(final HelpDoclet doclet) { +// super(doclet); +// } +// +// /** +// * @param workUnit the DocWorkUnit object being processed +// * @return the name of a the freemarker template to be used for the class being documented. +// * Must reside in the folder passed to the Barclay Doclet via the "-settings-dir" parameter to +// * Javadoc. +// */ +// @Override +// public String getTemplateName(final DocWorkUnit workUnit) { return GATK_FREEMARKER_TEMPLATE_NAME; } +// +// /** +// * Return the flat filename (no paths) that the handler would like the Doclet to +// * write out the documentation for workUnit. +// * @param workUnit +// * @return the name of the destination file to which documentation output will be written +// */ +// @Override +// public String getDestinationFilename(final DocWorkUnit workUnit) { +// return workUnit.getClazz().getSimpleName() + ".wdl"; +// } +// +// /** +// * Returns the JSON output file name. +// */ +// @Override +// public String getJSONFilename(final DocWorkUnit workUnit) { +// return workUnit.getClazz().getSimpleName() + "Inputs.json"; +// } +// +// /** +// * Add the named argument {@code argDef}to the property map if applicable. +// * @param currentWorkUnit current work unit +// * @param args the freemarker arg map +// * @param argDef the arg to add +// */ +// @Override +// @SuppressWarnings("unchecked") +// protected void processNamedArgument( +// final DocWorkUnit currentWorkUnit, +// final Map>> args, +// final NamedArgumentDefinition argDef) +// { +// // for WDL gen, we don't want the special args such as --help or --version to show up in the +// // WDL or JSON input files +// if (!argDef.getUnderlyingField().getDeclaringClass().equals(SpecialArgumentsCollection.class)) { +// super.processNamedArgument(currentWorkUnit, args, argDef); +// +// // now extract any newlines out of the summary since the summary appears in a WDL line comment +// final List> argMapList = args.get("all"); +// argMapList.stream().forEach( +// m -> { +// final String actualArgName = (String) m.get(TemplateProperties.WDL_ARGUMENT_ACTUAL_NAME); +// if (actualArgName != null && actualArgName.equals("--" + argDef.getLongName())) { +// // the summary string must be suitable to embed in a quoted string in the param_meta section, +// // so remove any quotes and newlines +// final String newSummary = ((String) m.get(TemplateProperties.ARGUMENT_SUMMARY)).replaceAll("[\"\'\n]", ""); +// m.put(TemplateProperties.ARGUMENT_SUMMARY, newSummary); +// } +// }); +// } +// } +// +// @Override +// protected String processNamedArgument( +// final Map argBindings, +// final NamedArgumentDefinition argDef, +// final String fieldCommentText) { +// final String argCategory = super.processNamedArgument(argBindings, argDef, fieldCommentText); +// argBindings.put(WDL_TEST_VALUE_PROPERTY, +// testValueAsJSON( +// argDef.getLongName(), +// argDef, +// (String) argBindings.get(TemplateProperties.ARGUMENT_TYPE), +// (String) argBindings.get(TemplateProperties.ARGUMENT_DEFAULT_VALUE)) +// ); +// +// return argCategory; +// } +// +// @Override +// protected void processPositionalArguments( +// final CommandLineArgumentParser clp, +// final Map>> args) { +// super.processPositionalArguments(clp, args); +// final List> positionalArgsList = args.get(TemplateProperties.ARGUMENTS_POSITIONAL); +// if (positionalArgsList != null && !positionalArgsList.isEmpty()) { +// final Map positionalArgs = args.get(TemplateProperties.ARGUMENTS_POSITIONAL).get(0); +// positionalArgs.put(WDL_TEST_VALUE_PROPERTY, +// testValueAsJSON( +// WDLWorkUnitHandler.POSITIONAL_ARGS, +// clp.getPositionalArgumentDefinition(), +// (String) positionalArgs.get(TemplateProperties.ARGUMENT_TYPE), +// (String) positionalArgs.get(TemplateProperties.ARGUMENT_DEFAULT_VALUE)) +// ); +// } +// } +// +// /** +// * Return a test input value for use in the WDL validation test inputs. +// * +// * If an option has WDL type File, then we need to provide the name of an actual file that exists so cromwell +// * can localize it: "dummyWDLTestFileName" is a file that will be created by the test task. +// * +// * @param longName the long name for this arg +// * @param argDef the ArgumentDefinition for this arg +// * @param wdlType the wdl type for which an input value is needed +// * @param defaultWDLValue the default value for the argument for which an input value is required +// * @return a test input value that is either the default value, or the name of an actual test file +// * that will exist at test execution time +// */ +// protected String testValueAsJSON( +// final String longName, +// final ArgumentDefinition argDef, +// final String wdlType, +// final String defaultWDLValue) { +// final Argument argumentAnnotation = argDef.getUnderlyingField().getAnnotation(Argument.class); +// final PositionalArguments positionalAnnotation = argDef.getUnderlyingField().getAnnotation(PositionalArguments.class); +// final boolean isRequired = +// (argumentAnnotation != null && !argumentAnnotation.optional()) +// || positionalAnnotation != null; +// final String dummyWDLTestFile = ((GATKWDLDoclet) getDoclet()).getBuildDir() + "/" + dummyWDLTestFileName; +// +// // Hack to resolve the mutex argument in GATKSparkTool; otherwise all spark tools will fail since all +// // mutex args will have a value +// if (longName.equals(GATKSparkTool.OUTPUT_SHARD_DIR_LONG_NAME)) { +// return "null"; +// } +// +// // first check the wdl type; for File we always want to use the name of the dummy file that is created by +// // the test process that is used to ensure localization is handled correctly +// if (wdlType.equals("File")) { +// if (isRequired) { +// return "\"" + dummyWDLTestFile + "\""; +// } else { +// return "null"; +// } +// } else if (wdlType.equals("Array[File]")) { +// return String.format("[\"%s\", \"%s\"]", dummyWDLTestFile, dummyWDLTestFile); +// } +// +// // for other (non-File) types, use the default value and arg def to synthesize a value +// if (defaultWDLValue.equals("null") || defaultWDLValue.equals("\"\"") || defaultWDLValue.equals("[]")) { +// if (isRequired) { +// if (wdlType.startsWith("Array")) { +// // we use two values to accommodate tools that take positional args, such as CompareSams that +// // require more than one arg +// return String.format("[\"%s\", \"%s\"]", getDefaultValueForType(argDef), getDefaultValueForType(argDef)); +// } else { +// return "\"" + getDefaultValueForType(argDef) + "\""; +// } +// } else { +// return "null"; +// } +// } else if (defaultWDLValue.startsWith("[")) { +// // for required arrays, we need to provide SOME value in the array +// if (isRequired) { +// return defaultWDLValue; +// } else { +// return "null"; +// } +// } else if (wdlType.equals("Float")) { +// if (defaultWDLValue.equals("Infinity") || defaultWDLValue.equals("Nan")) { +// // JSON does not recognize "Infinity" or "Nan" as valid float values (!), so we +// // need to treat them as String values +// return "\"" + defaultWDLValue + "\""; +// } +// } +// return defaultWDLValue; +// } +// +// /** +// * Return a value that will satisfy the constructor for argDef's underlying class. +// * @param argDef +// * @return a value that will satisfy the constructor for argDef's underlying class. +// */ +// protected String getDefaultValueForType(final ArgumentDefinition argDef) { +// final Class clazz = argDef.getUnderlyingFieldClass(); +// if (clazz.isEnum()) { +// // any enum constant for this enum will do +// return argDef.getUnderlyingFieldClass().getEnumConstants()[0].toString(); +// } else { +// // get a value that is formatted appropriately by calling toString() on the value +// // on the underlying object if its not null, otherwise return a synthetic string +// // suitable for the underlying type +// final Object fieldDefaultValue = argDef.getArgumentValue(); +// if (fieldDefaultValue != null && !fieldDefaultValue.toString().equals("[]")) { +// return fieldDefaultValue.toString(); +// } else if (clazz.isAssignableFrom(Boolean.class) || +// clazz.isAssignableFrom(boolean.class)) { +// return "true"; +// } else if (clazz.isAssignableFrom(Float.class) || +// clazz.isAssignableFrom(float.class) || +// clazz.isAssignableFrom(Double.class) || +// clazz.isAssignableFrom(double.class)) { +// return "0.0"; +// } else if (clazz.isAssignableFrom(Integer.class) || +// clazz.isAssignableFrom(int.class) || +// clazz.isAssignableFrom(Long.class) || +// clazz.isAssignableFrom(long.class)) { +// return "1"; +// } else { +// // give up and return a String with a synthetic value +// return "syntheticTestValue"; +// } +// } +// } +// +// /** +// * Given a Java class representing the underlying field type of an argument, and a human readable doc type, +// * convert the docType to a WDL type. +// * +// * @param workflowOutput the WorkflowOutput associated with the instance of argumentClass, if any +// * @param argumentClass the Class for the underlying field of the argument being converted +// * @param docType a string representing the human readable type assigned by the Barclay doc system +// * @param sourceContext a String describing the context for this argument, used for error reporting +// * @return the docType string transformed to the corresponding WDL type +// */ +// @Override +// protected String convertJavaTypeToWDLType( +// final WorkflowOutput workflowOutput, +// final Class argumentClass, +// final String docType, +// final String sourceContext) { +// String convertedWDLType; +// if (FeatureInput.class.isAssignableFrom(argumentClass)) { +// if (!docType.contains(FeatureInput.class.getSimpleName())) { +// throw new GATKException( +// String.format( +// "Don't know how to convert Java type %s in %s to a corresponding WDL type. " + +// "The WDL generator type converter code must be updated to support this Java type.", +// argumentClass, +// sourceContext)); +// } +// final Pair typeConversionPair = transformToWDLType(argumentClass); +// convertedWDLType = docType.replaceFirst("FeatureInput\\[[a-zA-Z0-9?]+\\]", typeConversionPair.getValue()); +// +// // finally, if this type is for an arg that is a WorkflowOutput that is a workflow output, and its type +// // is file, we need to use a different type (String) as the input type for this arg to prevent the workflow +// // manager from attempting to localize the (non-existent) output file when localizing inputs +// return transformWorkflowOutputTypeToInputType(workflowOutput, convertedWDLType); +// } +// return super.convertJavaTypeToWDLType(workflowOutput, argumentClass, docType, sourceContext); +// } +// +// /** +// * Given an argument class, return a String pair representing the string that should be replaced (the Java type), +// * and the string to substitute (the corresponding WDL type), i.e., for an argument with type Java Integer.class, +// * return the Pair ("Integer", "Int") to convert from the Java type to the corresponding WDL type. +// * @param argumentClass Class of the argument being converter +// * @return a String pair representing the original and replacement type text, or null if no conversion is available +// */ +// @Override +// protected Pair transformToWDLType(final Class argumentClass) { +// Pair conversion = javaToWDLTypeMap.get(argumentClass); +// return conversion == null ? super.transformToWDLType(argumentClass) : conversion; +// } +// +// /** +// * Given a Java collection class, return a String pair representing the string that should be replaced (the Java type), +// * and the string to substitute (the corresponding WDL type), i.e., for an argument with type Java List.class, +// * return the Pair ("List", "Array") to convert from the Java type to the corresponding WDL collection type. +// * @param argumentCollectionClass collection Class of the argument being converter +// * @return a String pair representing the original and replacement type text, or null if no conversion is available +// */ +// @Override +// protected Pair transformToWDLCollectionType(final Class argumentCollectionClass) { +// // required for Picard LiftoverVcf +// return argumentCollectionClass.equals(Collection.class) ? +// new ImmutablePair<>("Collection", "Array"): +// super.transformToWDLCollectionType(argumentCollectionClass); +// } +// +// /** +// * Add any custom freemarker bindings discovered via custom javadoc tags. Subclasses can override this to +// * provide additional custom bindings. +// * +// * @param currentWorkUnit the work unit for the feature being documented +// */ +// @Override +// protected void addCustomBindings(final DocWorkUnit currentWorkUnit) { +// super.addCustomBindings(currentWorkUnit); +// +// // Picard tools use the summary line for the long overview section, so extract that +// // from Picard tools only, and put it in the freemarker map. +// Class toolClass = currentWorkUnit.getClazz(); +// if (picard.cmdline.CommandLineProgram.class.isAssignableFrom(toolClass)) { +// final CommandLineProgramProperties clpProperties = currentWorkUnit.getCommandLineProperties(); +// currentWorkUnit.setProperty("picardsummary", clpProperties.summary()); +// } +// +// // add the buildDir as a property so it can be accessed by the test inputs JSON file +// currentWorkUnit.setProperty("buildDir", ((GATKWDLDoclet)getDoclet()).getBuildDir()); +// } +// +//} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummary.java b/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummary.java deleted file mode 100644 index 6d9d28067d5..00000000000 --- a/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummary.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.broadinstitute.hellbender.utils.mcmc; - -import java.io.Serializable; - -/** - * Represents central tendency and upper/lower credible-interval bounds of the posterior of a univariate model parameter, - * along with optional deciles. - * - * @author Samuel Lee <slee@broadinstitute.org> - */ -public final class PosteriorSummary implements Serializable { - - static final long serialVersionUID = 144L; - - private final double center; - private final double lower; - private final double upper; - private DecileCollection deciles; - - /** - * Constructs a PosteriorSummary with only given central tendency and upper/lower credible-interval bounds. - * @param center central tendency - * @param lower lower credible-interval bound - * @param upper upper credible-interval bound - */ - public PosteriorSummary(final double center, final double lower, final double upper) { - this.center = center; - this.lower = lower; - this.upper = upper; - deciles = null; - } - - public double getCenter() { return center; } - public double getLower() { return lower; } - public double getUpper() { return upper; } - - /** - * Gets the {@link DecileCollection} if it was set previously by {@link PosteriorSummary#setDeciles(DecileCollection)}. - * @throws IllegalStateException if deciles were not set previously - */ - public DecileCollection getDeciles() { - if (deciles == null) { - throw new IllegalStateException("Cannot get deciles before they are set."); - } - return deciles; - } - - public void setDeciles(final DecileCollection deciles) { - this.deciles = deciles; - } -} diff --git a/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtils.java b/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtils.java deleted file mode 100644 index 0ea19760198..00000000000 --- a/src/main/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtils.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.broadinstitute.hellbender.utils.mcmc; - -import com.google.common.primitives.Doubles; -import org.apache.commons.math3.optim.MaxEval; -import org.apache.commons.math3.optim.nonlinear.scalar.GoalType; -import org.apache.commons.math3.optim.univariate.BrentOptimizer; -import org.apache.commons.math3.optim.univariate.SearchInterval; -import org.apache.commons.math3.optim.univariate.UnivariateObjectiveFunction; -import org.apache.commons.math3.stat.descriptive.moment.Mean; -import org.apache.commons.math3.stat.descriptive.moment.StandardDeviation; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.stat.KernelDensity; -import org.broadinstitute.hellbender.utils.Utils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Contains methods for computing summary statistics for the posterior of a univariate model parameter. - * - * @author Samuel Lee <slee@broadinstitute.org> - */ -public class PosteriorSummaryUtils { - public static final double SILVERMANS_RULE_CONSTANT = 1.06; - public static final double SILVERMANS_RULE_EXPONENT = -0.2; - //constants for Brent optimization - private static final MaxEval BRENT_MAX_EVAL = new MaxEval(100); - private static final double RELATIVE_TOLERANCE = 0.01; - - private PosteriorSummaryUtils() { - } - - /** - * Given a list of posterior samples, returns a PosteriorSummary with central tendency given by the posterior mode - * (which is estimated using mllib kernel density estimation in {@link KernelDensity}, - * see {@link PosteriorSummaryUtils#calculatePosteriorMode(List, JavaSparkContext)}) and lower/upper credible-interval - * bounds given by the (1-{@code alpha}) highest-posterior-density interval (i.e., the narrowest interval - * that contains (1-{@code alpha}) of the samples). Unimodality is assumed. If the samples contain - * {@link Double#NaN}, a {@link PosteriorSummary} with - * {@link PosteriorSummary#center}, {@link PosteriorSummary#lower}, and {@link PosteriorSummary#upper} - * all set to {@link Double#NaN} will be returned. - * @param samples posterior samples, cannot be {@code null} and number of samples must be greater than 0 - * @param alpha credible-interval alpha, must be in (0, 1) - * @param ctx {@link JavaSparkContext} used by {@link KernelDensity} for mllib kernel density estimation - */ - public static PosteriorSummary calculateHighestPosteriorDensitySummary(final List samples, - final double alpha, - final JavaSparkContext ctx) { - Utils.nonNull(samples); - Utils.validateArg(samples.size() > 0, "Number of samples must be greater than zero."); - Utils.validateArg(0 < alpha && alpha < 1, "Alpha must be in (0, 1)."); - - final double central = calculatePosteriorMode(samples, ctx); - - //if samples contain NaN, return NaN for all posterior-summary values - if (Double.isNaN(central)) { - return new PosteriorSummary(Double.NaN, Double.NaN, Double.NaN); - } - - //find highest-posterior-density interval using simple Chen & Shao 1998 procedure - final List sortedSamples = new ArrayList<>(samples); - Collections.sort(sortedSamples); - final int n = sortedSamples.size(); - double lower = sortedSamples.get(0); - double upper = sortedSamples.get(n - 1); - double minIntervalWidth = sortedSamples.get(n - 1) - sortedSamples.get(0); - final int numSamplesInInterval = (int) Math.floor((1 - alpha) * n); - for (int i = 0; i < n - numSamplesInInterval; i++) { - final double intervalWidth = sortedSamples.get(i + numSamplesInInterval) - sortedSamples.get(i); - if (intervalWidth < minIntervalWidth) { - minIntervalWidth = intervalWidth; - lower = sortedSamples.get(i); - upper = sortedSamples.get(i + numSamplesInInterval); - } - } - - return new PosteriorSummary(central, lower, upper); - } - - /** - * Given a list of posterior samples, returns a PosteriorSummary with central tendency given by the posterior mode - * (which is estimated using mllib kernel density estimation in {@link KernelDensity}, - * see {@link PosteriorSummaryUtils#calculatePosteriorMode(List, JavaSparkContext)}), lower/upper credible-interval - * bounds given by the (1-{@code alpha}) highest-posterior-density interval (i.e., the narrowest interval - * that contains (1-{@code alpha}) of the samples), and deciles. Unimodality is assumed. If the samples contain - * {@link Double#NaN}, a {@link PosteriorSummary} with - * {@link PosteriorSummary#center}, {@link PosteriorSummary#lower}, and {@link PosteriorSummary#upper} - * all set to {@link Double#NaN} will be returned. - * @param samples posterior samples, cannot be {@code null} and number of samples must be greater than 0 - * @param alpha credible-interval alpha, must be in (0, 1) - * @param ctx {@link JavaSparkContext} used by {@link KernelDensity} for mllib kernel density estimation - */ - public static PosteriorSummary calculateHighestPosteriorDensityAndDecilesSummary(final List samples, - final double alpha, - final JavaSparkContext ctx) { - Utils.nonNull(samples); - Utils.validateArg(samples.size() > 0, "Number of samples must be greater than zero."); - Utils.validateArg(0 < alpha && alpha < 1, "Alpha must be in (0, 1)."); - - final PosteriorSummary posteriorSummary = calculateHighestPosteriorDensitySummary(samples, alpha, ctx); - final DecileCollection deciles = new DecileCollection(samples); - posteriorSummary.setDeciles(deciles); - return posteriorSummary; - } - - /** - * Given a list of posterior samples, returns an estimate of the posterior mode (using - * mllib kernel density estimation in {@link KernelDensity} and {@link BrentOptimizer}). - * Note that estimate may be poor if number of samples is small (resulting in poor kernel density estimation), - * or if posterior is not unimodal (or is sufficiently pathological otherwise). If the samples contain - * {@link Double#NaN}, {@link Double#NaN} will be returned. - * @param samples posterior samples, cannot be {@code null} and number of samples must be greater than 0 - * @param ctx {@link JavaSparkContext} used by {@link KernelDensity} for mllib kernel density estimation - */ - public static double calculatePosteriorMode(final List samples, final JavaSparkContext ctx) { - Utils.nonNull(samples); - Utils.validateArg(samples.size() > 0, "Number of samples must be greater than zero."); - - //calculate sample min, max, mean, and standard deviation - final double sampleMin = Collections.min(samples); - final double sampleMax = Collections.max(samples); - final double sampleMean = new Mean().evaluate(Doubles.toArray(samples)); - final double sampleStandardDeviation = new StandardDeviation().evaluate(Doubles.toArray(samples)); - - //if samples are all the same or contain NaN, can simply return mean - if (sampleStandardDeviation == 0. || Double.isNaN(sampleMean)) { - return sampleMean; - } - - //use Silverman's rule to set bandwidth for kernel density estimation from sample standard deviation - //see https://en.wikipedia.org/wiki/Kernel_density_estimation#Practical_estimation_of_the_bandwidth - final double bandwidth = - SILVERMANS_RULE_CONSTANT * sampleStandardDeviation * Math.pow(samples.size(), SILVERMANS_RULE_EXPONENT); - - //use kernel density estimation to approximate posterior from samples - final KernelDensity pdf = new KernelDensity().setSample(ctx.parallelize(samples, 1)).setBandwidth(bandwidth); - - //use Brent optimization to find mode (i.e., maximum) of kernel-density-estimated posterior - final BrentOptimizer optimizer = - new BrentOptimizer(RELATIVE_TOLERANCE, RELATIVE_TOLERANCE * (sampleMax - sampleMin)); - final UnivariateObjectiveFunction objective = - new UnivariateObjectiveFunction(f -> pdf.estimate(new double[] {f})[0]); - //search for mode within sample range, start near sample mean - final SearchInterval searchInterval = new SearchInterval(sampleMin, sampleMax, sampleMean); - return optimizer.optimize(objective, GoalType.MAXIMIZE, searchInterval, BRENT_MAX_EVAL).getPoint(); - } -} diff --git a/src/test/java/org/broadinstitute/hellbender/MainTest.java b/src/test/java/org/broadinstitute/hellbender/MainTest.java index 50fae383eb0..337f6289eec 100644 --- a/src/test/java/org/broadinstitute/hellbender/MainTest.java +++ b/src/test/java/org/broadinstitute/hellbender/MainTest.java @@ -66,53 +66,53 @@ private static final class ExitNotAllowedException extends SecurityException { } } - private static final class ThrowOnExitSecurityManager extends SecurityManager { - - @Override - public void checkPermission(Permission perm) { - // allow anything. - } - - @Override - public void checkPermission(Permission perm, Object context) { - // allow anything. - } - - @Override - public void checkExit(int status) { - super.checkExit(status); - // always throw - throw new ExitNotAllowedException(status); - } - } - - @Test(singleThreaded = true) - public void testMainErrorWithoutStackTrace() { - final SecurityManager backup = System.getSecurityManager(); - try { - System.setSecurityManager(new ThrowOnExitSecurityManager()); - new Main().mainEntry(new String[]{"PrintReadsW"}); - Assert.fail("Should never reach here"); - } catch (ExitNotAllowedException e) { - // does exist as if it is an user exception - Assert.assertEquals(e.status, Main.USER_EXCEPTION_EXIT_VALUE); - } finally { - System.setSecurityManager(backup); - } - } - @Test(singleThreaded = true) - public void testNonZeroPicardReturnValue() { - final SecurityManager backup = System.getSecurityManager(); - try { - System.setSecurityManager(new ThrowOnExitSecurityManager()); - new Main().mainEntry(new String[]{"ExtractSequences"}); - Assert.fail("Should never reach here"); - } catch (final ExitNotAllowedException e) { - Assert.assertEquals(e.status, Main.PICARD_TOOL_EXCEPTION); - } finally { - System.setSecurityManager(backup); - } - } +// private static final class ThrowOnExitSecurityManager extends SecurityManager { +// +// @Override +// public void checkPermission(Permission perm) { +// // allow anything. +// } +// +// @Override +// public void checkPermission(Permission perm, Object context) { +// // allow anything. +// } +// +// @Override +// public void checkExit(int status) { +// super.checkExit(status); +// // always throw +// throw new ExitNotAllowedException(status); +// } +// } +// +// @Test(singleThreaded = true) +// public void testMainErrorWithoutStackTrace() { +// final SecurityManager backup = System.getSecurityManager(); +// try { +// System.setSecurityManager(new ThrowOnExitSecurityManager()); +// new Main().mainEntry(new String[]{"PrintReadsW"}); +// Assert.fail("Should never reach here"); +// } catch (ExitNotAllowedException e) { +// // does exist as if it is an user exception +// Assert.assertEquals(e.status, Main.USER_EXCEPTION_EXIT_VALUE); +// } finally { +// System.setSecurityManager(backup); +// } +// } +// @Test(singleThreaded = true) +// public void testNonZeroPicardReturnValue() { +// final SecurityManager backup = System.getSecurityManager(); +// try { +// System.setSecurityManager(new ThrowOnExitSecurityManager()); +// new Main().mainEntry(new String[]{"ExtractSequences"}); +// Assert.fail("Should never reach here"); +// } catch (final ExitNotAllowedException e) { +// Assert.assertEquals(e.status, Main.PICARD_TOOL_EXCEPTION); +// } finally { +// System.setSecurityManager(backup); +// } +// } @Test public void testEnsureShortDescriptionsAreShort() { diff --git a/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptorUnitTest.java b/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptorUnitTest.java index e5ad4d233ac..8920a445117 100644 --- a/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptorUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKAnnotationPluginDescriptorUnitTest.java @@ -36,6 +36,7 @@ public class GATKAnnotationPluginDescriptorUnitTest extends GATKBaseTest { // null print stream for the tests + @SuppressWarnings("deprecation") private static final PrintStream nullMessageStream = new PrintStream(new NullOutputStream()); //====================================================================================================================== diff --git a/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKReadFilterPluginDescriptorTest.java b/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKReadFilterPluginDescriptorTest.java index 59269d0d440..be91ff8cf1d 100644 --- a/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKReadFilterPluginDescriptorTest.java +++ b/src/test/java/org/broadinstitute/hellbender/cmdline/GATKPlugin/GATKReadFilterPluginDescriptorTest.java @@ -35,6 +35,7 @@ public class GATKReadFilterPluginDescriptorTest extends GATKBaseTest { // null print stream for the tests + @SuppressWarnings("deprecation") private static final PrintStream nullMessageStream = new PrintStream(new NullOutputStream()); @DataProvider(name = "defaultFiltersForAllowedValues") diff --git a/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java b/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java index 542938af228..f67ab15962c 100644 --- a/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/engine/AssemblyRegionIteratorUnitTest.java @@ -56,7 +56,7 @@ public Object[][] testCorrectRegionsHaveCorrectReadsAndSizeData() { public void testRegionsHaveCorrectReadsAndSize( final String reads, final String reference, final List shardIntervals, final int minRegionSize, final int maxRegionSize, final int assemblyRegionPadding ) throws IOException { try (final ReadsDataSource readsSource = new ReadsPathDataSource(IOUtils.getPath(reads)); final ReferenceDataSource refSource = ReferenceDataSource.of(IOUtils.getPath(reference)); - final ReferenceSequenceFile referenceReader = new CachingIndexedFastaSequenceFile(IOUtils.getPath(b37_reference_20_21)); + final CachingIndexedFastaSequenceFile referenceReader = new CachingIndexedFastaSequenceFile(IOUtils.getPath(b37_reference_20_21)); ) { final SAMSequenceDictionary readsDictionary = readsSource.getSequenceDictionary(); final MultiIntervalLocalReadShard readShard = new MultiIntervalLocalReadShard(shardIntervals, assemblyRegionPadding, readsSource); diff --git a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSinkUnitTest.java b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSinkUnitTest.java index 664f335edb3..abc568e9d20 100644 --- a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSinkUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSinkUnitTest.java @@ -19,6 +19,7 @@ import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; @@ -38,6 +39,11 @@ public class ReadsSparkSinkUnitTest extends GATKBaseTest { @BeforeClass(alwaysRun = true) private void setupMiniCluster() throws IOException { + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } cluster = MiniClusterUtils.getMiniCluster(); } diff --git a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSourceUnitTest.java b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSourceUnitTest.java index 90688ba7656..65ca3d4aa2f 100644 --- a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSourceUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/ReadsSparkSourceUnitTest.java @@ -21,6 +21,7 @@ import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -194,6 +195,11 @@ public void testReadFromFileAndHDFS() throws Exception { //TODO: add or change getTestFile overload with GATKPath final GATKPath bam = new GATKPath(getTestFile("hdfs_file_test.bam").getAbsolutePath()); final File bai = getTestFile("hdfs_file_test.bai"); + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster( cluster -> { final Path workingDirectory = MiniClusterUtils.getWorkingDir(cluster); final Path bamPath = new Path(workingDirectory,"hdfs.bam"); @@ -217,6 +223,11 @@ public void testCRAMReferenceFromHDFS() throws Exception { final GATKPath reference = new GATKPath(v37_chr17_1Mb_Reference); final GATKPath referenceIndex = new GATKPath(v37_chr17_1Mb_Reference + ".fai"); + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster( cluster -> { final Path workingDirectory = MiniClusterUtils.getWorkingDir(cluster); final Path cramHDFSPath = new Path(workingDirectory, "hdfs.cram"); diff --git a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/VariantsSparkSinkUnitTest.java b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/VariantsSparkSinkUnitTest.java index 794e83a78d7..81db526de2a 100644 --- a/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/VariantsSparkSinkUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/engine/spark/datasources/VariantsSparkSinkUnitTest.java @@ -34,6 +34,7 @@ import org.broadinstitute.hellbender.utils.gcs.BucketUtils; import org.broadinstitute.hellbender.utils.io.IOUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; @@ -51,6 +52,11 @@ public final class VariantsSparkSinkUnitTest extends GATKBaseTest { @BeforeClass(alwaysRun = true) private void setupMiniCluster() throws IOException { + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } cluster = MiniClusterUtils.getMiniCluster(); } diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/PileupSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/PileupSparkIntegrationTest.java index 8822ada9e73..c29e4eb4dd3 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/PileupSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/PileupSparkIntegrationTest.java @@ -5,6 +5,7 @@ import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -115,10 +116,10 @@ public void testInsertLengthPileup(boolean useShuffle) throws Exception { @Test(dataProvider = "shuffle") public void testFeaturesPileupHdfs(boolean useShuffle) throws Exception { - // Skip this test when running on Java 11 since it fails with a Spark error that is not fixed until Spark 3 - // see https://issues.apache.org/jira/browse/SPARK-26963 - if (System.getProperty("java.specification.version").equals("11")) { - return; + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); } MiniClusterUtils.runOnIsolatedMiniCluster( cluster -> { final Path workingDirectory = MiniClusterUtils.getWorkingDir(cluster); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/pipelines/PrintReadsSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/pipelines/PrintReadsSparkIntegrationTest.java index c21a23d5ce8..59c4b7449f7 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/pipelines/PrintReadsSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/pipelines/PrintReadsSparkIntegrationTest.java @@ -19,6 +19,7 @@ import org.broadinstitute.hellbender.utils.io.IOUtils; import org.broadinstitute.hellbender.utils.read.GATKRead; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -79,6 +80,11 @@ public void testReadAndWriteCRAMAndReferenceOnHDFS() throws Exception { final GATKPath testRefDict = new GATKPath(getTestFile("count_reads.dict").getAbsolutePath()); final GATKPath testRefIndex = new GATKPath(getTestFile("count_reads.fasta.fai").getAbsolutePath()); + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster(cluster -> { final org.apache.hadoop.fs.Path workingDirectory = MiniClusterUtils.getWorkingDir(cluster); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/CpxVariantReInterpreterSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/CpxVariantReInterpreterSparkIntegrationTest.java index f87be3a752f..dae5597491f 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/CpxVariantReInterpreterSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/CpxVariantReInterpreterSparkIntegrationTest.java @@ -10,6 +10,7 @@ import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; import org.broadinstitute.hellbender.testutils.VariantContextTestUtils; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -70,6 +71,11 @@ public void testRunLocal(final CpxVariantReInterpreterSparkIntegrationTestArgs p @Test(groups = "sv", dataProvider = "forCpxVariantReInterpreterSparkIntegrationTest") public void testRunHDFS(final CpxVariantReInterpreterSparkIntegrationTestArgs params) throws Exception { + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster(cluster -> { final List argsToBeModified = Arrays.asList( new ArgumentsBuilder().addRaw(params.getCommandLine()).getArgsArray() ); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/DiscoverVariantsFromContigAlignmentsSAMSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/DiscoverVariantsFromContigAlignmentsSAMSparkIntegrationTest.java index 70b92868f6f..a3dc96fdb9a 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/DiscoverVariantsFromContigAlignmentsSAMSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/DiscoverVariantsFromContigAlignmentsSAMSparkIntegrationTest.java @@ -6,6 +6,7 @@ import org.broadinstitute.hellbender.testutils.ArgumentsBuilder; import org.broadinstitute.hellbender.GATKBaseTest; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -67,6 +68,11 @@ public void testDiscoverVariantsRunnableLocal(final DiscoverVariantsFromContigAl @Test(dataProvider = "discoverVariantsFromContigAlignmentsSparkIntegrationTest", groups = "sv") public void testDiscoverVariantsRunnableMiniCluster(final DiscoverVariantsFromContigAlignmentsSAMSparkIntegrationTestArgs params) throws Exception { + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster(cluster -> { final List argsToBeModified = Arrays.asList( new ArgumentsBuilder().addRaw(params.getCommandLine()).getArgsArray() ); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/FindBreakpointEvidenceSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/FindBreakpointEvidenceSparkIntegrationTest.java index f5083e0941c..2730d69b927 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/FindBreakpointEvidenceSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/FindBreakpointEvidenceSparkIntegrationTest.java @@ -8,6 +8,7 @@ import org.broadinstitute.hellbender.testutils.BaseTest; import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -114,6 +115,11 @@ public void testFindBreakpointRunnableLocal(final FindBreakpointEvidenceSparkInt @Test(dataProvider = "findBreakpointEvidenceSparkIntegrationTest", groups = "sv") public void testFindBreakpointRunnableMiniCluster(final FindBreakpointEvidenceSparkIntegrationTestArgs params) throws Exception { + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster(cluster -> { final List argsToBeModified = Arrays.asList( new ArgumentsBuilder().addRaw(params.getCommandLine()).getArgsArray() ); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/StructuralVariationDiscoveryPipelineSparkIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/StructuralVariationDiscoveryPipelineSparkIntegrationTest.java index 01d02a72e91..649b9206b92 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/StructuralVariationDiscoveryPipelineSparkIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/spark/sv/integration/StructuralVariationDiscoveryPipelineSparkIntegrationTest.java @@ -14,6 +14,7 @@ import org.broadinstitute.hellbender.testutils.MiniClusterUtils; import org.broadinstitute.hellbender.testutils.VariantContextTestUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -115,6 +116,11 @@ public void testSVDiscoverPipelineRunnableLocal(final StructuralVariationDiscove @Test(dataProvider = "svDiscoverPipelineSparkIntegrationTest", groups = "sv") public void testSVDiscoverPipelineRunnableMiniCluster(final StructuralVariationDiscoveryPipelineSparkIntegrationTestArgs params) throws Exception { + if (isGATKDockerContainer()) { + // see https://github.com/eclipse/jetty.project/issues/8549 + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster(cluster -> { final List argsToBeModified = Arrays.asList( new ArgumentsBuilder().addRaw(params.getCommandLine()).getArgsArray() ); diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/sv/SVClusterIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/sv/SVClusterIntegrationTest.java index 14604354f1d..abc078fa7ad 100644 --- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/sv/SVClusterIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/sv/SVClusterIntegrationTest.java @@ -17,12 +17,12 @@ import org.broadinstitute.hellbender.utils.IntervalUtils; import org.broadinstitute.hellbender.utils.reference.ReferenceUtils; import org.broadinstitute.hellbender.utils.variant.VariantContextGetters; -import org.spark_project.guava.collect.Lists; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; +import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -129,7 +129,7 @@ public void testMergeHelper(final boolean omitMembers) { final VCFHeader header = vcf.getKey(); final List records = vcf.getValue(); - Assert.assertEquals(header.getSampleNamesInOrder(), Lists.newArrayList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); + Assert.assertEquals(header.getSampleNamesInOrder(), Arrays.asList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); Assert.assertEquals(records.size(), 1793); @@ -201,7 +201,7 @@ public void testClusterSingleLinkage() { final VCFHeader header = vcf.getKey(); final List records = vcf.getValue(); - Assert.assertEquals(header.getSampleNamesInOrder(), Lists.newArrayList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); + Assert.assertEquals(header.getSampleNamesInOrder(), Arrays.asList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); Assert.assertEquals(records.size(), 1338); @@ -263,7 +263,7 @@ public void testAgainstSimpleImplementation() { .add(SVClusterEngineArgumentsCollection.PESR_INTERVAL_OVERLAP_FRACTION_NAME, 0.1) .add(SVClusterEngineArgumentsCollection.PESR_BREAKEND_WINDOW_NAME, 500); - final List vcfInputFilenames = Lists.newArrayList( + final List vcfInputFilenames = Arrays.asList( "1kgp_test.cnvs.vcf.gz", "HG00096.manta.vcf.gz", "HG00096.wham.vcf.gz", @@ -365,7 +365,7 @@ public void testClusterMaxClique(final boolean fastMode) { final VCFHeader header = vcf.getKey(); final List records = vcf.getValue(); - Assert.assertEquals(header.getSampleNamesInOrder(), Lists.newArrayList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); + Assert.assertEquals(header.getSampleNamesInOrder(), Arrays.asList("HG00096", "HG00129", "HG00140", "NA18945", "NA18956")); //Assert.assertEquals(records.size(), 1353); @@ -496,7 +496,7 @@ public void testAllosome() { final VCFHeader header = vcf.getKey(); final List records = vcf.getValue(); - Assert.assertEquals(header.getSampleNamesInOrder(), Lists.newArrayList("HG00096", "HG00129", "HG00150")); + Assert.assertEquals(header.getSampleNamesInOrder(), Arrays.asList("HG00096", "HG00129", "HG00150")); Assert.assertEquals(records.size(), 536); diff --git a/src/test/java/org/broadinstitute/hellbender/utils/bigquery/BigQueryUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/utils/bigquery/BigQueryUtilsUnitTest.java index 6f9f0069927..8c1a5644464 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/bigquery/BigQueryUtilsUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/bigquery/BigQueryUtilsUnitTest.java @@ -83,7 +83,11 @@ public void testQueryWithStorageAPI() { rowCount++; Assert.assertTrue(expectedNamesAndAges.containsKey(name), "Unexpected name " + name + " returned from query " + query); - Assert.assertNull(row.get("age"), "Age was unexpectedly retrieved."); + Assert.expectThrows(org.apache.avro.AvroRuntimeException.class, + new Assert.ThrowingRunnable() { + public void run () { row.get("age"); + } + }); } final Set expectedNames = new HashSet<>(); diff --git a/src/test/java/org/broadinstitute/hellbender/utils/gcs/BucketUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/utils/gcs/BucketUtilsUnitTest.java index d18f6578112..2c7f96dd369 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/gcs/BucketUtilsUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/gcs/BucketUtilsUnitTest.java @@ -12,6 +12,7 @@ import org.broadinstitute.hellbender.utils.config.ConfigFactory; import org.broadinstitute.hellbender.utils.io.IOUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -201,6 +202,11 @@ public void testCopyAndDeleteHDFS() throws Exception { final String src = publicTestDir + "empty.vcf"; File dest = createTempFile("copy-empty", ".vcf"); + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster( cluster -> { final String intermediate = BucketUtils.randomRemotePath(MiniClusterUtils.getWorkingDir(cluster).toString(), "test-copy-empty", ".vcf"); Assert.assertTrue(BucketUtils.isHadoopUrl(intermediate), "!BucketUtils.isHadoopUrl(intermediate)"); diff --git a/src/test/java/org/broadinstitute/hellbender/utils/help/DocumentationGenerationIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/utils/help/DocumentationGenerationIntegrationTest.java index 89bee016cfd..2b695b4bdc3 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/help/DocumentationGenerationIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/help/DocumentationGenerationIntegrationTest.java @@ -1,64 +1,64 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.hellbender.CommandLineProgramTest; -import org.testng.Assert; -import org.testng.annotations.Test; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * Smoke test to run doc gen on a subset of classes to make sure it doesn't regress. - */ -public class DocumentationGenerationIntegrationTest extends CommandLineProgramTest { - /** - * Entry point for manually running the gatkDoc process on a subset of packages from within GATK. - */ - private static String[] docTestPackages = { - "org.broadinstitute.hellbender.cmdline.argumentcollections", - "org.broadinstitute.hellbender.cmdline.GATKPlugin", - "org.broadinstitute.hellbender.engine.filters", - "org.broadinstitute.hellbender.tools", - "org.broadinstitute.hellbender.tools.spark", - "org.broadinstitute.hellbender.tools.spark.pipelines", - "org.broadinstitute.hellbender.tools.spark.pipelines.metrics", - "org.broadinstitute.hellbender.tools.spark.transforms.bqsr", - "org.broadinstitute.hellbender.tools.spark.transforms.markduplicates", - "org.broadinstitute.hellbender.tools.walkers.bqsr", - "org.broadinstitute.hellbender.tools.walkers.vqsr", - "org.broadinstitute.hellbender.tools.walkers.variantutils", - "picard.fingerprint", - "picard.analysis" - }; - - // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs - @SuppressWarnings({"deprecation","removal"}) - @Test - public static void documentationSmokeTest() { - final File docTestTarget = createTempDir("docgentest"); - final String[] argArray = new String[]{ - "javadoc", - "-doclet", GATKHelpDoclet.class.getName(), - "-docletpath", System.getProperty("java.class.path"), - "-sourcepath", "src/main/java", - "-settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates", - "-d", docTestTarget.getAbsolutePath(), // directory must exist - "-output-file-extension", "html", - "-build-timestamp", "2016/11/11 11:11:11", - "-absolute-version", "1.1-111", - "-verbose" - }; - - final List docArgList = new ArrayList<>(); - docArgList.addAll(Arrays.asList(argArray)); - docArgList.add("-cp"); - docArgList.add(System.getProperty("java.class.path")); - docArgList.addAll(Arrays.asList(docTestPackages)); - - // Run javadoc in the current JVM with the custom doclet, and make sure it succeeds (this is a smoke test; - // we just want to make sure it doesn't blow up). - Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); - } -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.hellbender.CommandLineProgramTest; +//import org.testng.Assert; +//import org.testng.annotations.Test; +// +//import java.io.File; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +// +///** +// * Smoke test to run doc gen on a subset of classes to make sure it doesn't regress. +// */ +//public class DocumentationGenerationIntegrationTest extends CommandLineProgramTest { +// /** +// * Entry point for manually running the gatkDoc process on a subset of packages from within GATK. +// */ +// private static String[] docTestPackages = { +// "org.broadinstitute.hellbender.cmdline.argumentcollections", +// "org.broadinstitute.hellbender.cmdline.GATKPlugin", +// "org.broadinstitute.hellbender.engine.filters", +// "org.broadinstitute.hellbender.tools", +// "org.broadinstitute.hellbender.tools.spark", +// "org.broadinstitute.hellbender.tools.spark.pipelines", +// "org.broadinstitute.hellbender.tools.spark.pipelines.metrics", +// "org.broadinstitute.hellbender.tools.spark.transforms.bqsr", +// "org.broadinstitute.hellbender.tools.spark.transforms.markduplicates", +// "org.broadinstitute.hellbender.tools.walkers.bqsr", +// "org.broadinstitute.hellbender.tools.walkers.vqsr", +// "org.broadinstitute.hellbender.tools.walkers.variantutils", +// "picard.fingerprint", +// "picard.analysis" +// }; +// +// // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs +// @SuppressWarnings({"deprecation","removal"}) +// @Test +// public static void documentationSmokeTest() { +// final File docTestTarget = createTempDir("docgentest"); +// final String[] argArray = new String[]{ +// "javadoc", +// "-doclet", GATKHelpDoclet.class.getName(), +// "-docletpath", System.getProperty("java.class.path"), +// "-sourcepath", "src/main/java", +// "-settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/helpTemplates", +// "-d", docTestTarget.getAbsolutePath(), // directory must exist +// "-output-file-extension", "html", +// "-build-timestamp", "2016/11/11 11:11:11", +// "-absolute-version", "1.1-111", +// "-verbose" +// }; +// +// final List docArgList = new ArrayList<>(); +// docArgList.addAll(Arrays.asList(argArray)); +// docArgList.add("-cp"); +// docArgList.add(System.getProperty("java.class.path")); +// docArgList.addAll(Arrays.asList(docTestPackages)); +// +// // Run javadoc in the current JVM with the custom doclet, and make sure it succeeds (this is a smoke test; +// // we just want to make sure it doesn't blow up). +// Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); +// } +//} diff --git a/src/test/java/org/broadinstitute/hellbender/utils/help/TabCompletionIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/utils/help/TabCompletionIntegrationTest.java index 01e4c87f482..d2adc2f0c86 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/help/TabCompletionIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/help/TabCompletionIntegrationTest.java @@ -1,94 +1,94 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.argparser.ClassFinder; -import org.broadinstitute.barclay.help.BashTabCompletionDoclet; -import org.broadinstitute.hellbender.CommandLineProgramTest; -import org.broadinstitute.hellbender.cmdline.CommandLineProgram; -import org.testng.Assert; -import org.testng.annotations.Test; - -import java.io.*; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Smoke test to run tab completion generation on a subset of classes to make sure it doesn't regress. - */ -public class TabCompletionIntegrationTest extends CommandLineProgramTest { - - /** - * Entry point for manually running the gatkTabComplete process on a subset of packages from within GATK. - */ - final private static List tabCompletionTestPackages; - - // Static block to initialize tabCompletionTestPackages: - static { - final ClassFinder classFinder = new ClassFinder(); - classFinder.find("org.broadinstitute.hellbender", CommandLineProgram.class); - tabCompletionTestPackages = Collections.unmodifiableList( - classFinder.getClasses() - .stream() - .map(cl -> cl.getPackage().getName()) - .collect(Collectors.toSet()) // uniquify - .stream() - .collect(Collectors.toList()) - ); - } - - // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs - @SuppressWarnings({"deprecation","removal"}) - @Test - public static void tabCompleteSmokeTest() { - final File tabCompletionTestTarget = createTempDir("tabCompletionTest"); - - // Setup rote input arguments: - final List argList = Arrays.asList( - - "javadoc", - - "-doclet", BashTabCompletionDoclet.class.getName(), - - "-docletpath", System.getProperty("java.class.path"), - "-sourcepath", "src/main/java", - "-d", tabCompletionTestTarget.getAbsolutePath(), // directory must exist - - "-use-default-templates", - - "-output-file-extension", "sh", - "-index-file-extension", "sh", - "-absolute-version", "0.0-001", - "-build-timestamp", new SimpleDateFormat("dd-mm-yyyy hh:mm:ss").format( new Date() ), - - "-caller-script-name", "gatk", - - "-caller-pre-legal-args", "--help --list --dry-run --java-options", - "-caller-pre-arg-val-types", "null null null String", - "-caller-pre-mutex-args", "--help;list,dry-run,java-options --list;help,dry-run,java-options", - "-caller-pre-alias-args", "--help;-h", - "-caller-pre-arg-min-occurs", "0 0 0 0", - "-caller-pre-arg-max-occurs", "1 1 1 1", - - "-caller-post-legal-args", "--spark-runner --spark-master --cluster --dry-run --java-options --conf --driver-memory --driver-cores --executor-memory --executor-cores --num-executors", - "-caller-post-arg-val-types", "String String String null String file int int int int int", - "-caller-post-mutex-args", "", - "-caller-post-alias-args", "", - "-caller-post-arg-min-occurs", "0 0 0 0 0 0 0 0 0 0", - "-caller-post-arg-max-occurs", "1 1 1 1 1 1 1 1 1 1", - - "-verbose" - ); - - // Point the javadoc at our packages: - final List docArgList = new ArrayList<>(); - docArgList.addAll(argList); - docArgList.add("-cp"); - docArgList.add(System.getProperty("java.class.path")); - docArgList.addAll(tabCompletionTestPackages); - - // Run javadoc in the current JVM with the custom doclet, and make sure it succeeds (this is a smoke test; - // we just want to make sure it doesn't blow up). - Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.argparser.ClassFinder; +//import org.broadinstitute.barclay.help.BashTabCompletionDoclet; +//import org.broadinstitute.hellbender.CommandLineProgramTest; +//import org.broadinstitute.hellbender.cmdline.CommandLineProgram; +//import org.testng.Assert; +//import org.testng.annotations.Test; +// +//import java.io.*; +//import java.text.SimpleDateFormat; +//import java.util.*; +//import java.util.stream.Collectors; +// +///** +// * Smoke test to run tab completion generation on a subset of classes to make sure it doesn't regress. +// */ +//public class TabCompletionIntegrationTest extends CommandLineProgramTest { +// +// /** +// * Entry point for manually running the gatkTabComplete process on a subset of packages from within GATK. +// */ +// final private static List tabCompletionTestPackages; +// +// // Static block to initialize tabCompletionTestPackages: +// static { +// final ClassFinder classFinder = new ClassFinder(); +// classFinder.find("org.broadinstitute.hellbender", CommandLineProgram.class); +// tabCompletionTestPackages = Collections.unmodifiableList( +// classFinder.getClasses() +// .stream() +// .map(cl -> cl.getPackage().getName()) +// .collect(Collectors.toSet()) // uniquify +// .stream() +// .collect(Collectors.toList()) +// ); +// } +// +// // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs +// @SuppressWarnings({"deprecation","removal"}) +// @Test +// public static void tabCompleteSmokeTest() { +// final File tabCompletionTestTarget = createTempDir("tabCompletionTest"); +// +// // Setup rote input arguments: +// final List argList = Arrays.asList( +// +// "javadoc", +// +// "-doclet", BashTabCompletionDoclet.class.getName(), +// +// "-docletpath", System.getProperty("java.class.path"), +// "-sourcepath", "src/main/java", +// "-d", tabCompletionTestTarget.getAbsolutePath(), // directory must exist +// +// "-use-default-templates", +// +// "-output-file-extension", "sh", +// "-index-file-extension", "sh", +// "-absolute-version", "0.0-001", +// "-build-timestamp", new SimpleDateFormat("dd-mm-yyyy hh:mm:ss").format( new Date() ), +// +// "-caller-script-name", "gatk", +// +// "-caller-pre-legal-args", "--help --list --dry-run --java-options", +// "-caller-pre-arg-val-types", "null null null String", +// "-caller-pre-mutex-args", "--help;list,dry-run,java-options --list;help,dry-run,java-options", +// "-caller-pre-alias-args", "--help;-h", +// "-caller-pre-arg-min-occurs", "0 0 0 0", +// "-caller-pre-arg-max-occurs", "1 1 1 1", +// +// "-caller-post-legal-args", "--spark-runner --spark-master --cluster --dry-run --java-options --conf --driver-memory --driver-cores --executor-memory --executor-cores --num-executors", +// "-caller-post-arg-val-types", "String String String null String file int int int int int", +// "-caller-post-mutex-args", "", +// "-caller-post-alias-args", "", +// "-caller-post-arg-min-occurs", "0 0 0 0 0 0 0 0 0 0", +// "-caller-post-arg-max-occurs", "1 1 1 1 1 1 1 1 1 1", +// +// "-verbose" +// ); +// +// // Point the javadoc at our packages: +// final List docArgList = new ArrayList<>(); +// docArgList.addAll(argList); +// docArgList.add("-cp"); +// docArgList.add(System.getProperty("java.class.path")); +// docArgList.addAll(tabCompletionTestPackages); +// +// // Run javadoc in the current JVM with the custom doclet, and make sure it succeeds (this is a smoke test; +// // we just want to make sure it doesn't blow up). +// Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); +// } +// +//} diff --git a/src/test/java/org/broadinstitute/hellbender/utils/help/TestWDLTool.java b/src/test/java/org/broadinstitute/hellbender/utils/help/TestWDLTool.java index 54cc90fac26..d1816c54706 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/help/TestWDLTool.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/help/TestWDLTool.java @@ -1,326 +1,326 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.broadinstitute.barclay.argparser.Argument; -import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; -import org.broadinstitute.barclay.argparser.PositionalArguments; -import org.broadinstitute.barclay.argparser.WorkflowProperties; -import org.broadinstitute.barclay.argparser.WorkflowInput; -import org.broadinstitute.barclay.argparser.WorkflowOutput; -import org.broadinstitute.barclay.help.DocumentedFeature; -import org.broadinstitute.hellbender.cmdline.TestProgramGroup; - -import java.io.File; -import java.util.List; - -/** - * NOTE: this file needs to live in a separate package from the doc tests, otherwise all of the docs tests - * will pick it up as a command line program, which will change the outputs. - * - * CommandLineProgram test tool for testing WDL generation. Contains various combinations of - * commandline argument and workflow input/outputs with companion resources: - * - * scalar/array - * file/non-file - * required/optional - */ -@CommandLineProgramProperties( - summary = TestWDLTool.SUMMARY, - oneLineSummary = TestWDLTool.ONE_LINE_SUMMARY, - programGroup = TestProgramGroup.class) -@WorkflowProperties(memory ="8G") -@DocumentedFeature(groupName = TestWDLTool.GROUP_NAME) -public class TestWDLTool { - - public static final String SUMMARY = "WDL Test Tool"; - public static final String ONE_LINE_SUMMARY = "WDL Test Tool to test WDL Generation"; - public static final String GROUP_NAME = "WDL feature group name"; - - @PositionalArguments(doc = "Positional args doc") - @WorkflowInput(requiredCompanions={"posDictionary", "posIndex"}) - public List positionalListFileInput; - - // required input Files - - @Argument(fullName = "requiredScalarFileInputNoCompanions", - shortName = "requiredScalarFileInputNoCompanions", - doc = "requiredScalarFileInputNoCompanions doc", - optional = false) - @WorkflowInput - public File requiredScalarFileInputNoCompanions; - - @Argument(fullName = "requiredScalarFileInputRequiredCompanions", - shortName = "requiredScalarFileInputRequiredCompanions", - doc = "requiredScalarFileInputRequiredCompanions doc", - optional = false) - @WorkflowInput(requiredCompanions={"requiredScalarFileInputRequiredCompanionsDictionary", "requiredScalarFileInputRequiredCompanionsIndex"}, localizationOptional = true) - public File requiredScalarFileInputRequiredCompanions; - - @Argument(fullName = "requiredScalarFileInputOptionalCompanions", - shortName = "requiredScalarFileInputOptionalCompanions", - doc = "requiredScalarFileInputOptionalCompanions doc", - optional = false) - @WorkflowInput(optionalCompanions={"requiredScalarFileInputOptionalCompanionsDictionary", "requiredScalarFileInputOptionalCompanionsIndex"}, localizationOptional = true) - public File requiredScalarFileInputOptionalCompanions; - - @Argument(fullName = "requiredListFileInputNoCompanions", - shortName = "requiredListFileInputNoCompanions", - doc = "requiredListFileInputNoCompanions doc", - optional = false) - @WorkflowInput - public List requiredListFileInputNoCompanions; - - @Argument(fullName = "requiredListFileInputRequiredCompanions", - shortName = "requiredListFileInputRequiredCompanions", - doc = "requiredListFileInputRequiredCompanions doc", - optional = false) - @WorkflowInput(requiredCompanions={"requiredListFileInputRequiredCompanionsDictionary", "requiredListFileInputRequiredCompanionsIndex"}, localizationOptional = true) - public List requiredListFileInputRequiredCompanions; - - @Argument(fullName = "requiredListFileInputOptionalCompanions", - shortName = "requiredListFileInputOptionalCompanions", - doc = "requiredListFileInputOptionalCompanions doc", - optional = false) - @WorkflowInput(optionalCompanions={"requiredListFileInputOptionalCompanionsDictionary", "requiredListFileInputOptionalCompanionsIndex"}, localizationOptional = true) - public List requiredListFileInputOptionalCompanions; - - @Argument(fullName = "requiredListFileInputMixedCompanions", - shortName = "requiredListFileInputMixedCompanions", - doc = "requiredListFileInputMixedCompanions doc", - optional = false) - @WorkflowInput( - requiredCompanions = {"requiredListFileInputMixedCompanionsRequired"}, - optionalCompanions = {"requiredListFileInputMixedCompanionsOptional"}) - public List requiredListFileInputMixedCompanions; - - // required output Files - - @Argument(fullName = "requiredScalarFileOutputNoCompanions", - shortName = "requiredScalarFileOutputNoCompanions", - doc = "requiredScalarFileOutputNoCompanions doc", - optional = false) - @WorkflowOutput - public File requiredScalarFileOutputNoCompanions; - - @Argument(fullName = "requiredScalarFileOutputRequiredCompanions", - shortName = "requiredScalarFileOutputRequiredCompanions", - doc = "requiredScalarFileOutputRequiredCompanions doc", - optional = false) - @WorkflowOutput(requiredCompanions={"requiredScalarFileOutputRequiredCompanionsDictionary", "requiredScalarFileOutputRequiredCompanionsIndex"}) - public File requiredScalarFileOutputRequiredCompanions; - - @Argument(fullName = "requiredScalarFileOutputOptionalCompanions", - shortName = "requiredScalarFileOutputOptionalCompanions", - doc = "requiredScalarFileOutputOptionalCompanions doc", - optional = false) - @WorkflowOutput(optionalCompanions={"requiredScalarFileOutputOptionalCompanionsDictionary", "requiredScalarFileOutputOptionalCompanionsIndex"}) - public File requiredScalarFileOutputOptionalCompanions; - - @Argument(fullName = "requiredListFileOutputNoCompanions", - shortName = "requiredListFileOutputNoCompanions", - doc = "requiredListFileOutputNoCompanions doc", - optional = false) - @WorkflowOutput - public List requiredListFileOutputNoCompanions; - - @Argument(fullName = "requiredListFileOutputRequiredCompanions", - shortName = "requiredListFileOutputRequiredCompanions", - doc = "requiredListFileOutputRequiredCompanions doc", - optional = false) - @WorkflowOutput(requiredCompanions={"requiredListFileOutputRequiredCompanionsDictionary", "requiredListFileOutputRequiredCompanionsIndex"}) - public List requiredListFileOutputRequiredCompanions; - - @Argument(fullName = "requiredListFileOutputOptionalCompanions", - shortName = "requiredListFileOutputOptionalCompanions", - doc = "requiredListFileOutputOptionalCompanions doc", - optional = false) - @WorkflowOutput(optionalCompanions={"requiredListFileOutputOptionalCompanionsDictionary", "requiredListFileOutputOptionalCompanionsIndex"}) - public List requiredListFileOutputOptionalCompanions; - - @Argument(fullName = "requiredListFileOutputMixedCompanions", - shortName = "requiredListFileOutputMixedCompanions", - doc = "requiredListFileOutputMixedCompanions doc", - optional = false) - @WorkflowOutput( - requiredCompanions = {"requiredListFileOutputMixedCompanionsRequired"}, - optionalCompanions = {"requiredListFileOutputMixedCompanionsOptional"}) - public List requiredListFileOutputMixedCompanions; - - // optional input Files - - @Argument(fullName = "optionalScalarFileInputNoCompanions", - shortName = "optionalScalarFileInputNoCompanions", - doc = "optionalScalarFileInputNoCompanions doc", - optional = true) - @WorkflowInput - public File optionalScalarFileInputNoCompanions; - - @Argument(fullName = "optionalScalarFileInputOptionalCompanions", - shortName = "optionalScalarFileInputOptionalCompanions", - doc = "optionalScalarFileInputOptionalCompanions doc", - optional = true) - @WorkflowInput(optionalCompanions={"optionalScalarFileInputOptionalCompanionsDictionary", "optionalScalarFileInputOptionalCompanionsIndex"}) - public File optionalScalarFileInputOptionalCompanions; - - @Argument(fullName = "optionalScalarFileInputRequiredCompanions", - shortName = "optionalScalarFileInputRequiredCompanions", - doc = "optionalScalarFileInputRequiredCompanions doc", - optional = true) - @WorkflowInput(requiredCompanions={"optionalScalarFileInputRequiredCompanionsDictionary", "optionalScalarFileInputRequiredCompanionsIndex"}) - public File optionalScalarFileInputRequiredCompanions; - - @Argument(fullName = "optionalListFileInputNoCompanions", - shortName = "optionalListFileInputNoCompanions", - doc = "optionalListFileInputNoCompanions doc", - optional = true) - @WorkflowInput - public List optionalListFileInputNoCompanions; - - @Argument(fullName = "optionalListFileInputRequiredCompanions", - shortName = "optionalListFileInputRequiredCompanions", - doc = "optionalListFileInputRequiredCompanions doc", - optional = true) - @WorkflowInput(requiredCompanions={"optionalListFileInputRequiredCompanionsDictionary", "optionalListFileInputRequiredCompanionsIndex"}) - public List optionalListFileInputRequiredCompanions; - - @Argument(fullName = "optionalListFileInputOptionalCompanions", - shortName = "optionalListFileInputOptionalCompanions", - doc = "optionalListFileInputOptionalCompanions doc", - optional = true) - @WorkflowInput(optionalCompanions={"optionalListFileInputOptionalCompanionsDictionary", "optionalListFileInputOptionalCompanionsIndex"}) - public List optionalListFileInputOptionalCompanions; - - @Argument(fullName = "optionalListFileInputMixedCompanions", - shortName = "optionalListFileInputMixedCompanions", - doc = "optionalListFileInputMixedCompanions doc", - optional = true) - @WorkflowInput( - requiredCompanions = {"optionalListFileInputMixedCompanionsRequired"}, - optionalCompanions = {"optionalListFileInputMixedCompanionsOptional"}) - public List optionalListFileInputMixedCompanions; - - // optional output Files - - @Argument(fullName = "optionalScalarFileOutputNoCompanions", - shortName = "optionalScalarFileOutputNoCompanions", - doc = "optionalScalarFileOutputNoCompanions doc", - optional = true) - @WorkflowOutput - public File optionalScalarFileOutputNoCompanions; - - @Argument(fullName = "optionalScalarFileOutputRequiredCompanions", - shortName = "optionalScalarFileOutputRequiredCompanions", - doc = "optionalScalarFileOutputRequiredCompanions doc", - optional = true) - @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputRequiredCompanionsDictionary", "optionalScalarFileOutputRequiredCompanionsIndex"}) - public File optionalScalarFileOutputRequiredCompanions; - - @Argument(fullName = "optionalScalarFileOutputOptionalCompanions", - shortName = "optionalScalarFileOutputOptionalCompanions", - doc = "optionalScalarFileOutputOptionalCompanions doc", - optional = true) - @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputOptionalCompanionsDictionary", "optionalScalarFileOutputOptionalCompanionsIndex"}) - public File optionalScalarFileOutputOptionalCompanions; - - @Argument(fullName = "optionalListFileOutputRequiredCompanions", - shortName = "optionalListFileOutputRequiredCompanions", - doc = "optionalListFileOutputRequiredCompanions doc", - optional = true) - @WorkflowOutput(requiredCompanions={"optionalListFileOutputRequiredCompanionsDictionary", "optionalListFileOutputRequiredCompanionsIndex"}) - public List optionalListFileOutputRequiredCompanions; - - @Argument(fullName = "optionalListFileOutputMixedCompanions", - shortName = "optionalListFileOutputMixedCompanions", - doc = "optionalListFileOutputMixedCompanions doc", - optional = true) - @WorkflowOutput( - requiredCompanions = {"optionalListFileOutputMixedCompanionsRequired"}, - optionalCompanions = {"optionalListFileOutputMixedCompanionsOptional"}) - public List optionalListFileOutputMixedCompanions; - - // non-File types - - @Argument(fullName = "optionalScalarStringInput", - shortName = "optionalScalarStringInput", - doc = "optionalScalarStringInput doc", - optional = true) - public String optionalScalarStringInput; - - @Argument(fullName = "optionalListStringInput", - shortName = "optionalListStringInput", - doc = "optionalListStringInput doc", - optional = true) - public List optionalListStringInput; - - @Argument(fullName = "optionalScalarIntegerPrimitiveInput", - shortName = "optionalScalarIntegerPrimitiveInput", - doc = "optionalScalarIntegerPrimitiveInput doc", - optional = true) - public int optionalScalarIntegerPrimitiveInput; - - @Argument(fullName = "optionalScalarIntegerInput", - shortName = "optionalScalarIntegerInput", - doc = "optionalScalarIntegerInput doc", - optional = true) - public Integer optionalScalarIntegerInput; - - @Argument(fullName = "optionalListIntegerInput", - shortName = "optionalListIntegerInput", - doc = "optionalListIntegerInput doc", - optional = true) - public List optionalListIntegerInput; - - @Argument(fullName = "optionalScalarLongPrimitiveInput", - shortName = "optionalScalarLongPrimitiveInput", - doc = "optionalScalarLongPrimitiveInput doc", - optional = true) - public long optionalScalarLongPrimitiveInput; - - @Argument(fullName = "optionalScalarLongInput", - shortName = "optionalScalarLongInput", - doc = "optionalScalarLongInput doc", - optional = true) - public Long optionalScalarLongInput; - - @Argument(fullName = "optionalListLongInput", - shortName = "optionalListLongInput", - doc = "optionalListLongInput doc", - optional = true) - public List optionalListLongInput; - - @Argument(fullName = "optionalScalarFloatPrimitiveInput", - shortName = "optionalScalarFloatPrimitiveInput", - doc = "optionalScalarFloatPrimitiveInput doc", - optional = true) - public float optionalScalarFloatPrimitiveInput; - - @Argument(fullName = "optionalScalarFloatInput", - shortName = "optionalScalarFloatInput", - doc = "optionalScalarFloatInput doc", - optional = true) - public Float optionalScalarFloatInput; - - @Argument(fullName = "optionalListFloatInput", - shortName = "optionalListFloatInput", - doc = "optionalListFloatInput doc", - optional = true) - public List optionalListFloatInput; - - @Argument(fullName = "optionalScalarDoublePrimitiveInput", - shortName = "optionalScalarDoublePrimitiveInput", - doc = "optionalScalarDoublePrimitiveInput doc", - optional = true) - public double optionalScalarDoublePrimitiveInput; - - @Argument(fullName = "optionalScalarDoubleInput", - shortName = "optionalScalarDoubleInput", - doc = "optionalScalarDoubleInput doc", - optional = true) - public Double optionalScalarDoubleInput; - - @Argument(fullName = "optionalListDoubleInput", - shortName = "optionalListDoubleInput", - doc = "optionalListDoubleInput doc", - optional = true) - public List optionalListDoubleInput; - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.broadinstitute.barclay.argparser.Argument; +//import org.broadinstitute.barclay.argparser.CommandLineProgramProperties; +//import org.broadinstitute.barclay.argparser.PositionalArguments; +//import org.broadinstitute.barclay.argparser.WorkflowProperties; +//import org.broadinstitute.barclay.argparser.WorkflowInput; +//import org.broadinstitute.barclay.argparser.WorkflowOutput; +//import org.broadinstitute.barclay.help.DocumentedFeature; +//import org.broadinstitute.hellbender.cmdline.TestProgramGroup; +// +//import java.io.File; +//import java.util.List; +// +///** +// * NOTE: this file needs to live in a separate package from the doc tests, otherwise all of the docs tests +// * will pick it up as a command line program, which will change the outputs. +// * +// * CommandLineProgram test tool for testing WDL generation. Contains various combinations of +// * commandline argument and workflow input/outputs with companion resources: +// * +// * scalar/array +// * file/non-file +// * required/optional +// */ +//@CommandLineProgramProperties( +// summary = TestWDLTool.SUMMARY, +// oneLineSummary = TestWDLTool.ONE_LINE_SUMMARY, +// programGroup = TestProgramGroup.class) +//@WorkflowProperties(memory ="8G") +//@DocumentedFeature(groupName = TestWDLTool.GROUP_NAME) +//public class TestWDLTool { +// +// public static final String SUMMARY = "WDL Test Tool"; +// public static final String ONE_LINE_SUMMARY = "WDL Test Tool to test WDL Generation"; +// public static final String GROUP_NAME = "WDL feature group name"; +// +// @PositionalArguments(doc = "Positional args doc") +// @WorkflowInput(requiredCompanions={"posDictionary", "posIndex"}) +// public List positionalListFileInput; +// +// // required input Files +// +// @Argument(fullName = "requiredScalarFileInputNoCompanions", +// shortName = "requiredScalarFileInputNoCompanions", +// doc = "requiredScalarFileInputNoCompanions doc", +// optional = false) +// @WorkflowInput +// public File requiredScalarFileInputNoCompanions; +// +// @Argument(fullName = "requiredScalarFileInputRequiredCompanions", +// shortName = "requiredScalarFileInputRequiredCompanions", +// doc = "requiredScalarFileInputRequiredCompanions doc", +// optional = false) +// @WorkflowInput(requiredCompanions={"requiredScalarFileInputRequiredCompanionsDictionary", "requiredScalarFileInputRequiredCompanionsIndex"}, localizationOptional = true) +// public File requiredScalarFileInputRequiredCompanions; +// +// @Argument(fullName = "requiredScalarFileInputOptionalCompanions", +// shortName = "requiredScalarFileInputOptionalCompanions", +// doc = "requiredScalarFileInputOptionalCompanions doc", +// optional = false) +// @WorkflowInput(optionalCompanions={"requiredScalarFileInputOptionalCompanionsDictionary", "requiredScalarFileInputOptionalCompanionsIndex"}, localizationOptional = true) +// public File requiredScalarFileInputOptionalCompanions; +// +// @Argument(fullName = "requiredListFileInputNoCompanions", +// shortName = "requiredListFileInputNoCompanions", +// doc = "requiredListFileInputNoCompanions doc", +// optional = false) +// @WorkflowInput +// public List requiredListFileInputNoCompanions; +// +// @Argument(fullName = "requiredListFileInputRequiredCompanions", +// shortName = "requiredListFileInputRequiredCompanions", +// doc = "requiredListFileInputRequiredCompanions doc", +// optional = false) +// @WorkflowInput(requiredCompanions={"requiredListFileInputRequiredCompanionsDictionary", "requiredListFileInputRequiredCompanionsIndex"}, localizationOptional = true) +// public List requiredListFileInputRequiredCompanions; +// +// @Argument(fullName = "requiredListFileInputOptionalCompanions", +// shortName = "requiredListFileInputOptionalCompanions", +// doc = "requiredListFileInputOptionalCompanions doc", +// optional = false) +// @WorkflowInput(optionalCompanions={"requiredListFileInputOptionalCompanionsDictionary", "requiredListFileInputOptionalCompanionsIndex"}, localizationOptional = true) +// public List requiredListFileInputOptionalCompanions; +// +// @Argument(fullName = "requiredListFileInputMixedCompanions", +// shortName = "requiredListFileInputMixedCompanions", +// doc = "requiredListFileInputMixedCompanions doc", +// optional = false) +// @WorkflowInput( +// requiredCompanions = {"requiredListFileInputMixedCompanionsRequired"}, +// optionalCompanions = {"requiredListFileInputMixedCompanionsOptional"}) +// public List requiredListFileInputMixedCompanions; +// +// // required output Files +// +// @Argument(fullName = "requiredScalarFileOutputNoCompanions", +// shortName = "requiredScalarFileOutputNoCompanions", +// doc = "requiredScalarFileOutputNoCompanions doc", +// optional = false) +// @WorkflowOutput +// public File requiredScalarFileOutputNoCompanions; +// +// @Argument(fullName = "requiredScalarFileOutputRequiredCompanions", +// shortName = "requiredScalarFileOutputRequiredCompanions", +// doc = "requiredScalarFileOutputRequiredCompanions doc", +// optional = false) +// @WorkflowOutput(requiredCompanions={"requiredScalarFileOutputRequiredCompanionsDictionary", "requiredScalarFileOutputRequiredCompanionsIndex"}) +// public File requiredScalarFileOutputRequiredCompanions; +// +// @Argument(fullName = "requiredScalarFileOutputOptionalCompanions", +// shortName = "requiredScalarFileOutputOptionalCompanions", +// doc = "requiredScalarFileOutputOptionalCompanions doc", +// optional = false) +// @WorkflowOutput(optionalCompanions={"requiredScalarFileOutputOptionalCompanionsDictionary", "requiredScalarFileOutputOptionalCompanionsIndex"}) +// public File requiredScalarFileOutputOptionalCompanions; +// +// @Argument(fullName = "requiredListFileOutputNoCompanions", +// shortName = "requiredListFileOutputNoCompanions", +// doc = "requiredListFileOutputNoCompanions doc", +// optional = false) +// @WorkflowOutput +// public List requiredListFileOutputNoCompanions; +// +// @Argument(fullName = "requiredListFileOutputRequiredCompanions", +// shortName = "requiredListFileOutputRequiredCompanions", +// doc = "requiredListFileOutputRequiredCompanions doc", +// optional = false) +// @WorkflowOutput(requiredCompanions={"requiredListFileOutputRequiredCompanionsDictionary", "requiredListFileOutputRequiredCompanionsIndex"}) +// public List requiredListFileOutputRequiredCompanions; +// +// @Argument(fullName = "requiredListFileOutputOptionalCompanions", +// shortName = "requiredListFileOutputOptionalCompanions", +// doc = "requiredListFileOutputOptionalCompanions doc", +// optional = false) +// @WorkflowOutput(optionalCompanions={"requiredListFileOutputOptionalCompanionsDictionary", "requiredListFileOutputOptionalCompanionsIndex"}) +// public List requiredListFileOutputOptionalCompanions; +// +// @Argument(fullName = "requiredListFileOutputMixedCompanions", +// shortName = "requiredListFileOutputMixedCompanions", +// doc = "requiredListFileOutputMixedCompanions doc", +// optional = false) +// @WorkflowOutput( +// requiredCompanions = {"requiredListFileOutputMixedCompanionsRequired"}, +// optionalCompanions = {"requiredListFileOutputMixedCompanionsOptional"}) +// public List requiredListFileOutputMixedCompanions; +// +// // optional input Files +// +// @Argument(fullName = "optionalScalarFileInputNoCompanions", +// shortName = "optionalScalarFileInputNoCompanions", +// doc = "optionalScalarFileInputNoCompanions doc", +// optional = true) +// @WorkflowInput +// public File optionalScalarFileInputNoCompanions; +// +// @Argument(fullName = "optionalScalarFileInputOptionalCompanions", +// shortName = "optionalScalarFileInputOptionalCompanions", +// doc = "optionalScalarFileInputOptionalCompanions doc", +// optional = true) +// @WorkflowInput(optionalCompanions={"optionalScalarFileInputOptionalCompanionsDictionary", "optionalScalarFileInputOptionalCompanionsIndex"}) +// public File optionalScalarFileInputOptionalCompanions; +// +// @Argument(fullName = "optionalScalarFileInputRequiredCompanions", +// shortName = "optionalScalarFileInputRequiredCompanions", +// doc = "optionalScalarFileInputRequiredCompanions doc", +// optional = true) +// @WorkflowInput(requiredCompanions={"optionalScalarFileInputRequiredCompanionsDictionary", "optionalScalarFileInputRequiredCompanionsIndex"}) +// public File optionalScalarFileInputRequiredCompanions; +// +// @Argument(fullName = "optionalListFileInputNoCompanions", +// shortName = "optionalListFileInputNoCompanions", +// doc = "optionalListFileInputNoCompanions doc", +// optional = true) +// @WorkflowInput +// public List optionalListFileInputNoCompanions; +// +// @Argument(fullName = "optionalListFileInputRequiredCompanions", +// shortName = "optionalListFileInputRequiredCompanions", +// doc = "optionalListFileInputRequiredCompanions doc", +// optional = true) +// @WorkflowInput(requiredCompanions={"optionalListFileInputRequiredCompanionsDictionary", "optionalListFileInputRequiredCompanionsIndex"}) +// public List optionalListFileInputRequiredCompanions; +// +// @Argument(fullName = "optionalListFileInputOptionalCompanions", +// shortName = "optionalListFileInputOptionalCompanions", +// doc = "optionalListFileInputOptionalCompanions doc", +// optional = true) +// @WorkflowInput(optionalCompanions={"optionalListFileInputOptionalCompanionsDictionary", "optionalListFileInputOptionalCompanionsIndex"}) +// public List optionalListFileInputOptionalCompanions; +// +// @Argument(fullName = "optionalListFileInputMixedCompanions", +// shortName = "optionalListFileInputMixedCompanions", +// doc = "optionalListFileInputMixedCompanions doc", +// optional = true) +// @WorkflowInput( +// requiredCompanions = {"optionalListFileInputMixedCompanionsRequired"}, +// optionalCompanions = {"optionalListFileInputMixedCompanionsOptional"}) +// public List optionalListFileInputMixedCompanions; +// +// // optional output Files +// +// @Argument(fullName = "optionalScalarFileOutputNoCompanions", +// shortName = "optionalScalarFileOutputNoCompanions", +// doc = "optionalScalarFileOutputNoCompanions doc", +// optional = true) +// @WorkflowOutput +// public File optionalScalarFileOutputNoCompanions; +// +// @Argument(fullName = "optionalScalarFileOutputRequiredCompanions", +// shortName = "optionalScalarFileOutputRequiredCompanions", +// doc = "optionalScalarFileOutputRequiredCompanions doc", +// optional = true) +// @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputRequiredCompanionsDictionary", "optionalScalarFileOutputRequiredCompanionsIndex"}) +// public File optionalScalarFileOutputRequiredCompanions; +// +// @Argument(fullName = "optionalScalarFileOutputOptionalCompanions", +// shortName = "optionalScalarFileOutputOptionalCompanions", +// doc = "optionalScalarFileOutputOptionalCompanions doc", +// optional = true) +// @WorkflowOutput(requiredCompanions={"optionalScalarFileOutputOptionalCompanionsDictionary", "optionalScalarFileOutputOptionalCompanionsIndex"}) +// public File optionalScalarFileOutputOptionalCompanions; +// +// @Argument(fullName = "optionalListFileOutputRequiredCompanions", +// shortName = "optionalListFileOutputRequiredCompanions", +// doc = "optionalListFileOutputRequiredCompanions doc", +// optional = true) +// @WorkflowOutput(requiredCompanions={"optionalListFileOutputRequiredCompanionsDictionary", "optionalListFileOutputRequiredCompanionsIndex"}) +// public List optionalListFileOutputRequiredCompanions; +// +// @Argument(fullName = "optionalListFileOutputMixedCompanions", +// shortName = "optionalListFileOutputMixedCompanions", +// doc = "optionalListFileOutputMixedCompanions doc", +// optional = true) +// @WorkflowOutput( +// requiredCompanions = {"optionalListFileOutputMixedCompanionsRequired"}, +// optionalCompanions = {"optionalListFileOutputMixedCompanionsOptional"}) +// public List optionalListFileOutputMixedCompanions; +// +// // non-File types +// +// @Argument(fullName = "optionalScalarStringInput", +// shortName = "optionalScalarStringInput", +// doc = "optionalScalarStringInput doc", +// optional = true) +// public String optionalScalarStringInput; +// +// @Argument(fullName = "optionalListStringInput", +// shortName = "optionalListStringInput", +// doc = "optionalListStringInput doc", +// optional = true) +// public List optionalListStringInput; +// +// @Argument(fullName = "optionalScalarIntegerPrimitiveInput", +// shortName = "optionalScalarIntegerPrimitiveInput", +// doc = "optionalScalarIntegerPrimitiveInput doc", +// optional = true) +// public int optionalScalarIntegerPrimitiveInput; +// +// @Argument(fullName = "optionalScalarIntegerInput", +// shortName = "optionalScalarIntegerInput", +// doc = "optionalScalarIntegerInput doc", +// optional = true) +// public Integer optionalScalarIntegerInput; +// +// @Argument(fullName = "optionalListIntegerInput", +// shortName = "optionalListIntegerInput", +// doc = "optionalListIntegerInput doc", +// optional = true) +// public List optionalListIntegerInput; +// +// @Argument(fullName = "optionalScalarLongPrimitiveInput", +// shortName = "optionalScalarLongPrimitiveInput", +// doc = "optionalScalarLongPrimitiveInput doc", +// optional = true) +// public long optionalScalarLongPrimitiveInput; +// +// @Argument(fullName = "optionalScalarLongInput", +// shortName = "optionalScalarLongInput", +// doc = "optionalScalarLongInput doc", +// optional = true) +// public Long optionalScalarLongInput; +// +// @Argument(fullName = "optionalListLongInput", +// shortName = "optionalListLongInput", +// doc = "optionalListLongInput doc", +// optional = true) +// public List optionalListLongInput; +// +// @Argument(fullName = "optionalScalarFloatPrimitiveInput", +// shortName = "optionalScalarFloatPrimitiveInput", +// doc = "optionalScalarFloatPrimitiveInput doc", +// optional = true) +// public float optionalScalarFloatPrimitiveInput; +// +// @Argument(fullName = "optionalScalarFloatInput", +// shortName = "optionalScalarFloatInput", +// doc = "optionalScalarFloatInput doc", +// optional = true) +// public Float optionalScalarFloatInput; +// +// @Argument(fullName = "optionalListFloatInput", +// shortName = "optionalListFloatInput", +// doc = "optionalListFloatInput doc", +// optional = true) +// public List optionalListFloatInput; +// +// @Argument(fullName = "optionalScalarDoublePrimitiveInput", +// shortName = "optionalScalarDoublePrimitiveInput", +// doc = "optionalScalarDoublePrimitiveInput doc", +// optional = true) +// public double optionalScalarDoublePrimitiveInput; +// +// @Argument(fullName = "optionalScalarDoubleInput", +// shortName = "optionalScalarDoubleInput", +// doc = "optionalScalarDoubleInput doc", +// optional = true) +// public Double optionalScalarDoubleInput; +// +// @Argument(fullName = "optionalListDoubleInput", +// shortName = "optionalListDoubleInput", +// doc = "optionalListDoubleInput doc", +// optional = true) +// public List optionalListDoubleInput; +// +//} diff --git a/src/test/java/org/broadinstitute/hellbender/utils/help/WDLGenerationIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/utils/help/WDLGenerationIntegrationTest.java index ba588f89faa..96b40786e48 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/help/WDLGenerationIntegrationTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/help/WDLGenerationIntegrationTest.java @@ -1,142 +1,142 @@ -package org.broadinstitute.hellbender.utils.help; - -import org.json.simple.parser.JSONParser; -import org.broadinstitute.barclay.argparser.ClassFinder; -import org.broadinstitute.hellbender.CommandLineProgramTest; -import org.broadinstitute.hellbender.cmdline.CommandLineProgram; -import org.json.simple.parser.ParseException; -import org.testng.Assert; -import org.testng.annotations.Test; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; - -/** - * Smoke test to run doc gen on a subset of classes to make sure it doesn't regress. - */ -public class WDLGenerationIntegrationTest extends CommandLineProgramTest { - - final private static List wdlGenTestPackages; - static { - final ClassFinder classFinder = new ClassFinder(); - classFinder.find("org.broadinstitute.hellbender", CommandLineProgram.class); - wdlGenTestPackages = Collections.unmodifiableList( - classFinder.getClasses() - .stream() - .map(cl -> cl.getPackage().getName()) - .collect(Collectors.toSet()) // uniquify - .stream() - .collect(Collectors.toList()) - ); - } - - @Test - private void wdlGenSmokeTest() throws IOException, ParseException { - final File wdlTestTargetDir = createTempDir("wdlgentest"); - doWDLGenTest(wdlGenTestPackages, "src/main/java", wdlTestTargetDir); - - // load and parse every generated JSON file to make sure they're valid JSON - final File[] jsonFiles = wdlTestTargetDir.listFiles((File dir, String name) -> name.endsWith(".json")); - for (final File f : jsonFiles) { - assertValidJSONFile(f); - } - } - - // This test uses a test tool with all combinations of input/output, list/scalar, across all types, including - // companions, to ensure that the various templates use the template maps correctly. - @Test - private void wdlGenTemplateTest() throws IOException, ParseException { - final File expectedResultsDir = new File("src/test/resources/org/broadinstitute/hellbender/utils/WDLTestExpectedOutputs/"); - final File wdlTestTargetDir = createTempDir("wdlgentemplatetest"); - - doWDLGenTest( - Collections.singletonList("org.broadinstitute.hellbender.utils.help"), - "src/test/java", - wdlTestTargetDir); - - // index - final String indexHTML = "index.html"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + indexHTML), - new File(wdlTestTargetDir, indexHTML)); - - // wdls - final String defaultWDL = "TestWDLTool.wdl"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + defaultWDL), - new File(wdlTestTargetDir, defaultWDL)); - - final String allArgsWDL = "TestWDLToolAllArgs.wdl"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + allArgsWDL), - new File(wdlTestTargetDir, allArgsWDL)); - - final String allArgsTestWDL = "TestWDLToolAllArgsTest.wdl"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + allArgsTestWDL), - new File(wdlTestTargetDir, allArgsTestWDL)); - - // jsons - final String defaultWDLInputs = "TestWDLToolInputs.json"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + defaultWDLInputs), - new File(wdlTestTargetDir, defaultWDLInputs)); - assertValidJSONFile(new File(wdlTestTargetDir, defaultWDLInputs)); - - final String allArgsWDLInputs = "TestWDLToolAllArgsInputs.json"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + allArgsWDLInputs), - new File(wdlTestTargetDir, allArgsWDLInputs)); - assertValidJSONFile(new File(wdlTestTargetDir, allArgsWDLInputs)); - - final String allArgsTestWDLInputs = "TestWDLToolAllArgsTestInputs.json"; - IntegrationTestSpec.assertEqualTextFiles( - new File(expectedResultsDir, "expected" + allArgsTestWDLInputs), - new File(wdlTestTargetDir, allArgsTestWDLInputs)); - assertValidJSONFile(new File(wdlTestTargetDir, allArgsTestWDLInputs)); - } - - private void assertValidJSONFile(final File targetFile) throws IOException, ParseException { - try (FileReader fileReader = new FileReader(targetFile)) { - new JSONParser().parse(fileReader); - } - } - - // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs - @SuppressWarnings({"deprecation","removal"}) - private void doWDLGenTest(List testPackages, final String sourcePath, final File wdlTestTargetDir) { - - final String[] argArray = new String[]{ - "javadoc", - "-doclet", GATKWDLDoclet.class.getName(), - "-docletpath", System.getProperty("java.class.path"), - "-sourcepath", sourcePath, - "-settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates", - "-d", wdlTestTargetDir.getAbsolutePath(), // directory must exist - "-output-file-extension", "wdl", - "-build-timestamp", "2016/11/11 11:11:11", - "-build-dir", ".", - "-absolute-version", "1.2.3.4", - "-verbose" - }; - - final List docArgList = new ArrayList<>(); - docArgList.addAll(Arrays.asList(argArray)); - docArgList.add("-cp"); - docArgList.add(System.getProperty("java.class.path")); - docArgList.addAll(testPackages); - - // Run javadoc in the current JVM with the custom WDL doclet. This is a smoke test; we just want to - // make sure it doesn't blow up (the gradle task gatkWDLGenValidation does womtool validation on the results). - Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); - } - -} +//package org.broadinstitute.hellbender.utils.help; +// +//import org.json.simple.parser.JSONParser; +//import org.broadinstitute.barclay.argparser.ClassFinder; +//import org.broadinstitute.hellbender.CommandLineProgramTest; +//import org.broadinstitute.hellbender.cmdline.CommandLineProgram; +//import org.json.simple.parser.ParseException; +//import org.testng.Assert; +//import org.testng.annotations.Test; +// +//import java.io.File; +//import java.io.FileReader; +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.Collections; +//import java.util.List; +//import java.util.stream.Collectors; +// +//import org.broadinstitute.hellbender.testutils.IntegrationTestSpec; +// +///** +// * Smoke test to run doc gen on a subset of classes to make sure it doesn't regress. +// */ +//public class WDLGenerationIntegrationTest extends CommandLineProgramTest { +// +// final private static List wdlGenTestPackages; +// static { +// final ClassFinder classFinder = new ClassFinder(); +// classFinder.find("org.broadinstitute.hellbender", CommandLineProgram.class); +// wdlGenTestPackages = Collections.unmodifiableList( +// classFinder.getClasses() +// .stream() +// .map(cl -> cl.getPackage().getName()) +// .collect(Collectors.toSet()) // uniquify +// .stream() +// .collect(Collectors.toList()) +// ); +// } +// +// @Test +// private void wdlGenSmokeTest() throws IOException, ParseException { +// final File wdlTestTargetDir = createTempDir("wdlgentest"); +// doWDLGenTest(wdlGenTestPackages, "src/main/java", wdlTestTargetDir); +// +// // load and parse every generated JSON file to make sure they're valid JSON +// final File[] jsonFiles = wdlTestTargetDir.listFiles((File dir, String name) -> name.endsWith(".json")); +// for (final File f : jsonFiles) { +// assertValidJSONFile(f); +// } +// } +// +// // This test uses a test tool with all combinations of input/output, list/scalar, across all types, including +// // companions, to ensure that the various templates use the template maps correctly. +// @Test +// private void wdlGenTemplateTest() throws IOException, ParseException { +// final File expectedResultsDir = new File("src/test/resources/org/broadinstitute/hellbender/utils/WDLTestExpectedOutputs/"); +// final File wdlTestTargetDir = createTempDir("wdlgentemplatetest"); +// +// doWDLGenTest( +// Collections.singletonList("org.broadinstitute.hellbender.utils.help"), +// "src/test/java", +// wdlTestTargetDir); +// +// // index +// final String indexHTML = "index.html"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + indexHTML), +// new File(wdlTestTargetDir, indexHTML)); +// +// // wdls +// final String defaultWDL = "TestWDLTool.wdl"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + defaultWDL), +// new File(wdlTestTargetDir, defaultWDL)); +// +// final String allArgsWDL = "TestWDLToolAllArgs.wdl"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + allArgsWDL), +// new File(wdlTestTargetDir, allArgsWDL)); +// +// final String allArgsTestWDL = "TestWDLToolAllArgsTest.wdl"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + allArgsTestWDL), +// new File(wdlTestTargetDir, allArgsTestWDL)); +// +// // jsons +// final String defaultWDLInputs = "TestWDLToolInputs.json"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + defaultWDLInputs), +// new File(wdlTestTargetDir, defaultWDLInputs)); +// assertValidJSONFile(new File(wdlTestTargetDir, defaultWDLInputs)); +// +// final String allArgsWDLInputs = "TestWDLToolAllArgsInputs.json"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + allArgsWDLInputs), +// new File(wdlTestTargetDir, allArgsWDLInputs)); +// assertValidJSONFile(new File(wdlTestTargetDir, allArgsWDLInputs)); +// +// final String allArgsTestWDLInputs = "TestWDLToolAllArgsTestInputs.json"; +// IntegrationTestSpec.assertEqualTextFiles( +// new File(expectedResultsDir, "expected" + allArgsTestWDLInputs), +// new File(wdlTestTargetDir, allArgsTestWDLInputs)); +// assertValidJSONFile(new File(wdlTestTargetDir, allArgsTestWDLInputs)); +// } +// +// private void assertValidJSONFile(final File targetFile) throws IOException, ParseException { +// try (FileReader fileReader = new FileReader(targetFile)) { +// new JSONParser().parse(fileReader); +// } +// } +// +// // suppress deprecation warning on Java 11 since we're using deprecated javadoc APIs +// @SuppressWarnings({"deprecation","removal"}) +// private void doWDLGenTest(List testPackages, final String sourcePath, final File wdlTestTargetDir) { +// +// final String[] argArray = new String[]{ +// "javadoc", +// "-doclet", GATKWDLDoclet.class.getName(), +// "-docletpath", System.getProperty("java.class.path"), +// "-sourcepath", sourcePath, +// "-settings-dir", "src/main/resources/org/broadinstitute/hellbender/utils/wdlTemplates", +// "-d", wdlTestTargetDir.getAbsolutePath(), // directory must exist +// "-output-file-extension", "wdl", +// "-build-timestamp", "2016/11/11 11:11:11", +// "-build-dir", ".", +// "-absolute-version", "1.2.3.4", +// "-verbose" +// }; +// +// final List docArgList = new ArrayList<>(); +// docArgList.addAll(Arrays.asList(argArray)); +// docArgList.add("-cp"); +// docArgList.add(System.getProperty("java.class.path")); +// docArgList.addAll(testPackages); +// +// // Run javadoc in the current JVM with the custom WDL doclet. This is a smoke test; we just want to +// // make sure it doesn't blow up (the gradle task gatkWDLGenValidation does womtool validation on the results). +// Assert.assertEquals(com.sun.tools.javadoc.Main.execute(docArgList.toArray(new String[] {})), 0); +// } +// +//} diff --git a/src/test/java/org/broadinstitute/hellbender/utils/io/IOUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/utils/io/IOUtilsUnitTest.java index 6a4a4bd9f08..2ac6a803dc1 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/io/IOUtilsUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/io/IOUtilsUnitTest.java @@ -465,6 +465,11 @@ public void testAppendPathToDir() throws Exception { Assert.assertEquals(IOUtils.appendPathToDir("dir/", "/file"), "/file"); Assert.assertEquals(IOUtils.appendPathToDir("/path/to/dir", "anotherdir/file"), "/path/to/dir/anotherdir/file"); + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } // hdfs: URI MiniDFSCluster cluster = null; try { @@ -529,6 +534,11 @@ public void testUnsuccessfulCanReadFileCheck(final File file) { @Test public void testCreateDirectory() throws IOException { + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } // hdfs Path tempPath = IOUtils.getPath(MiniClusterUtils.getWorkingDir(MiniClusterUtils.getMiniCluster()).toUri().toString()) .resolve("temp"); diff --git a/src/test/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtilsUnitTest.java deleted file mode 100644 index af755460107..00000000000 --- a/src/test/java/org/broadinstitute/hellbender/utils/mcmc/PosteriorSummaryUtilsUnitTest.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.broadinstitute.hellbender.utils.mcmc; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.math3.distribution.BetaDistribution; -import org.apache.commons.math3.distribution.NormalDistribution; -import org.apache.commons.math3.random.RandomGenerator; -import org.apache.commons.math3.random.RandomGeneratorFactory; -import org.apache.spark.api.java.JavaSparkContext; -import org.broadinstitute.hellbender.GATKBaseTest; -import org.broadinstitute.hellbender.engine.spark.SparkContextFactory; -import org.testng.Assert; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; -import java.util.stream.Collectors; - -/** - * Tests for {@link PosteriorSummaryUtils}. Tests that posterior mode and highest-posterior-density credible interval - * are recovered for samples drawn from various posterior distributions. - * - * @author Samuel Lee <slee@broadinstitute.org> - */ -public final class PosteriorSummaryUtilsUnitTest extends GATKBaseTest { - private static final int RANDOM_SEED = 42; - private static final RandomGenerator rng = RandomGeneratorFactory.createRandomGenerator(new Random(RANDOM_SEED)); - - private static final List normalSamples = toList(new NormalDistribution(rng, 10., 1).sample(100)); - private static final List normalSamplesSmall = toList(new NormalDistribution(rng, 10., 1).sample(10)); - private static final List normalSamplesScaled = toList(new NormalDistribution(rng, 10., 0.01).sample(100)); - - private static final List betaSamples = toList(new BetaDistribution(rng, 10, 4).sample(1000)); - private static final List betaSamplesEdgeMode = toList(new BetaDistribution(rng, 10, 1).sample(1000)); - private static final List betaSamplesMAF = Arrays.stream(ArrayUtils.addAll( - new BetaDistribution(rng, 10, 6).sample(1000), - new BetaDistribution(rng, 6, 10).sample(1000))) - .boxed().filter(d -> d <= 0.5).collect(Collectors.toList()); //mimics minor-allele-fraction posterior - - private static final List identicalSamples = Collections.nCopies(1000, 1.); - private static final List withNaNSamples = toList(new double[]{Double.NEGATIVE_INFINITY, 0., 1.}); - - @DataProvider(name = "dataKernelDensityEstimation") - public Object[][] dataHPD() { - return new Object[][]{ - //samples, alpha, relative error tolerance, expected (calculated using Mathematica for Beta tests) - {normalSamples, 0.32, 0.05, new PosteriorSummary(10., 9., 11.)}, - {normalSamples, 0.05, 0.05, new PosteriorSummary(10., 8., 12.)}, - {normalSamplesSmall, 0.32, 0.15, new PosteriorSummary(10., 9., 11.)}, - {normalSamplesSmall, 0.05, 0.15, new PosteriorSummary(10., 8., 12.)}, - {normalSamplesScaled, 0.32, 0.05, new PosteriorSummary(10., 9.99, 10.01)}, - {normalSamplesScaled, 0.05, 0.05, new PosteriorSummary(10., 9.98, 10.02)}, - {betaSamples, 0.32, 0.05, new PosteriorSummary(0.75, 0.621, 0.854)}, - {betaSamples, 0.05, 0.05, new PosteriorSummary(0.75, 0.487, 0.925)}, - {betaSamplesEdgeMode, 0.32, 0.05, new PosteriorSummary(1.0, 0.8923, 1.)}, - {betaSamplesEdgeMode, 0.05, 0.05, new PosteriorSummary(1.0, 0.7411, 1.)}, - {betaSamplesMAF, 0.32, 0.05, new PosteriorSummary(0.415, 0.312, 0.5)}, - {betaSamplesMAF, 0.05, 0.05, new PosteriorSummary(0.415, 0.191, 0.5)}, - {identicalSamples, 0.32, 0.01, new PosteriorSummary(1., 1., 1.)}, - {withNaNSamples, 0.32, 0.01, new PosteriorSummary(Double.NaN, Double.NaN, Double.NaN)} - }; - } - - @Test(dataProvider = "dataKernelDensityEstimation") - public void testCalculateHighestPosteriorDensitySummary(final List samples, - final double credibleIntervalAlpha, - final double relativeError, - final PosteriorSummary expected) { - final JavaSparkContext ctx = SparkContextFactory.getTestSparkContext(); - final PosteriorSummary result = - PosteriorSummaryUtils.calculateHighestPosteriorDensitySummary(samples, credibleIntervalAlpha, ctx); - assertEquals(result, expected, relativeError); - } - - @Test(dataProvider = "dataKernelDensityEstimation") - public void testCalculatePosteriorMode(final List samples, - final double credibleIntervalAlpha, - final double relativeError, - final PosteriorSummary expected) { - final JavaSparkContext ctx = SparkContextFactory.getTestSparkContext(); - final double result = PosteriorSummaryUtils.calculatePosteriorMode(samples, ctx); - Assert.assertTrue(withinRelativeError(result, expected.getCenter(), relativeError)); - - } - - private static boolean withinRelativeError(final double x, final double xTrue, final double relativeError) { - if (Double.isNaN(xTrue)) { - return Double.isNaN(x); - } - return Math.abs(x - xTrue) < Math.abs(relativeError * xTrue); - } - - private static List toList(double[] array) { - return Arrays.stream(array).boxed().collect(Collectors.toList()); } - - private static void assertEquals(final PosteriorSummary result, final PosteriorSummary expected, final double relativeError) { - Assert.assertTrue(withinRelativeError(result.getCenter(), expected.getCenter(), relativeError)); - Assert.assertTrue(withinRelativeError(result.getLower(), expected.getLower(), relativeError)); - Assert.assertTrue(withinRelativeError(result.getUpper(), expected.getUpper(), relativeError)); - } -} \ No newline at end of file diff --git a/src/test/java/org/broadinstitute/hellbender/utils/spark/SparkUtilsUnitTest.java b/src/test/java/org/broadinstitute/hellbender/utils/spark/SparkUtilsUnitTest.java index 16995360956..8c36208d1cb 100644 --- a/src/test/java/org/broadinstitute/hellbender/utils/spark/SparkUtilsUnitTest.java +++ b/src/test/java/org/broadinstitute/hellbender/utils/spark/SparkUtilsUnitTest.java @@ -22,6 +22,7 @@ import org.broadinstitute.hellbender.utils.read.ReadQueryNameComparator; import org.broadinstitute.hellbender.testutils.MiniClusterUtils; import org.testng.Assert; +import org.testng.SkipException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import scala.Tuple2; @@ -73,6 +74,11 @@ public void testConvertHeaderlessHadoopBamShardToBam() { @Test public void testPathExists() throws Exception { + // see https://github.com/eclipse/jetty.project/issues/8549 + if (isGATKDockerContainer()) { + // for the docker tests, the test dependencies are in a separate jar + throw new SkipException("skipping due to jetty jar parsing issues (https://github.com/eclipse/jetty.project/issues/8549)"); + } MiniClusterUtils.runOnIsolatedMiniCluster( cluster -> { //use the HDFS on the mini cluster final Path workingDirectory = MiniClusterUtils.getWorkingDir(cluster); diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.af.param index b45a7d96f63..bb6129c4004 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.070124 1.081592 1.099740 1.106582 1.112816 1.119808 1.130594 1.135492 1.150073 -BIAS_VARIANCE 0.388637 0.426262 0.437928 0.448314 0.464513 0.477831 0.482795 0.487486 0.492007 -OUTLIER_PROBABILITY 0.062308 0.070366 0.083632 0.092903 0.099303 0.105473 0.110069 0.119230 0.132290 +MEAN_BIAS 1.092482 1.106161 1.113179 1.124902 1.131327 1.144333 1.154568 1.164827 1.180697 +BIAS_VARIANCE 0.434015 0.446432 0.459002 0.467580 0.475156 0.484281 0.487932 0.492417 0.495571 +OUTLIER_PROBABILITY 0.057314 0.069014 0.076118 0.079128 0.082268 0.089037 0.093737 0.100190 0.110147 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.seg index 5a67d069c81..f878e6f373d 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-nac-tumor-1.modelBegin.seg @@ -2,194 +2,194 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 138148 0 2 NaN NaN NaN 0.468342 0.487890 0.497042 -20 139409 139576 0 3 NaN NaN NaN 0.463572 0.488142 0.497364 -20 168466 259156 0 12 NaN NaN NaN 0.472111 0.483950 0.494138 -20 259818 259818 0 1 NaN NaN NaN 0.443801 0.488459 0.498354 -20 259969 278806 0 2 NaN NaN NaN 0.442325 0.470467 0.496762 -20 368905 377226 0 3 NaN NaN NaN 0.456473 0.482737 0.498447 -20 389456 402921 0 4 NaN NaN NaN 0.455100 0.486244 0.496886 -20 425606 744415 0 4 NaN NaN NaN 0.455163 0.483849 0.496749 -20 744570 744570 0 1 NaN NaN NaN 0.464890 0.486580 0.497012 -20 746098 1285933 0 5 NaN NaN NaN 0.441010 0.484706 0.498340 -20 1424303 1424303 0 1 NaN NaN NaN 0.449355 0.486702 0.497371 -20 1426393 1458504 0 3 NaN NaN NaN 0.447496 0.485389 0.497493 -20 1517979 1552430 0 8 NaN NaN NaN 0.456186 0.487521 0.498754 -20 1559330 1592312 0 6 NaN NaN NaN 0.422084 0.486254 0.496836 -20 1600524 1600524 0 1 NaN NaN NaN 0.474424 0.489624 0.498575 -20 1610790 1610894 0 3 NaN NaN NaN 0.433739 0.483982 0.495920 -20 1615883 1616892 0 2 NaN NaN NaN 0.457933 0.485226 0.498071 -20 1895889 1896060 0 3 NaN NaN NaN 0.454878 0.479672 0.496963 -20 2056358 2056358 0 1 NaN NaN NaN 0.462289 0.484747 0.497444 -20 2315929 2517377 0 3 NaN NaN NaN 0.460933 0.487107 0.499312 -20 2517432 2517825 0 2 NaN NaN NaN 0.453503 0.490313 0.498821 -20 2552805 2552805 0 1 NaN NaN NaN 0.466926 0.487974 0.497018 -20 2593006 2621998 0 9 NaN NaN NaN 0.445679 0.486923 0.498480 -20 2633380 2779257 0 3 NaN NaN NaN 0.425762 0.481909 0.496109 -20 2796471 2796471 0 1 NaN NaN NaN 0.443308 0.482128 0.498896 -20 2818801 2996589 0 5 NaN NaN NaN 0.458859 0.490855 0.498773 -20 3002889 3199446 0 4 NaN NaN NaN 0.460050 0.489440 0.497987 -20 3624830 3640823 0 2 NaN NaN NaN 0.462718 0.484409 0.497018 -20 3641881 3653149 0 5 NaN NaN NaN 0.461182 0.484415 0.498307 -20 3654433 3686436 0 12 NaN NaN NaN 0.472959 0.491259 0.498054 -20 3721456 3731622 0 2 NaN NaN NaN 0.441148 0.476612 0.496803 -20 3732633 3838441 0 2 NaN NaN NaN 0.436229 0.483034 0.497759 -20 3870124 4055656 0 2 NaN NaN NaN 0.454476 0.487759 0.497583 -20 4155948 4162411 0 2 NaN NaN NaN 0.442848 0.488813 0.498585 -20 4202802 4705756 0 4 NaN NaN NaN 0.447581 0.486501 0.498165 -20 4843609 4843609 0 1 NaN NaN NaN 0.430102 0.470866 0.496755 -20 4880308 5261206 0 4 NaN NaN NaN 0.448203 0.488387 0.498642 -20 5273253 5273382 0 3 NaN NaN NaN 0.472879 0.488492 0.498262 -20 5283256 5482307 0 8 NaN NaN NaN 0.454268 0.489470 0.498141 -20 5528518 6064839 0 8 NaN NaN NaN 0.459994 0.485212 0.497703 -20 6065731 6100230 0 5 NaN NaN NaN 0.459268 0.490527 0.498889 -20 6194421 6195664 0 2 NaN NaN NaN 0.466049 0.487531 0.499059 -20 7866261 7999537 0 4 NaN NaN NaN 0.441573 0.479925 0.494714 -20 8626903 8626903 0 1 NaN NaN NaN 0.463021 0.490744 0.499274 -20 8665751 8703145 0 4 NaN NaN NaN 0.453360 0.486540 0.498113 -20 8707900 8707927 0 2 NaN NaN NaN 0.417761 0.478538 0.495056 -20 8737734 8769423 0 4 NaN NaN NaN 0.459640 0.485114 0.497287 -20 8770318 8770932 0 3 NaN NaN NaN 0.437661 0.487690 0.496813 -20 8773096 8773096 0 1 NaN NaN NaN 0.463463 0.488458 0.497713 -20 8773155 9417870 0 2 NaN NaN NaN 0.445135 0.479905 0.498432 -20 9424810 9510263 0 3 NaN NaN NaN 0.440448 0.488554 0.496925 -20 10024951 10024951 0 1 NaN NaN NaN 0.457144 0.490013 0.498595 -20 10026357 10032413 0 4 NaN NaN NaN 0.441702 0.483175 0.498743 -20 10329888 10393145 0 3 NaN NaN NaN 0.468849 0.490361 0.498691 -20 10438780 10438780 0 1 NaN NaN NaN 0.466338 0.486088 0.497808 -20 10629129 10629525 0 2 NaN NaN NaN 0.459745 0.483764 0.497861 -20 13054633 13060331 0 2 NaN NaN NaN 0.458392 0.488360 0.499373 -20 13071871 13071871 0 1 NaN NaN NaN 0.453752 0.487850 0.496788 -20 13074243 13074243 0 1 NaN NaN NaN 0.456355 0.495221 0.499621 -20 13090745 13260252 0 2 NaN NaN NaN 0.455981 0.485482 0.497963 -20 13769127 13769127 0 1 NaN NaN NaN 0.466940 0.482900 0.497722 -20 13798676 13830137 0 3 NaN NaN NaN 0.464393 0.486108 0.499040 -20 13845726 13845726 0 1 NaN NaN NaN 0.449658 0.483338 0.497048 -20 14306896 14306896 0 1 NaN NaN NaN 0.433363 0.482537 0.497557 -20 14306953 15874325 0 2 NaN NaN NaN 0.441054 0.478186 0.497090 -20 15967327 15967327 0 1 NaN NaN NaN 0.453562 0.488381 0.497066 -20 16730479 16730522 0 2 NaN NaN NaN 0.449904 0.485520 0.498266 -20 17459905 17460005 0 3 NaN NaN NaN 0.455078 0.487954 0.498746 -20 17474690 17594729 0 6 NaN NaN NaN 0.418766 0.490401 0.499496 -20 17595329 17596731 0 3 NaN NaN NaN 0.454120 0.483274 0.496088 -20 17597531 17597531 0 1 NaN NaN NaN 0.469970 0.484995 0.497426 -20 17600357 17600357 0 1 NaN NaN NaN 0.458954 0.487090 0.497683 -20 17602028 17602028 0 1 NaN NaN NaN 0.448643 0.484626 0.498452 -20 17992979 18022171 0 3 NaN NaN NaN 0.475244 0.492738 0.499047 -20 18142924 18142924 0 1 NaN NaN NaN 0.458255 0.487492 0.497199 -20 18286888 18446024 0 6 NaN NaN NaN 0.461906 0.490104 0.497977 -20 18806046 19970705 0 7 NaN NaN NaN 0.434425 0.478511 0.493315 -20 20032998 20033367 0 5 NaN NaN NaN 0.453245 0.485423 0.498910 -20 20033380 20033380 0 1 NaN NaN NaN 0.466972 0.490658 0.499216 -20 20037222 21336825 0 17 NaN NaN NaN 0.307016 0.338686 0.382876 -20 21897170 22714612 0 4 NaN NaN NaN 0.443723 0.489060 0.498620 -20 23345844 23424613 0 5 NaN NaN NaN 0.467190 0.491598 0.499331 -20 23425812 23529388 0 3 NaN NaN NaN 0.447116 0.484396 0.497814 -20 23529418 23807028 0 9 NaN NaN NaN 0.456677 0.487306 0.498864 -20 23842032 23842032 0 1 NaN NaN NaN 0.453003 0.489769 0.498408 -20 23860178 24200652 0 2 NaN NaN NaN 0.472732 0.487674 0.498199 -20 24939590 24939590 0 1 NaN NaN NaN 0.440508 0.475145 0.496103 -20 24993414 25011423 0 3 NaN NaN NaN 0.456649 0.486873 0.497360 -20 25038484 25059442 0 2 NaN NaN NaN 0.443923 0.487719 0.498223 -20 25190598 25255338 0 3 NaN NaN NaN 0.430500 0.474540 0.493732 -20 25255415 25255415 0 1 NaN NaN NaN 0.455203 0.488358 0.499046 -20 25257260 25261784 0 6 NaN NaN NaN 0.418214 0.478859 0.498724 -20 25262769 25262789 0 2 NaN NaN NaN 0.456230 0.481003 0.493796 -20 25263756 25263756 0 1 NaN NaN NaN 0.451728 0.490955 0.499095 -20 25264664 25282944 0 12 NaN NaN NaN 0.450888 0.483014 0.495581 -20 25288505 25295787 0 2 NaN NaN NaN 0.423609 0.473979 0.499340 -20 25320228 25398876 0 3 NaN NaN NaN 0.455185 0.479698 0.496038 -20 25434351 25470056 0 8 NaN NaN NaN 0.443830 0.474657 0.498968 -20 25597236 25838130 0 7 NaN NaN NaN 0.320993 0.451164 0.497076 -20 25838802 25841650 0 4 NaN NaN NaN 0.445044 0.478319 0.497313 -20 25846283 25900162 0 3 NaN NaN NaN 0.405458 0.475299 0.492568 -20 25900379 25965961 0 2 NaN NaN NaN 0.454761 0.490041 0.497542 -20 29449417 29449417 0 1 NaN NaN NaN 0.464282 0.485538 0.498433 -20 29516670 29572218 0 6 NaN NaN NaN 0.462344 0.487263 0.498472 -20 29632564 29632564 0 1 NaN NaN NaN 0.438678 0.474107 0.496931 -20 29633929 29648701 0 3 NaN NaN NaN 0.458813 0.486786 0.498088 -20 29873577 30037783 0 3 NaN NaN NaN 0.443520 0.485422 0.497750 -20 30053255 31025231 0 4 NaN NaN NaN 0.469532 0.488358 0.498654 -20 31647126 31677476 0 8 NaN NaN NaN 0.425888 0.469007 0.497880 -20 31811551 32710710 0 12 NaN NaN NaN 0.267753 0.325643 0.407239 -20 32990050 33063830 0 5 NaN NaN NaN 0.393932 0.479076 0.494825 -20 33068563 33879478 0 3 NaN NaN NaN 0.438881 0.482201 0.498997 -20 34218673 34312713 0 8 NaN NaN NaN 0.447297 0.482432 0.496999 -20 34319765 34324484 0 4 NaN NaN NaN 0.444920 0.486840 0.498638 -20 34328848 34328848 0 1 NaN NaN NaN 0.439274 0.492929 0.499573 -20 34443173 34782171 0 11 NaN NaN NaN 0.436542 0.485719 0.498581 -20 35491033 35559352 0 2 NaN NaN NaN 0.458781 0.489129 0.499453 -20 35710453 35710453 0 1 NaN NaN NaN 0.438939 0.475029 0.494706 -20 35740794 35740794 0 1 NaN NaN NaN 0.455539 0.484290 0.498440 -20 35748894 35869619 0 15 NaN NaN NaN 0.335015 0.399473 0.492717 -20 36022539 36718059 0 5 NaN NaN NaN 0.451514 0.482586 0.497865 -20 36790166 36793529 0 3 NaN NaN NaN 0.470440 0.489372 0.497947 -20 36841756 36919758 0 4 NaN NaN NaN 0.435676 0.486417 0.498073 -20 36932551 36937246 0 4 NaN NaN NaN 0.447373 0.482710 0.497359 -20 36946848 36959353 0 3 NaN NaN NaN 0.438993 0.483681 0.497788 -20 36965617 36965617 0 1 NaN NaN NaN 0.445996 0.485278 0.498080 -20 36989269 37279458 0 11 NaN NaN NaN 0.432149 0.487760 0.497674 -20 37377139 37396262 0 5 NaN NaN NaN 0.459971 0.482634 0.494451 -20 38354742 38354742 0 1 NaN NaN NaN 0.452231 0.485309 0.499521 -20 38898213 40076509 0 7 NaN NaN NaN 0.465551 0.488282 0.498891 -20 40179909 40626474 0 3 NaN NaN NaN 0.458050 0.492419 0.499201 -20 40714479 40743829 0 3 NaN NaN NaN 0.469377 0.489110 0.498899 -20 40981002 41076751 0 2 NaN NaN NaN 0.454693 0.486138 0.496948 -20 41962342 43944958 0 40 NaN NaN NaN 0.466911 0.487626 0.496635 -20 44144118 44638971 0 3 NaN NaN NaN 0.433381 0.479449 0.497572 -20 44639511 44645010 0 8 NaN NaN NaN 0.447072 0.488137 0.499124 -20 44650318 44650318 0 1 NaN NaN NaN 0.451077 0.486002 0.498594 -20 44806875 44806875 0 1 NaN NaN NaN 0.466133 0.488571 0.497943 -20 44983517 45092517 0 3 NaN NaN NaN 0.470610 0.491576 0.498659 -20 45092859 45092921 0 2 NaN NaN NaN 0.443911 0.484865 0.496511 -20 45093125 45629941 0 4 NaN NaN NaN 0.462561 0.485247 0.499234 -20 45789953 45789953 0 1 NaN NaN NaN 0.437757 0.487383 0.499322 -20 45797639 45797883 0 2 NaN NaN NaN 0.452503 0.481186 0.497738 -20 45797954 45808688 0 3 NaN NaN NaN 0.461999 0.484172 0.497302 -20 45809652 45816639 0 4 NaN NaN NaN 0.458834 0.486745 0.498932 -20 45816649 45891189 0 2 NaN NaN NaN 0.467855 0.489181 0.498072 -20 45923383 47253043 0 4 NaN NaN NaN 0.467400 0.486274 0.498754 -20 47256300 47258763 0 4 NaN NaN NaN 0.459589 0.487584 0.498902 -20 47261017 47361725 0 12 NaN NaN NaN 0.472546 0.489079 0.497476 -20 47569112 47615692 0 7 NaN NaN NaN 0.458203 0.489884 0.498302 -20 47621554 47713063 0 9 NaN NaN NaN 0.464863 0.487168 0.498322 -20 47739814 47850182 0 5 NaN NaN NaN 0.465808 0.489847 0.499370 -20 47852822 47859217 0 3 NaN NaN NaN 0.462934 0.489518 0.498779 -20 47865372 48131036 0 9 NaN NaN NaN 0.478657 0.490781 0.497149 -20 48257149 48259034 0 2 NaN NaN NaN 0.478141 0.492674 0.499594 -20 48300990 48300990 0 1 NaN NaN NaN 0.458709 0.489191 0.497772 -20 48301146 49191228 0 4 NaN NaN NaN 0.456599 0.487527 0.498764 -20 49195248 49195248 0 1 NaN NaN NaN 0.475620 0.491907 0.499009 -20 49196167 49236478 0 5 NaN NaN NaN 0.467189 0.488092 0.497929 -20 49237419 49575334 0 2 NaN NaN NaN 0.453628 0.487345 0.497869 -20 50287736 53691106 0 21 NaN NaN NaN 0.476587 0.493193 0.498821 -20 54935242 55108617 0 9 NaN NaN NaN 0.469070 0.481343 0.493208 -20 55111371 56886062 0 15 NaN NaN NaN 0.460013 0.481739 0.497648 -20 57009796 57024541 0 4 NaN NaN NaN 0.458242 0.483960 0.496285 -20 57024589 57266134 0 4 NaN NaN NaN 0.462099 0.486725 0.497783 -20 57266592 57470517 0 8 NaN NaN NaN 0.464631 0.482526 0.498516 -20 57478448 57569860 0 7 NaN NaN NaN 0.446729 0.477139 0.497462 -20 57570854 57572839 0 2 NaN NaN NaN 0.450692 0.486969 0.495919 -20 57599402 58571125 0 8 NaN NaN NaN 0.460926 0.484030 0.496289 -20 58581863 60582540 0 8 NaN NaN NaN 0.468861 0.493812 0.499244 -20 60712347 60740362 0 8 NaN NaN NaN 0.453828 0.484013 0.497038 -20 60740447 60886611 0 13 NaN NaN NaN 0.437957 0.489863 0.498275 -20 60897721 60992224 0 8 NaN NaN NaN 0.450777 0.481333 0.497468 -20 60992402 61039958 0 2 NaN NaN NaN 0.457454 0.480633 0.493837 -20 61041653 61273578 0 8 NaN NaN NaN 0.464628 0.482834 0.494479 -20 61289958 61441061 0 4 NaN NaN NaN 0.462993 0.485697 0.493498 -20 61444697 61444697 0 1 NaN NaN NaN 0.463046 0.491487 0.497298 -20 61444785 61453348 0 2 NaN NaN NaN 0.468776 0.489151 0.498133 -20 61453549 61834695 0 18 NaN NaN NaN 0.459954 0.486469 0.498365 -20 61869607 61869607 0 1 NaN NaN NaN 0.450519 0.487232 0.498693 -20 61870727 61873039 0 3 NaN NaN NaN 0.456340 0.490987 0.498384 -20 61875497 61881296 0 5 NaN NaN NaN 0.440393 0.491248 0.498015 -20 61987572 61987572 0 1 NaN NaN NaN 0.462888 0.488293 0.498256 -20 62191558 62193019 0 2 NaN NaN NaN 0.462006 0.492112 0.498613 -20 62193445 62229244 0 11 NaN NaN NaN 0.459319 0.479103 0.494250 -20 62245686 62303794 0 5 NaN NaN NaN 0.458014 0.486443 0.498345 -20 62305274 62698484 0 10 NaN NaN NaN 0.460717 0.487484 0.498717 -20 62701092 62737318 0 5 NaN NaN NaN 0.458713 0.486144 0.498121 -20 62836271 62836271 0 1 NaN NaN NaN 0.466369 0.485312 0.496825 -20 62836520 62854417 0 2 NaN NaN NaN 0.452358 0.492000 0.499273 -20 62868043 62871232 0 2 NaN NaN NaN 0.465692 0.489907 0.499055 +20 138125 138148 0 2 NaN NaN NaN 0.464407 0.486070 0.497579 +20 139409 139576 0 3 NaN NaN NaN 0.461122 0.485931 0.499176 +20 168466 259156 0 12 NaN NaN NaN 0.457895 0.491265 0.498872 +20 259818 259818 0 1 NaN NaN NaN 0.466382 0.491250 0.498654 +20 259969 278806 0 2 NaN NaN NaN 0.463206 0.490312 0.498144 +20 368905 377226 0 3 NaN NaN NaN 0.458044 0.487224 0.498757 +20 389456 402921 0 4 NaN NaN NaN 0.466234 0.489776 0.497812 +20 425606 744415 0 4 NaN NaN NaN 0.464461 0.486551 0.497698 +20 744570 744570 0 1 NaN NaN NaN 0.453157 0.481366 0.497870 +20 746098 1285933 0 5 NaN NaN NaN 0.462423 0.490947 0.498324 +20 1424303 1424303 0 1 NaN NaN NaN 0.468911 0.490827 0.497889 +20 1426393 1458504 0 3 NaN NaN NaN 0.466803 0.482278 0.495897 +20 1517979 1552430 0 8 NaN NaN NaN 0.470641 0.492234 0.499442 +20 1559330 1592312 0 6 NaN NaN NaN 0.430067 0.486737 0.498420 +20 1600524 1600524 0 1 NaN NaN NaN 0.465881 0.488372 0.498560 +20 1610790 1610894 0 3 NaN NaN NaN 0.441414 0.484672 0.499017 +20 1615883 1616892 0 2 NaN NaN NaN 0.454391 0.481182 0.497772 +20 1895889 1896060 0 3 NaN NaN NaN 0.461932 0.489455 0.498334 +20 2056358 2056358 0 1 NaN NaN NaN 0.459308 0.484849 0.498173 +20 2315929 2517377 0 3 NaN NaN NaN 0.446734 0.491616 0.498323 +20 2517432 2517825 0 2 NaN NaN NaN 0.450113 0.492662 0.498695 +20 2552805 2552805 0 1 NaN NaN NaN 0.446937 0.485765 0.498437 +20 2593006 2621998 0 9 NaN NaN NaN 0.460278 0.482027 0.496574 +20 2633380 2779257 0 3 NaN NaN NaN 0.438601 0.484985 0.498236 +20 2796471 2796471 0 1 NaN NaN NaN 0.451218 0.484158 0.497717 +20 2818801 2996589 0 5 NaN NaN NaN 0.456774 0.480657 0.496687 +20 3002889 3199446 0 4 NaN NaN NaN 0.456957 0.481845 0.497566 +20 3624830 3640823 0 2 NaN NaN NaN 0.441022 0.483394 0.496273 +20 3641881 3653149 0 5 NaN NaN NaN 0.441273 0.481576 0.496279 +20 3654433 3686436 0 12 NaN NaN NaN 0.458082 0.483582 0.495629 +20 3721456 3731622 0 2 NaN NaN NaN 0.467440 0.490354 0.498490 +20 3732633 3838441 0 2 NaN NaN NaN 0.445706 0.486568 0.498390 +20 3870124 4055656 0 2 NaN NaN NaN 0.456928 0.486150 0.499034 +20 4155948 4162411 0 2 NaN NaN NaN 0.475001 0.491001 0.497316 +20 4202802 4705756 0 4 NaN NaN NaN 0.459922 0.483416 0.492498 +20 4843609 4843609 0 1 NaN NaN NaN 0.465557 0.483322 0.497828 +20 4880308 5261206 0 4 NaN NaN NaN 0.465757 0.489166 0.498847 +20 5273253 5273382 0 3 NaN NaN NaN 0.454133 0.486813 0.498199 +20 5283256 5482307 0 8 NaN NaN NaN 0.446504 0.481487 0.495978 +20 5528518 6064839 0 8 NaN NaN NaN 0.459175 0.482503 0.496616 +20 6065731 6100230 0 5 NaN NaN NaN 0.459071 0.486316 0.498339 +20 6194421 6195664 0 2 NaN NaN NaN 0.425071 0.477271 0.492088 +20 7866261 7999537 0 4 NaN NaN NaN 0.436744 0.482666 0.498196 +20 8626903 8626903 0 1 NaN NaN NaN 0.440978 0.486508 0.497051 +20 8665751 8703145 0 4 NaN NaN NaN 0.459312 0.482962 0.495206 +20 8707900 8707927 0 2 NaN NaN NaN 0.438393 0.486206 0.496464 +20 8737734 8769423 0 4 NaN NaN NaN 0.454830 0.476714 0.497234 +20 8770318 8770932 0 3 NaN NaN NaN 0.449636 0.484128 0.496957 +20 8773096 8773096 0 1 NaN NaN NaN 0.445031 0.482924 0.498446 +20 8773155 9417870 0 2 NaN NaN NaN 0.463520 0.486597 0.497565 +20 9424810 9510263 0 3 NaN NaN NaN 0.460224 0.482838 0.497542 +20 10024951 10024951 0 1 NaN NaN NaN 0.452279 0.486484 0.498485 +20 10026357 10032413 0 4 NaN NaN NaN 0.434263 0.475963 0.493759 +20 10329888 10393145 0 3 NaN NaN NaN 0.434909 0.486369 0.498872 +20 10438780 10438780 0 1 NaN NaN NaN 0.475837 0.491947 0.499234 +20 10629129 10629525 0 2 NaN NaN NaN 0.456437 0.489532 0.499008 +20 13054633 13060331 0 2 NaN NaN NaN 0.454256 0.477287 0.496440 +20 13071871 13071871 0 1 NaN NaN NaN 0.459138 0.479761 0.498746 +20 13074243 13074243 0 1 NaN NaN NaN 0.467449 0.483747 0.495100 +20 13090745 13260252 0 2 NaN NaN NaN 0.451010 0.483723 0.498521 +20 13769127 13769127 0 1 NaN NaN NaN 0.460953 0.483593 0.497393 +20 13798676 13830137 0 3 NaN NaN NaN 0.470761 0.491039 0.499020 +20 13845726 13845726 0 1 NaN NaN NaN 0.458991 0.489243 0.498246 +20 14306896 14306896 0 1 NaN NaN NaN 0.462697 0.482747 0.497749 +20 14306953 15874325 0 2 NaN NaN NaN 0.471777 0.489701 0.498759 +20 15967327 15967327 0 1 NaN NaN NaN 0.460896 0.482684 0.498108 +20 16730479 16730522 0 2 NaN NaN NaN 0.472701 0.490168 0.499277 +20 17459905 17460005 0 3 NaN NaN NaN 0.438471 0.494247 0.499313 +20 17474690 17594729 0 6 NaN NaN NaN 0.405755 0.481667 0.494895 +20 17595329 17596731 0 3 NaN NaN NaN 0.455723 0.485909 0.498079 +20 17597531 17597531 0 1 NaN NaN NaN 0.456243 0.484270 0.499608 +20 17600357 17600357 0 1 NaN NaN NaN 0.460066 0.489594 0.496607 +20 17602028 17602028 0 1 NaN NaN NaN 0.457020 0.483003 0.496373 +20 17992979 18022171 0 3 NaN NaN NaN 0.445688 0.485691 0.498082 +20 18142924 18142924 0 1 NaN NaN NaN 0.459703 0.486154 0.497652 +20 18286888 18446024 0 6 NaN NaN NaN 0.446208 0.485565 0.497564 +20 18806046 19970705 0 7 NaN NaN NaN 0.418702 0.473775 0.495490 +20 20032998 20033367 0 5 NaN NaN NaN 0.424455 0.488391 0.499058 +20 20033380 20033380 0 1 NaN NaN NaN 0.462944 0.488471 0.498671 +20 20037222 21336825 0 17 NaN NaN NaN 0.304050 0.346376 0.394794 +20 21897170 22714612 0 4 NaN NaN NaN 0.457290 0.489059 0.499217 +20 23345844 23424613 0 5 NaN NaN NaN 0.437295 0.481003 0.497200 +20 23425812 23529388 0 3 NaN NaN NaN 0.452706 0.484566 0.498899 +20 23529418 23807028 0 9 NaN NaN NaN 0.453581 0.483115 0.494498 +20 23842032 23842032 0 1 NaN NaN NaN 0.437562 0.483631 0.497048 +20 23860178 24200652 0 2 NaN NaN NaN 0.456297 0.486667 0.498941 +20 24939590 24939590 0 1 NaN NaN NaN 0.447034 0.481283 0.496603 +20 24993414 25011423 0 3 NaN NaN NaN 0.451753 0.482944 0.497565 +20 25038484 25059442 0 2 NaN NaN NaN 0.440957 0.482353 0.495245 +20 25190598 25255338 0 3 NaN NaN NaN 0.467700 0.487215 0.497722 +20 25255415 25255415 0 1 NaN NaN NaN 0.447030 0.476191 0.497503 +20 25257260 25261784 0 6 NaN NaN NaN 0.440299 0.481490 0.498109 +20 25262769 25262789 0 2 NaN NaN NaN 0.458143 0.487150 0.498592 +20 25263756 25263756 0 1 NaN NaN NaN 0.452278 0.488451 0.496533 +20 25264664 25282944 0 12 NaN NaN NaN 0.458368 0.487880 0.498741 +20 25288505 25295787 0 2 NaN NaN NaN 0.451414 0.485110 0.498004 +20 25320228 25398876 0 3 NaN NaN NaN 0.447331 0.480219 0.497599 +20 25434351 25470056 0 8 NaN NaN NaN 0.448601 0.489158 0.498747 +20 25597236 25838130 0 7 NaN NaN NaN 0.389397 0.466843 0.492718 +20 25838802 25841650 0 4 NaN NaN NaN 0.473491 0.490042 0.498458 +20 25846283 25900162 0 3 NaN NaN NaN 0.432052 0.475427 0.497368 +20 25900379 25965961 0 2 NaN NaN NaN 0.453943 0.479595 0.498381 +20 29449417 29449417 0 1 NaN NaN NaN 0.447085 0.487201 0.499140 +20 29516670 29572218 0 6 NaN NaN NaN 0.466761 0.489625 0.497234 +20 29632564 29632564 0 1 NaN NaN NaN 0.459153 0.488990 0.497113 +20 29633929 29648701 0 3 NaN NaN NaN 0.450700 0.486758 0.498239 +20 29873577 30037783 0 3 NaN NaN NaN 0.461542 0.488383 0.497918 +20 30053255 31025231 0 4 NaN NaN NaN 0.417046 0.477463 0.498282 +20 31647126 31677476 0 8 NaN NaN NaN 0.436732 0.479856 0.496731 +20 31811551 32710710 0 12 NaN NaN NaN 0.289504 0.321465 0.364668 +20 32990050 33063830 0 5 NaN NaN NaN 0.426077 0.479029 0.498662 +20 33068563 33879478 0 3 NaN NaN NaN 0.459169 0.491222 0.498511 +20 34218673 34312713 0 8 NaN NaN NaN 0.455638 0.486018 0.497565 +20 34319765 34324484 0 4 NaN NaN NaN 0.476236 0.492410 0.499058 +20 34328848 34328848 0 1 NaN NaN NaN 0.465145 0.489464 0.498062 +20 34443173 34782171 0 11 NaN NaN NaN 0.454545 0.486928 0.497617 +20 35491033 35559352 0 2 NaN NaN NaN 0.437221 0.475433 0.494420 +20 35710453 35710453 0 1 NaN NaN NaN 0.440980 0.481082 0.496704 +20 35740794 35740794 0 1 NaN NaN NaN 0.461184 0.488450 0.497873 +20 35748894 35869619 0 15 NaN NaN NaN 0.345601 0.399604 0.492575 +20 36022539 36718059 0 5 NaN NaN NaN 0.466266 0.487012 0.498169 +20 36790166 36793529 0 3 NaN NaN NaN 0.464594 0.484363 0.497311 +20 36841756 36919758 0 4 NaN NaN NaN 0.475975 0.492286 0.498968 +20 36932551 36937246 0 4 NaN NaN NaN 0.470434 0.493272 0.497778 +20 36946848 36959353 0 3 NaN NaN NaN 0.465418 0.487228 0.498530 +20 36965617 36965617 0 1 NaN NaN NaN 0.416402 0.488857 0.498547 +20 36989269 37279458 0 11 NaN NaN NaN 0.470659 0.487779 0.494168 +20 37377139 37396262 0 5 NaN NaN NaN 0.458424 0.487488 0.495674 +20 38354742 38354742 0 1 NaN NaN NaN 0.454108 0.483353 0.499402 +20 38898213 40076509 0 7 NaN NaN NaN 0.447008 0.483202 0.497320 +20 40179909 40626474 0 3 NaN NaN NaN 0.471387 0.487519 0.498714 +20 40714479 40743829 0 3 NaN NaN NaN 0.476941 0.494495 0.498685 +20 40981002 41076751 0 2 NaN NaN NaN 0.458540 0.487028 0.496517 +20 41962342 43944958 0 40 NaN NaN NaN 0.473302 0.491109 0.498286 +20 44144118 44638971 0 3 NaN NaN NaN 0.464721 0.487006 0.497128 +20 44639511 44645010 0 8 NaN NaN NaN 0.470040 0.488928 0.497723 +20 44650318 44650318 0 1 NaN NaN NaN 0.463754 0.489499 0.497115 +20 44806875 44806875 0 1 NaN NaN NaN 0.462006 0.486080 0.498316 +20 44983517 45092517 0 3 NaN NaN NaN 0.467053 0.491367 0.495998 +20 45092859 45092921 0 2 NaN NaN NaN 0.453263 0.479677 0.496586 +20 45093125 45629941 0 4 NaN NaN NaN 0.458446 0.485933 0.497562 +20 45789953 45789953 0 1 NaN NaN NaN 0.453517 0.487099 0.498494 +20 45797639 45797883 0 2 NaN NaN NaN 0.441544 0.487608 0.498836 +20 45797954 45808688 0 3 NaN NaN NaN 0.452646 0.486699 0.498181 +20 45809652 45816639 0 4 NaN NaN NaN 0.471200 0.492912 0.498757 +20 45816649 45891189 0 2 NaN NaN NaN 0.461405 0.488350 0.495849 +20 45923383 47253043 0 4 NaN NaN NaN 0.460551 0.489527 0.499063 +20 47256300 47258763 0 4 NaN NaN NaN 0.451655 0.481536 0.497646 +20 47261017 47361725 0 12 NaN NaN NaN 0.471686 0.488044 0.498559 +20 47569112 47615692 0 7 NaN NaN NaN 0.467308 0.487975 0.496869 +20 47621554 47713063 0 9 NaN NaN NaN 0.462921 0.487406 0.497686 +20 47739814 47850182 0 5 NaN NaN NaN 0.465915 0.486673 0.497344 +20 47852822 47859217 0 3 NaN NaN NaN 0.441528 0.485213 0.498505 +20 47865372 48131036 0 9 NaN NaN NaN 0.458035 0.488366 0.497891 +20 48257149 48259034 0 2 NaN NaN NaN 0.456168 0.482560 0.497847 +20 48300990 48300990 0 1 NaN NaN NaN 0.439052 0.487982 0.497607 +20 48301146 49191228 0 4 NaN NaN NaN 0.462891 0.486785 0.497767 +20 49195248 49195248 0 1 NaN NaN NaN 0.460212 0.486067 0.498486 +20 49196167 49236478 0 5 NaN NaN NaN 0.461609 0.488748 0.496163 +20 49237419 49575334 0 2 NaN NaN NaN 0.426356 0.479625 0.497564 +20 50287736 53691106 0 21 NaN NaN NaN 0.459925 0.487000 0.496720 +20 54935242 55108617 0 9 NaN NaN NaN 0.456686 0.486608 0.498358 +20 55111371 56886062 0 15 NaN NaN NaN 0.475776 0.493004 0.499227 +20 57009796 57024541 0 4 NaN NaN NaN 0.452654 0.482674 0.497665 +20 57024589 57266134 0 4 NaN NaN NaN 0.473275 0.488409 0.499132 +20 57266592 57470517 0 8 NaN NaN NaN 0.469937 0.489358 0.499090 +20 57478448 57569860 0 7 NaN NaN NaN 0.452146 0.488930 0.497382 +20 57570854 57572839 0 2 NaN NaN NaN 0.452491 0.483795 0.498573 +20 57599402 58571125 0 8 NaN NaN NaN 0.460808 0.480546 0.492648 +20 58581863 60582540 0 8 NaN NaN NaN 0.459929 0.487883 0.498276 +20 60712347 60740362 0 8 NaN NaN NaN 0.455112 0.484063 0.498388 +20 60740447 60886611 0 13 NaN NaN NaN 0.478498 0.492252 0.499334 +20 60897721 60992224 0 8 NaN NaN NaN 0.461806 0.488967 0.498954 +20 60992402 61039958 0 2 NaN NaN NaN 0.461005 0.488151 0.498545 +20 61041653 61273578 0 8 NaN NaN NaN 0.457569 0.482513 0.497947 +20 61289958 61441061 0 4 NaN NaN NaN 0.465706 0.485892 0.497771 +20 61444697 61444697 0 1 NaN NaN NaN 0.471853 0.492488 0.498701 +20 61444785 61453348 0 2 NaN NaN NaN 0.472790 0.490997 0.498827 +20 61453549 61834695 0 18 NaN NaN NaN 0.461142 0.494401 0.498638 +20 61869607 61869607 0 1 NaN NaN NaN 0.459515 0.483016 0.496899 +20 61870727 61873039 0 3 NaN NaN NaN 0.460018 0.487014 0.496166 +20 61875497 61881296 0 5 NaN NaN NaN 0.463407 0.489213 0.496283 +20 61987572 61987572 0 1 NaN NaN NaN 0.464694 0.490781 0.498078 +20 62191558 62193019 0 2 NaN NaN NaN 0.453222 0.486798 0.499500 +20 62193445 62229244 0 11 NaN NaN NaN 0.458416 0.489111 0.496635 +20 62245686 62303794 0 5 NaN NaN NaN 0.449289 0.484567 0.498853 +20 62305274 62698484 0 10 NaN NaN NaN 0.464029 0.491714 0.497155 +20 62701092 62737318 0 5 NaN NaN NaN 0.455620 0.489770 0.497906 +20 62836271 62836271 0 1 NaN NaN NaN 0.450621 0.481579 0.496660 +20 62836520 62854417 0 2 NaN NaN NaN 0.456501 0.488762 0.498790 +20 62868043 62871232 0 2 NaN NaN NaN 0.431664 0.490538 0.497807 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.af.param index d544966d3a0..ebe0465040e 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.114452 1.117621 1.129473 1.134714 1.140738 1.149446 1.152084 1.158532 1.179227 -BIAS_VARIANCE 0.459764 0.470122 0.476033 0.481435 0.487104 0.493330 0.495130 0.496575 0.498652 -OUTLIER_PROBABILITY 0.019421 0.025365 0.028088 0.033099 0.036928 0.042074 0.044188 0.046482 0.051940 +MEAN_BIAS 1.116663 1.123408 1.127238 1.130430 1.140573 1.156446 1.161426 1.170822 1.176871 +BIAS_VARIANCE 0.470922 0.474828 0.481765 0.486072 0.492303 0.493527 0.495814 0.497711 0.498807 +OUTLIER_PROBABILITY 0.014787 0.020051 0.024841 0.028065 0.029756 0.035209 0.036907 0.040733 0.046803 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.seg index 2a2e5c8cd01..6d3c1d452e0 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-ac-tumor-1.modelBegin.seg @@ -2,291 +2,291 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 138148 0 2 NaN NaN NaN 0.461495 0.486586 0.495971 -20 139409 139576 0 3 NaN NaN NaN 0.457106 0.490447 0.497756 -20 168466 259156 0 13 NaN NaN NaN 0.438194 0.487797 0.497137 -20 259818 259818 0 1 NaN NaN NaN 0.463151 0.485806 0.496516 -20 259969 278806 0 2 NaN NaN NaN 0.467323 0.486237 0.498999 -20 316911 316911 0 1 NaN NaN NaN 0.444589 0.487032 0.497350 -20 355319 360306 0 4 NaN NaN NaN 0.459787 0.488222 0.498614 -20 368905 377226 0 3 NaN NaN NaN 0.448203 0.484784 0.498867 -20 389456 402921 0 4 NaN NaN NaN 0.427039 0.472039 0.497827 -20 425606 425606 0 1 NaN NaN NaN 0.462482 0.487882 0.499682 -20 428767 744415 0 8 NaN NaN NaN 0.458817 0.485392 0.498526 -20 744570 744570 0 1 NaN NaN NaN 0.453362 0.491202 0.498361 -20 746098 1285933 0 6 NaN NaN NaN 0.443552 0.479144 0.497847 -20 1417397 1417397 0 1 NaN NaN NaN 0.465216 0.492858 0.497158 -20 1424303 1424303 0 1 NaN NaN NaN 0.451516 0.489583 0.498006 -20 1426393 1458504 0 3 NaN NaN NaN 0.444724 0.490110 0.498439 -20 1510769 1510769 0 1 NaN NaN NaN 0.448679 0.480813 0.497390 -20 1517979 1538249 0 4 NaN NaN NaN 0.441654 0.487064 0.494957 -20 1540032 1540032 0 1 NaN NaN NaN 0.466514 0.489499 0.499436 -20 1546911 1552430 0 3 NaN NaN NaN 0.472781 0.490907 0.499012 -20 1592265 1592284 0 2 NaN NaN NaN 0.411058 0.484047 0.497601 -20 1600524 1610894 0 4 NaN NaN NaN 0.440072 0.475314 0.497061 -20 1615883 1880912 0 6 NaN NaN NaN 0.458562 0.485821 0.498416 -20 1895630 1895658 0 2 NaN NaN NaN 0.465785 0.490763 0.497241 -20 1895889 1896244 0 2 NaN NaN NaN 0.458394 0.490895 0.497191 -20 2036954 2139080 0 4 NaN NaN NaN 0.471073 0.491601 0.499304 -20 2315929 2357863 0 3 NaN NaN NaN 0.437637 0.482853 0.498049 -20 2482325 2517825 0 3 NaN NaN NaN 0.460982 0.487372 0.497402 -20 2542747 2552805 0 2 NaN NaN NaN 0.478454 0.491667 0.498104 -20 2593006 2621998 0 10 NaN NaN NaN 0.454661 0.482552 0.497483 -20 2624956 2655019 0 3 NaN NaN NaN 0.463236 0.493277 0.499011 -20 2777828 2779257 0 2 NaN NaN NaN 0.458007 0.486852 0.496191 -20 2796471 2818801 0 2 NaN NaN NaN 0.463575 0.485742 0.497221 -20 2945759 3005413 0 7 NaN NaN NaN 0.459580 0.479914 0.498429 -20 3007228 3007492 0 2 NaN NaN NaN 0.457235 0.482270 0.498636 -20 3013228 3054033 0 2 NaN NaN NaN 0.450466 0.488737 0.499291 -20 3147024 3624830 0 5 NaN NaN NaN 0.463730 0.488657 0.498177 -20 3640823 3640823 0 1 NaN NaN NaN 0.445832 0.489942 0.497602 -20 3641881 3675333 0 11 NaN NaN NaN 0.460004 0.491351 0.499311 -20 3675498 3686436 0 8 NaN NaN NaN 0.444577 0.484619 0.496582 -20 3701867 3732633 0 4 NaN NaN NaN 0.439605 0.483720 0.497538 -20 3838441 3838441 0 1 NaN NaN NaN 0.445389 0.483743 0.495827 -20 3858985 4055656 0 3 NaN NaN NaN 0.460231 0.483993 0.498156 -20 4138585 4162411 0 4 NaN NaN NaN 0.456772 0.485809 0.496872 -20 4167234 4843609 0 9 NaN NaN NaN 0.463707 0.485354 0.498185 -20 4880308 5035125 0 2 NaN NaN NaN 0.450729 0.483379 0.495339 -20 5063643 5063643 0 1 NaN NaN NaN 0.449495 0.481651 0.498033 -20 5068730 5068730 0 1 NaN NaN NaN 0.460739 0.487729 0.497662 -20 5159344 5482307 0 16 NaN NaN NaN 0.446787 0.482013 0.497459 -20 5528518 5634575 0 5 NaN NaN NaN 0.445468 0.487589 0.498464 -20 5640886 5738376 0 4 NaN NaN NaN 0.472502 0.489930 0.496824 -20 5903517 6065731 0 6 NaN NaN NaN 0.451124 0.480429 0.497446 -20 6090623 6100391 0 6 NaN NaN NaN 0.440128 0.488071 0.498816 -20 6194421 6195664 0 2 NaN NaN NaN 0.442623 0.488158 0.498583 -20 6302114 6798939 0 3 NaN NaN NaN 0.460676 0.489967 0.498317 -20 7866261 8581713 0 5 NaN NaN NaN 0.452547 0.483234 0.496623 -20 8625108 8625108 0 1 NaN NaN NaN 0.452791 0.489254 0.496359 -20 8625250 8639443 0 4 NaN NaN NaN 0.455115 0.486786 0.498942 -20 8665751 8703145 0 5 NaN NaN NaN 0.457266 0.488231 0.498819 -20 8707900 8707927 0 2 NaN NaN NaN 0.438621 0.483079 0.497429 -20 8708166 8708166 0 1 NaN NaN NaN 0.463730 0.489468 0.498005 -20 8737734 8737734 0 1 NaN NaN NaN 0.448614 0.481475 0.496503 -20 8741188 8741188 0 1 NaN NaN NaN 0.440744 0.493251 0.498765 -20 8742326 8742326 0 1 NaN NaN NaN 0.455732 0.486215 0.497727 -20 8755243 8770932 0 4 NaN NaN NaN 0.464721 0.492985 0.498633 -20 8773096 8773155 0 2 NaN NaN NaN 0.458675 0.487494 0.499268 -20 9108585 9376019 0 4 NaN NaN NaN 0.450741 0.484600 0.496658 -20 9417870 9510263 0 4 NaN NaN NaN 0.422167 0.489492 0.498541 -20 9624587 10004147 0 3 NaN NaN NaN 0.473963 0.495402 0.499337 -20 10012714 10012751 0 2 NaN NaN NaN 0.464607 0.485268 0.498826 -20 10024951 10024951 0 1 NaN NaN NaN 0.442116 0.485541 0.496405 -20 10026357 10032413 0 4 NaN NaN NaN 0.442301 0.486008 0.498128 -20 10329888 10393145 0 4 NaN NaN NaN 0.466342 0.485582 0.498147 -20 10426975 10439002 0 3 NaN NaN NaN 0.465790 0.489121 0.498439 -20 10629129 10629525 0 2 NaN NaN NaN 0.450508 0.484274 0.496989 -20 11224228 12113410 0 5 NaN NaN NaN 0.448545 0.487756 0.498697 -20 13054307 13060331 0 5 NaN NaN NaN 0.471982 0.493321 0.498821 -20 13071871 13074243 0 3 NaN NaN NaN 0.460286 0.489120 0.496994 -20 13090745 13227837 0 3 NaN NaN NaN 0.458387 0.490954 0.499151 -20 13239860 13260252 0 2 NaN NaN NaN 0.441327 0.486123 0.498177 -20 13709407 13709407 0 1 NaN NaN NaN 0.453267 0.485396 0.498634 -20 13769127 13769127 0 1 NaN NaN NaN 0.457894 0.486339 0.494944 -20 13798676 13830137 0 4 NaN NaN NaN 0.454999 0.487237 0.497362 -20 13845726 13845726 0 1 NaN NaN NaN 0.442650 0.476418 0.497272 -20 13872093 13885105 0 2 NaN NaN NaN 0.464260 0.489631 0.498332 -20 13921411 13992299 0 2 NaN NaN NaN 0.469876 0.487975 0.498977 -20 14273462 14273462 0 1 NaN NaN NaN 0.454916 0.482945 0.497211 -20 14306896 14306896 0 1 NaN NaN NaN 0.468405 0.484200 0.498064 -20 14306953 14306953 0 1 NaN NaN NaN 0.451838 0.487037 0.496673 -20 14319063 14319063 0 1 NaN NaN NaN 0.468196 0.489307 0.498561 -20 14910634 14910665 0 2 NaN NaN NaN 0.455713 0.489899 0.498300 -20 15131723 15411848 0 2 NaN NaN NaN 0.471409 0.492049 0.499465 -20 15874325 15967327 0 2 NaN NaN NaN 0.456657 0.488739 0.498887 -20 16729262 16730522 0 3 NaN NaN NaN 0.419879 0.486833 0.498166 -20 17028059 17460132 0 5 NaN NaN NaN 0.426074 0.476069 0.496986 -20 17474690 17594729 0 9 NaN NaN NaN 0.432543 0.487223 0.497847 -20 17595329 17595329 0 1 NaN NaN NaN 0.459883 0.483145 0.497857 -20 17596155 17596155 0 1 NaN NaN NaN 0.454981 0.485687 0.498049 -20 17596731 17597331 0 2 NaN NaN NaN 0.439089 0.478715 0.496620 -20 17597531 17597531 0 1 NaN NaN NaN 0.442801 0.482092 0.496995 -20 17600357 17990713 0 2 NaN NaN NaN 0.433438 0.489705 0.498414 -20 17992979 18022171 0 5 NaN NaN NaN 0.424613 0.485183 0.498021 -20 18142924 18175556 0 3 NaN NaN NaN 0.471841 0.486996 0.496445 -20 18192433 18241880 0 2 NaN NaN NaN 0.445918 0.484416 0.495957 -20 18286888 18286888 0 1 NaN NaN NaN 0.442022 0.487689 0.497337 -20 18287104 18327570 0 3 NaN NaN NaN 0.461973 0.487462 0.499440 -20 18429497 18429509 0 2 NaN NaN NaN 0.462733 0.487091 0.498128 -20 18432690 18446024 0 4 NaN NaN NaN 0.463701 0.487131 0.497696 -20 18806046 18806046 0 1 NaN NaN NaN 0.470064 0.488650 0.496929 -20 18810705 19261623 0 2 NaN NaN NaN 0.446201 0.482335 0.496780 -20 19345285 19345285 0 1 NaN NaN NaN 0.461914 0.486002 0.496913 -20 19560664 19914520 0 4 NaN NaN NaN 0.423834 0.480872 0.497875 -20 19941538 19951660 0 3 NaN NaN NaN 0.409420 0.475386 0.495371 -20 19970705 19970705 0 1 NaN NaN NaN 0.465563 0.489973 0.498771 -20 19987674 19987674 0 1 NaN NaN NaN 0.467961 0.486354 0.498565 -20 20007325 20033137 0 3 NaN NaN NaN 0.455258 0.483639 0.497586 -20 20033242 20033423 0 5 NaN NaN NaN 0.456157 0.490079 0.497267 -20 20037222 20152462 0 8 NaN NaN NaN 0.399155 0.464774 0.497539 -20 20168497 20265171 0 4 NaN NaN NaN 0.443963 0.490900 0.498392 -20 20269631 21147009 0 9 NaN NaN NaN 0.390829 0.480957 0.498572 -20 21147407 21868713 0 6 NaN NaN NaN 0.435233 0.471410 0.495991 -20 21897170 22714612 0 6 NaN NaN NaN 0.458054 0.476678 0.495549 -20 23345844 23425812 0 8 NaN NaN NaN 0.441810 0.484328 0.498765 -20 23426972 23426972 0 1 NaN NaN NaN 0.474889 0.489325 0.497504 -20 23528536 23529388 0 2 NaN NaN NaN 0.449147 0.485496 0.498120 -20 23529418 23731560 0 10 NaN NaN NaN 0.433579 0.479738 0.493930 -20 23756529 23756529 0 1 NaN NaN NaN 0.428622 0.478433 0.497523 -20 23756613 23756613 0 1 NaN NaN NaN 0.448964 0.488363 0.498243 -20 23761395 23761395 0 1 NaN NaN NaN 0.449295 0.484874 0.496965 -20 23805832 23807028 0 2 NaN NaN NaN 0.462527 0.488073 0.495620 -20 23842032 23842078 0 2 NaN NaN NaN 0.458261 0.486393 0.499212 -20 23860178 24200699 0 4 NaN NaN NaN 0.458117 0.481519 0.496914 -20 24201344 24201393 0 2 NaN NaN NaN 0.470051 0.485255 0.498310 -20 24790712 24790712 0 1 NaN NaN NaN 0.465488 0.486772 0.498106 -20 24911562 24938195 0 3 NaN NaN NaN 0.451128 0.484099 0.498091 -20 24939590 24959386 0 2 NaN NaN NaN 0.459693 0.487544 0.496006 -20 24993414 25011423 0 4 NaN NaN NaN 0.455045 0.485156 0.497168 -20 25038484 25059442 0 2 NaN NaN NaN 0.448530 0.482632 0.496936 -20 25190598 25196520 0 2 NaN NaN NaN 0.441364 0.488867 0.498955 -20 25252161 25255338 0 2 NaN NaN NaN 0.465126 0.487505 0.497912 -20 25257260 25261784 0 6 NaN NaN NaN 0.453951 0.484679 0.496946 -20 25262769 25262789 0 2 NaN NaN NaN 0.452966 0.489449 0.498299 -20 25263756 25263756 0 1 NaN NaN NaN 0.434767 0.478663 0.496270 -20 25264664 25282944 0 13 NaN NaN NaN 0.388087 0.473774 0.496993 -20 25286059 25286059 0 1 NaN NaN NaN 0.458137 0.489603 0.499117 -20 25288505 25324410 0 5 NaN NaN NaN 0.461822 0.491138 0.499235 -20 25336445 25398876 0 5 NaN NaN NaN 0.406955 0.472452 0.498211 -20 25424713 25424713 0 1 NaN NaN NaN 0.468250 0.490894 0.498720 -20 25434351 25470056 0 11 NaN NaN NaN 0.427766 0.483422 0.498475 -20 25597236 25604655 0 2 NaN NaN NaN 0.463410 0.489653 0.495903 -20 25622858 25622858 0 1 NaN NaN NaN 0.454156 0.488898 0.498166 -20 25629114 25666807 0 3 NaN NaN NaN 0.441505 0.476521 0.492230 -20 25699941 25700293 0 4 NaN NaN NaN 0.449375 0.484819 0.496340 -20 25754173 25755672 0 2 NaN NaN NaN 0.428449 0.478110 0.496348 -20 25756059 25837915 0 2 NaN NaN NaN 0.472357 0.489183 0.497799 -20 25838130 25838130 0 1 NaN NaN NaN 0.478539 0.490490 0.498095 -20 25838802 25841650 0 4 NaN NaN NaN 0.463860 0.485930 0.498646 -20 25846283 25900162 0 3 NaN NaN NaN 0.383021 0.461568 0.483214 -20 25900379 26134237 0 4 NaN NaN NaN 0.473814 0.490025 0.498743 -20 26138206 29449417 0 2 NaN NaN NaN 0.468111 0.491429 0.498098 -20 29449678 29449678 0 1 NaN NaN NaN 0.451866 0.488259 0.496688 -20 29516670 29516670 0 1 NaN NaN NaN 0.457096 0.485447 0.494573 -20 29517417 29520510 0 3 NaN NaN NaN 0.451934 0.486084 0.498433 -20 29521061 29632564 0 4 NaN NaN NaN 0.445392 0.480222 0.498108 -20 29633929 29648701 0 3 NaN NaN NaN 0.465282 0.484919 0.497970 -20 29847211 29847211 0 1 NaN NaN NaN 0.457433 0.488237 0.498853 -20 29847618 29872796 0 2 NaN NaN NaN 0.471115 0.487864 0.499027 -20 29873577 29873577 0 1 NaN NaN NaN 0.444686 0.484249 0.496769 -20 29899208 29899208 0 1 NaN NaN NaN 0.454852 0.487017 0.498025 -20 29977156 29977156 0 1 NaN NaN NaN 0.446794 0.487598 0.497218 -20 29986332 30035869 0 2 NaN NaN NaN 0.470789 0.490070 0.498263 -20 30037783 30037783 0 1 NaN NaN NaN 0.434266 0.486019 0.498150 -20 30053255 31025163 0 2 NaN NaN NaN 0.465697 0.485741 0.496971 -20 31647126 31676804 0 8 NaN NaN NaN 0.444530 0.479199 0.496528 -20 31811551 31826027 0 4 NaN NaN NaN 0.394819 0.469950 0.491270 -20 31828265 31897554 0 2 NaN NaN NaN 0.427049 0.483290 0.498352 -20 31956468 32289763 0 2 NaN NaN NaN 0.463618 0.486060 0.497876 -20 32325329 32330930 0 2 NaN NaN NaN 0.452085 0.491094 0.498530 -20 32340077 32710710 0 8 NaN NaN NaN 0.403502 0.469435 0.493744 -20 32935192 33006597 0 6 NaN NaN NaN 0.455757 0.491221 0.498616 -20 33030405 33031276 0 2 NaN NaN NaN 0.453932 0.480978 0.497020 -20 33037336 33150503 0 7 NaN NaN NaN 0.410605 0.475371 0.498178 -20 33178782 33279604 0 5 NaN NaN NaN 0.451747 0.485581 0.497574 -20 33283649 33879478 0 2 NaN NaN NaN 0.445047 0.477625 0.495349 -20 33882720 33882791 0 2 NaN NaN NaN 0.464764 0.489134 0.497856 -20 34218673 34243017 0 4 NaN NaN NaN 0.464521 0.484707 0.496388 -20 34269577 34269577 0 1 NaN NaN NaN 0.463661 0.487835 0.497770 -20 34271574 34271574 0 1 NaN NaN NaN 0.461294 0.486101 0.495383 -20 34289005 34289005 0 1 NaN NaN NaN 0.465362 0.491553 0.498976 -20 34304783 34312834 0 6 NaN NaN NaN 0.455327 0.484563 0.499003 -20 34314114 34314114 0 1 NaN NaN NaN 0.454291 0.490179 0.498600 -20 34314140 34324484 0 9 NaN NaN NaN 0.450332 0.485946 0.497477 -20 34324648 34335861 0 3 NaN NaN NaN 0.435694 0.489045 0.498116 -20 34339854 34431377 0 4 NaN NaN NaN 0.452092 0.490279 0.498339 -20 34443173 34446395 0 2 NaN NaN NaN 0.452656 0.491916 0.498965 -20 34457513 34457513 0 1 NaN NaN NaN 0.459512 0.484271 0.495413 -20 34492974 34492974 0 1 NaN NaN NaN 0.445650 0.488525 0.498350 -20 34499996 34505054 0 3 NaN NaN NaN 0.460593 0.482712 0.495322 -20 34525807 34525807 0 1 NaN NaN NaN 0.461335 0.487325 0.498689 -20 34535373 34581979 0 5 NaN NaN NaN 0.465054 0.491238 0.498646 -20 34589995 34766745 0 8 NaN NaN NaN 0.446354 0.484902 0.497389 -20 34775551 34782171 0 2 NaN NaN NaN 0.452909 0.484514 0.497843 -20 34974252 34974252 0 1 NaN NaN NaN 0.458514 0.483049 0.495218 -20 35068018 35740794 0 10 NaN NaN NaN 0.464611 0.484844 0.497905 -20 35748894 35869619 0 21 NaN NaN NaN 0.355384 0.429946 0.495302 -20 36022539 36288284 0 3 NaN NaN NaN 0.450517 0.475972 0.498783 -20 36337303 36607077 0 3 NaN NaN NaN 0.450674 0.485199 0.498106 -20 36615416 36793501 0 8 NaN NaN NaN 0.460372 0.485668 0.499477 -20 36793529 36793529 0 1 NaN NaN NaN 0.466968 0.488682 0.496430 -20 36841756 36919758 0 4 NaN NaN NaN 0.461619 0.488032 0.497374 -20 36932551 36944379 0 5 NaN NaN NaN 0.469842 0.489702 0.499035 -20 36946848 36953097 0 3 NaN NaN NaN 0.461027 0.488350 0.498938 -20 36958262 36958262 0 1 NaN NaN NaN 0.468382 0.486931 0.496832 -20 36959318 36965617 0 4 NaN NaN NaN 0.464622 0.490855 0.497594 -20 36989269 37291486 0 19 NaN NaN NaN 0.441101 0.476280 0.494393 -20 37366218 37396262 0 9 NaN NaN NaN 0.448302 0.485851 0.495925 -20 37404951 38354742 0 4 NaN NaN NaN 0.439011 0.480113 0.498857 -20 38483658 39501689 0 3 NaN NaN NaN 0.459348 0.485904 0.499248 -20 39501744 40126679 0 12 NaN NaN NaN 0.446913 0.478544 0.497996 -20 40179909 40179920 0 2 NaN NaN NaN 0.464615 0.489131 0.498518 -20 40234917 43803708 0 48 NaN NaN NaN 0.472699 0.490850 0.496812 -20 43803725 43881630 0 10 NaN NaN NaN 0.465858 0.490590 0.497707 -20 43920730 44645010 0 19 NaN NaN NaN 0.474869 0.488565 0.496091 -20 44650318 44650318 0 1 NaN NaN NaN 0.468292 0.490065 0.496810 -20 44806875 44806875 0 1 NaN NaN NaN 0.437187 0.488111 0.497875 -20 44812893 44983517 0 2 NaN NaN NaN 0.462277 0.486693 0.498852 -20 44987318 45023247 0 2 NaN NaN NaN 0.457689 0.488415 0.497906 -20 45092517 45092921 0 3 NaN NaN NaN 0.444307 0.481060 0.496729 -20 45093125 45789953 0 5 NaN NaN NaN 0.464691 0.487053 0.497813 -20 45797639 45816649 0 12 NaN NaN NaN 0.461226 0.483966 0.496963 -20 45891189 45891189 0 1 NaN NaN NaN 0.466247 0.490875 0.497410 -20 45923383 47253043 0 12 NaN NaN NaN 0.448801 0.482245 0.496619 -20 47256300 47258763 0 4 NaN NaN NaN 0.448856 0.485901 0.498971 -20 47261017 47361725 0 14 NaN NaN NaN 0.454719 0.486133 0.497414 -20 47569112 47589122 0 6 NaN NaN NaN 0.462051 0.487741 0.497936 -20 47591082 47639464 0 12 NaN NaN NaN 0.456223 0.486110 0.497065 -20 47648353 47850182 0 12 NaN NaN NaN 0.466968 0.489930 0.498332 -20 47852822 47859217 0 2 NaN NaN NaN 0.442895 0.480146 0.495860 -20 47865372 48129706 0 10 NaN NaN NaN 0.462516 0.491146 0.499206 -20 48129987 48129987 0 1 NaN NaN NaN 0.458388 0.488777 0.498550 -20 48130628 48259034 0 5 NaN NaN NaN 0.459605 0.486460 0.498175 -20 48300990 48300990 0 1 NaN NaN NaN 0.421951 0.476334 0.496456 -20 48301146 48701527 0 4 NaN NaN NaN 0.465790 0.486542 0.497922 -20 48720687 49225953 0 9 NaN NaN NaN 0.455809 0.485532 0.497780 -20 49227294 49575334 0 5 NaN NaN NaN 0.463268 0.486052 0.495299 -20 50078910 54464410 0 39 NaN NaN NaN 0.473551 0.488399 0.498098 -20 54935242 54941140 0 5 NaN NaN NaN 0.471659 0.488217 0.498127 -20 54945783 55803149 0 13 NaN NaN NaN 0.471819 0.486891 0.497614 -20 56064267 56064267 0 1 NaN NaN NaN 0.460881 0.490538 0.497503 -20 56071296 56136536 0 4 NaN NaN NaN 0.463449 0.488820 0.498069 -20 56137184 57024589 0 17 NaN NaN NaN 0.478774 0.493065 0.497898 -20 57045667 57045765 0 2 NaN NaN NaN 0.455902 0.482100 0.495597 -20 57266134 57470517 0 9 NaN NaN NaN 0.463290 0.484055 0.498070 -20 57478448 57569860 0 7 NaN NaN NaN 0.442290 0.484602 0.496214 -20 57570854 57768399 0 7 NaN NaN NaN 0.456789 0.482995 0.495408 -20 57768743 58578068 0 8 NaN NaN NaN 0.458088 0.485747 0.497221 -20 58581863 60582540 0 10 NaN NaN NaN 0.469340 0.492176 0.499473 -20 60584328 60584328 0 1 NaN NaN NaN 0.469606 0.486805 0.498725 -20 60712284 60712284 0 1 NaN NaN NaN 0.446165 0.486713 0.498804 -20 60712347 60735098 0 9 NaN NaN NaN 0.443020 0.485701 0.497612 -20 60739079 60739079 0 1 NaN NaN NaN 0.450782 0.488893 0.499415 -20 60740362 60740362 0 1 NaN NaN NaN 0.461641 0.482177 0.496910 -20 60740447 60886611 0 16 NaN NaN NaN 0.467222 0.488749 0.498571 -20 60897721 60992224 0 10 NaN NaN NaN 0.464816 0.490179 0.497396 -20 60992402 61039958 0 2 NaN NaN NaN 0.456024 0.484596 0.496870 -20 61040125 61040125 0 1 NaN NaN NaN 0.439679 0.485863 0.498157 -20 61040313 61040313 0 1 NaN NaN NaN 0.470694 0.487907 0.498310 -20 61041653 61150928 0 3 NaN NaN NaN 0.450856 0.475944 0.493915 -20 61150959 61162037 0 2 NaN NaN NaN 0.452293 0.488516 0.498202 -20 61162100 61162100 0 1 NaN NaN NaN 0.453462 0.486560 0.498397 -20 61167883 61443547 0 8 NaN NaN NaN 0.463078 0.488833 0.498867 -20 61444697 61444697 0 1 NaN NaN NaN 0.453540 0.490078 0.499349 -20 61444785 61453348 0 2 NaN NaN NaN 0.460340 0.492539 0.499071 -20 61453549 61527563 0 14 NaN NaN NaN 0.468970 0.489146 0.498941 -20 61528074 61528074 0 1 NaN NaN NaN 0.460803 0.486210 0.498698 -20 61528271 61528306 0 2 NaN NaN NaN 0.464593 0.488835 0.498574 -20 61541028 61542001 0 2 NaN NaN NaN 0.462040 0.486408 0.498898 -20 61588159 61834695 0 4 NaN NaN NaN 0.464531 0.485480 0.495528 -20 61869607 61869607 0 1 NaN NaN NaN 0.448257 0.482176 0.498549 -20 61870727 61875909 0 5 NaN NaN NaN 0.447468 0.481850 0.496815 -20 61879009 61879009 0 1 NaN NaN NaN 0.439564 0.483909 0.498593 -20 61880274 62234240 0 21 NaN NaN NaN 0.461432 0.482246 0.496660 -20 62245686 62305274 0 5 NaN NaN NaN 0.464720 0.490891 0.498386 -20 62324289 62698484 0 10 NaN NaN NaN 0.464121 0.486941 0.497742 -20 62701092 62720193 0 5 NaN NaN NaN 0.471197 0.491010 0.498038 -20 62729431 62836271 0 3 NaN NaN NaN 0.456016 0.488800 0.497346 -20 62836520 62854417 0 2 NaN NaN NaN 0.469090 0.489481 0.497984 -20 62868043 62904542 0 3 NaN NaN NaN 0.453158 0.481396 0.497848 +20 138125 138148 0 2 NaN NaN NaN 0.460434 0.490184 0.499296 +20 139409 139576 0 3 NaN NaN NaN 0.453976 0.486981 0.498205 +20 168466 259156 0 13 NaN NaN NaN 0.454587 0.492084 0.499293 +20 259818 259818 0 1 NaN NaN NaN 0.447380 0.482895 0.498186 +20 259969 278806 0 2 NaN NaN NaN 0.448854 0.483264 0.495394 +20 316911 316911 0 1 NaN NaN NaN 0.472993 0.494986 0.498601 +20 355319 360306 0 4 NaN NaN NaN 0.463678 0.486573 0.497766 +20 368905 377226 0 3 NaN NaN NaN 0.447725 0.479829 0.497487 +20 389456 402921 0 4 NaN NaN NaN 0.457089 0.485645 0.497324 +20 425606 425606 0 1 NaN NaN NaN 0.448019 0.482467 0.498973 +20 428767 744415 0 8 NaN NaN NaN 0.465704 0.488948 0.497850 +20 744570 744570 0 1 NaN NaN NaN 0.462078 0.487091 0.498351 +20 746098 1285933 0 6 NaN NaN NaN 0.464773 0.485290 0.496726 +20 1417397 1417397 0 1 NaN NaN NaN 0.451706 0.484873 0.498250 +20 1424303 1424303 0 1 NaN NaN NaN 0.460276 0.489536 0.499400 +20 1426393 1458504 0 3 NaN NaN NaN 0.467522 0.485276 0.498588 +20 1510769 1510769 0 1 NaN NaN NaN 0.448234 0.477227 0.494773 +20 1517979 1538249 0 4 NaN NaN NaN 0.444083 0.473807 0.496519 +20 1540032 1540032 0 1 NaN NaN NaN 0.469498 0.488371 0.499077 +20 1546911 1552430 0 3 NaN NaN NaN 0.465833 0.482744 0.495503 +20 1592265 1592284 0 2 NaN NaN NaN 0.388623 0.471636 0.498685 +20 1600524 1610894 0 4 NaN NaN NaN 0.470144 0.488336 0.497910 +20 1615883 1880912 0 6 NaN NaN NaN 0.455607 0.486071 0.497994 +20 1895630 1895658 0 2 NaN NaN NaN 0.463521 0.485156 0.497243 +20 1895889 1896244 0 2 NaN NaN NaN 0.430605 0.483477 0.497440 +20 2036954 2139080 0 4 NaN NaN NaN 0.459054 0.491162 0.498942 +20 2315929 2357863 0 3 NaN NaN NaN 0.445993 0.480480 0.497003 +20 2482325 2517825 0 3 NaN NaN NaN 0.458293 0.486506 0.497311 +20 2542747 2552805 0 2 NaN NaN NaN 0.454241 0.483899 0.498694 +20 2593006 2621998 0 10 NaN NaN NaN 0.449364 0.482314 0.495168 +20 2624956 2655019 0 3 NaN NaN NaN 0.450557 0.489741 0.499140 +20 2777828 2779257 0 2 NaN NaN NaN 0.459450 0.487771 0.498640 +20 2796471 2818801 0 2 NaN NaN NaN 0.468498 0.483997 0.497081 +20 2945759 3005413 0 7 NaN NaN NaN 0.463499 0.487026 0.498142 +20 3007228 3007492 0 2 NaN NaN NaN 0.387339 0.477685 0.498292 +20 3013228 3054033 0 2 NaN NaN NaN 0.453197 0.482918 0.497871 +20 3147024 3624830 0 5 NaN NaN NaN 0.445961 0.486933 0.497118 +20 3640823 3640823 0 1 NaN NaN NaN 0.462666 0.490137 0.499568 +20 3641881 3675333 0 11 NaN NaN NaN 0.447027 0.488941 0.498221 +20 3675498 3686436 0 8 NaN NaN NaN 0.451301 0.481394 0.493853 +20 3701867 3732633 0 4 NaN NaN NaN 0.436802 0.478649 0.499094 +20 3838441 3838441 0 1 NaN NaN NaN 0.439626 0.482882 0.498844 +20 3858985 4055656 0 3 NaN NaN NaN 0.452064 0.483880 0.495925 +20 4138585 4162411 0 4 NaN NaN NaN 0.426056 0.478765 0.497846 +20 4167234 4843609 0 9 NaN NaN NaN 0.464091 0.488069 0.498543 +20 4880308 5035125 0 2 NaN NaN NaN 0.464237 0.487172 0.498629 +20 5063643 5063643 0 1 NaN NaN NaN 0.446118 0.483328 0.499048 +20 5068730 5068730 0 1 NaN NaN NaN 0.454063 0.479350 0.498764 +20 5159344 5482307 0 16 NaN NaN NaN 0.447803 0.478233 0.498210 +20 5528518 5634575 0 5 NaN NaN NaN 0.445101 0.483955 0.496934 +20 5640886 5738376 0 4 NaN NaN NaN 0.457593 0.487804 0.498419 +20 5903517 6065731 0 6 NaN NaN NaN 0.456486 0.479566 0.497433 +20 6090623 6100391 0 6 NaN NaN NaN 0.464884 0.488306 0.498172 +20 6194421 6195664 0 2 NaN NaN NaN 0.466463 0.489674 0.499360 +20 6302114 6798939 0 3 NaN NaN NaN 0.474227 0.491760 0.498414 +20 7866261 8581713 0 5 NaN NaN NaN 0.452260 0.482317 0.496949 +20 8625108 8625108 0 1 NaN NaN NaN 0.437420 0.481791 0.497503 +20 8625250 8639443 0 4 NaN NaN NaN 0.455576 0.485347 0.494478 +20 8665751 8703145 0 5 NaN NaN NaN 0.452752 0.474301 0.495632 +20 8707900 8707927 0 2 NaN NaN NaN 0.458551 0.490155 0.498624 +20 8708166 8708166 0 1 NaN NaN NaN 0.474001 0.490070 0.498034 +20 8737734 8737734 0 1 NaN NaN NaN 0.450880 0.478930 0.496333 +20 8741188 8741188 0 1 NaN NaN NaN 0.444763 0.482739 0.497864 +20 8742326 8742326 0 1 NaN NaN NaN 0.455033 0.489396 0.498763 +20 8755243 8770932 0 4 NaN NaN NaN 0.443649 0.482461 0.497819 +20 8773096 8773155 0 2 NaN NaN NaN 0.464203 0.492723 0.498360 +20 9108585 9376019 0 4 NaN NaN NaN 0.431972 0.484491 0.497038 +20 9417870 9510263 0 4 NaN NaN NaN 0.457622 0.480088 0.497002 +20 9624587 10004147 0 3 NaN NaN NaN 0.444964 0.477956 0.498422 +20 10012714 10012751 0 2 NaN NaN NaN 0.446668 0.483037 0.498349 +20 10024951 10024951 0 1 NaN NaN NaN 0.449815 0.484226 0.496840 +20 10026357 10032413 0 4 NaN NaN NaN 0.445564 0.482176 0.497082 +20 10329888 10393145 0 4 NaN NaN NaN 0.453621 0.482595 0.495123 +20 10426975 10439002 0 3 NaN NaN NaN 0.466376 0.492280 0.498704 +20 10629129 10629525 0 2 NaN NaN NaN 0.452277 0.482736 0.497512 +20 11224228 12113410 0 5 NaN NaN NaN 0.474877 0.493979 0.498719 +20 13054307 13060331 0 5 NaN NaN NaN 0.447051 0.490676 0.498846 +20 13071871 13074243 0 3 NaN NaN NaN 0.458712 0.488512 0.498533 +20 13090745 13227837 0 3 NaN NaN NaN 0.461960 0.485010 0.497171 +20 13239860 13260252 0 2 NaN NaN NaN 0.470416 0.491244 0.497974 +20 13709407 13709407 0 1 NaN NaN NaN 0.467603 0.487859 0.496119 +20 13769127 13769127 0 1 NaN NaN NaN 0.443801 0.482756 0.499202 +20 13798676 13830137 0 4 NaN NaN NaN 0.430177 0.482163 0.497342 +20 13845726 13845726 0 1 NaN NaN NaN 0.457690 0.486277 0.498221 +20 13872093 13885105 0 2 NaN NaN NaN 0.446412 0.480469 0.498772 +20 13921411 13992299 0 2 NaN NaN NaN 0.463438 0.486779 0.498300 +20 14273462 14273462 0 1 NaN NaN NaN 0.453439 0.486598 0.498438 +20 14306896 14306896 0 1 NaN NaN NaN 0.445844 0.489930 0.499003 +20 14306953 14306953 0 1 NaN NaN NaN 0.428035 0.480821 0.498546 +20 14319063 14319063 0 1 NaN NaN NaN 0.458149 0.485913 0.497507 +20 14910634 14910665 0 2 NaN NaN NaN 0.462191 0.486162 0.498319 +20 15131723 15411848 0 2 NaN NaN NaN 0.466228 0.491627 0.498656 +20 15874325 15967327 0 2 NaN NaN NaN 0.414514 0.483757 0.498364 +20 16729262 16730522 0 3 NaN NaN NaN 0.457663 0.488414 0.498545 +20 17028059 17460132 0 5 NaN NaN NaN 0.448718 0.490855 0.497000 +20 17474690 17594729 0 9 NaN NaN NaN 0.461752 0.492474 0.499182 +20 17595329 17595329 0 1 NaN NaN NaN 0.461384 0.490787 0.499284 +20 17596155 17596155 0 1 NaN NaN NaN 0.442160 0.473962 0.496629 +20 17596731 17597331 0 2 NaN NaN NaN 0.448900 0.479448 0.496122 +20 17597531 17597531 0 1 NaN NaN NaN 0.467745 0.489836 0.499099 +20 17600357 17990713 0 2 NaN NaN NaN 0.468554 0.490784 0.499002 +20 17992979 18022171 0 5 NaN NaN NaN 0.447403 0.482054 0.492927 +20 18142924 18175556 0 3 NaN NaN NaN 0.463277 0.480896 0.496716 +20 18192433 18241880 0 2 NaN NaN NaN 0.471613 0.485885 0.498777 +20 18286888 18286888 0 1 NaN NaN NaN 0.473563 0.490120 0.498881 +20 18287104 18327570 0 3 NaN NaN NaN 0.461803 0.483616 0.496188 +20 18429497 18429509 0 2 NaN NaN NaN 0.471049 0.490184 0.497396 +20 18432690 18446024 0 4 NaN NaN NaN 0.469614 0.488824 0.499135 +20 18806046 18806046 0 1 NaN NaN NaN 0.446312 0.488777 0.498021 +20 18810705 19261623 0 2 NaN NaN NaN 0.429752 0.469653 0.493572 +20 19345285 19345285 0 1 NaN NaN NaN 0.445614 0.487575 0.499035 +20 19560664 19914520 0 4 NaN NaN NaN 0.470360 0.485394 0.498109 +20 19941538 19951660 0 3 NaN NaN NaN 0.458458 0.484192 0.496369 +20 19970705 19970705 0 1 NaN NaN NaN 0.444941 0.488480 0.498224 +20 19987674 19987674 0 1 NaN NaN NaN 0.473440 0.491694 0.499193 +20 20007325 20033137 0 3 NaN NaN NaN 0.458911 0.490568 0.497655 +20 20033242 20033423 0 5 NaN NaN NaN 0.442468 0.485616 0.497530 +20 20037222 20152462 0 8 NaN NaN NaN 0.383598 0.461904 0.491987 +20 20168497 20265171 0 4 NaN NaN NaN 0.428327 0.479169 0.495846 +20 20269631 21147009 0 9 NaN NaN NaN 0.388698 0.485046 0.499103 +20 21147407 21868713 0 6 NaN NaN NaN 0.457290 0.484072 0.498454 +20 21897170 22714612 0 6 NaN NaN NaN 0.428639 0.473095 0.496358 +20 23345844 23425812 0 8 NaN NaN NaN 0.440309 0.479568 0.495233 +20 23426972 23426972 0 1 NaN NaN NaN 0.467893 0.492212 0.498504 +20 23528536 23529388 0 2 NaN NaN NaN 0.453514 0.485877 0.499502 +20 23529418 23731560 0 10 NaN NaN NaN 0.449138 0.480797 0.493702 +20 23756529 23756529 0 1 NaN NaN NaN 0.440413 0.482807 0.495772 +20 23756613 23756613 0 1 NaN NaN NaN 0.459569 0.482890 0.497768 +20 23761395 23761395 0 1 NaN NaN NaN 0.452716 0.480842 0.498523 +20 23805832 23807028 0 2 NaN NaN NaN 0.456561 0.482990 0.499324 +20 23842032 23842078 0 2 NaN NaN NaN 0.424279 0.478273 0.498161 +20 23860178 24200699 0 4 NaN NaN NaN 0.464521 0.484810 0.498636 +20 24201344 24201393 0 2 NaN NaN NaN 0.454831 0.487916 0.498275 +20 24790712 24790712 0 1 NaN NaN NaN 0.437908 0.492416 0.499044 +20 24911562 24938195 0 3 NaN NaN NaN 0.436223 0.485302 0.497863 +20 24939590 24959386 0 2 NaN NaN NaN 0.439154 0.482131 0.497391 +20 24993414 25011423 0 4 NaN NaN NaN 0.452759 0.485907 0.499301 +20 25038484 25059442 0 2 NaN NaN NaN 0.421380 0.473399 0.497600 +20 25190598 25196520 0 2 NaN NaN NaN 0.464501 0.491177 0.498881 +20 25252161 25255338 0 2 NaN NaN NaN 0.470785 0.489356 0.497686 +20 25257260 25261784 0 6 NaN NaN NaN 0.389955 0.476901 0.496871 +20 25262769 25262789 0 2 NaN NaN NaN 0.467130 0.492101 0.498184 +20 25263756 25263756 0 1 NaN NaN NaN 0.458307 0.479487 0.498208 +20 25264664 25282944 0 13 NaN NaN NaN 0.458384 0.489131 0.498005 +20 25286059 25286059 0 1 NaN NaN NaN 0.464842 0.487563 0.498688 +20 25288505 25324410 0 5 NaN NaN NaN 0.441620 0.479227 0.497516 +20 25336445 25398876 0 5 NaN NaN NaN 0.447225 0.484852 0.498139 +20 25424713 25424713 0 1 NaN NaN NaN 0.464878 0.489213 0.497500 +20 25434351 25470056 0 11 NaN NaN NaN 0.465879 0.485623 0.498066 +20 25597236 25604655 0 2 NaN NaN NaN 0.446418 0.487250 0.497854 +20 25622858 25622858 0 1 NaN NaN NaN 0.468142 0.488721 0.497516 +20 25629114 25666807 0 3 NaN NaN NaN 0.407661 0.480397 0.493583 +20 25699941 25700293 0 4 NaN NaN NaN 0.452132 0.486489 0.499276 +20 25754173 25755672 0 2 NaN NaN NaN 0.421888 0.477235 0.497405 +20 25756059 25837915 0 2 NaN NaN NaN 0.477208 0.490059 0.499041 +20 25838130 25838130 0 1 NaN NaN NaN 0.450676 0.481665 0.496069 +20 25838802 25841650 0 4 NaN NaN NaN 0.467296 0.486735 0.497338 +20 25846283 25900162 0 3 NaN NaN NaN 0.400701 0.474501 0.495136 +20 25900379 26134237 0 4 NaN NaN NaN 0.459843 0.489669 0.496762 +20 26138206 29449417 0 2 NaN NaN NaN 0.460606 0.489562 0.499293 +20 29449678 29449678 0 1 NaN NaN NaN 0.461306 0.490108 0.497953 +20 29516670 29516670 0 1 NaN NaN NaN 0.445434 0.482388 0.497332 +20 29517417 29520510 0 3 NaN NaN NaN 0.443656 0.479848 0.497554 +20 29521061 29632564 0 4 NaN NaN NaN 0.460992 0.484146 0.496888 +20 29633929 29648701 0 3 NaN NaN NaN 0.466731 0.487119 0.498520 +20 29847211 29847211 0 1 NaN NaN NaN 0.452252 0.488039 0.498887 +20 29847618 29872796 0 2 NaN NaN NaN 0.468938 0.491683 0.499366 +20 29873577 29873577 0 1 NaN NaN NaN 0.455265 0.485851 0.497294 +20 29899208 29899208 0 1 NaN NaN NaN 0.450682 0.484555 0.496711 +20 29977156 29977156 0 1 NaN NaN NaN 0.458957 0.488063 0.498671 +20 29986332 30035869 0 2 NaN NaN NaN 0.453485 0.485547 0.498590 +20 30037783 30037783 0 1 NaN NaN NaN 0.475835 0.490036 0.498666 +20 30053255 31025163 0 2 NaN NaN NaN 0.437103 0.483602 0.495639 +20 31647126 31676804 0 8 NaN NaN NaN 0.428218 0.481079 0.497932 +20 31811551 31826027 0 4 NaN NaN NaN 0.438438 0.480786 0.496517 +20 31828265 31897554 0 2 NaN NaN NaN 0.454624 0.487380 0.498324 +20 31956468 32289763 0 2 NaN NaN NaN 0.424312 0.485560 0.498265 +20 32325329 32330930 0 2 NaN NaN NaN 0.454202 0.484338 0.498448 +20 32340077 32710710 0 8 NaN NaN NaN 0.362933 0.444359 0.490223 +20 32935192 33006597 0 6 NaN NaN NaN 0.452374 0.485703 0.498309 +20 33030405 33031276 0 2 NaN NaN NaN 0.463400 0.488831 0.498944 +20 33037336 33150503 0 7 NaN NaN NaN 0.380579 0.476931 0.496612 +20 33178782 33279604 0 5 NaN NaN NaN 0.465602 0.484205 0.497259 +20 33283649 33879478 0 2 NaN NaN NaN 0.461913 0.489222 0.498212 +20 33882720 33882791 0 2 NaN NaN NaN 0.456287 0.487289 0.497666 +20 34218673 34243017 0 4 NaN NaN NaN 0.451490 0.481328 0.496312 +20 34269577 34269577 0 1 NaN NaN NaN 0.463039 0.488272 0.499196 +20 34271574 34271574 0 1 NaN NaN NaN 0.452613 0.488914 0.496909 +20 34289005 34289005 0 1 NaN NaN NaN 0.452237 0.491220 0.499022 +20 34304783 34312834 0 6 NaN NaN NaN 0.377342 0.481372 0.495939 +20 34314114 34314114 0 1 NaN NaN NaN 0.467645 0.492923 0.499112 +20 34314140 34324484 0 9 NaN NaN NaN 0.451978 0.485820 0.497268 +20 34324648 34335861 0 3 NaN NaN NaN 0.473362 0.488136 0.497394 +20 34339854 34431377 0 4 NaN NaN NaN 0.448856 0.482765 0.497493 +20 34443173 34446395 0 2 NaN NaN NaN 0.448091 0.482762 0.496340 +20 34457513 34457513 0 1 NaN NaN NaN 0.462159 0.488392 0.497900 +20 34492974 34492974 0 1 NaN NaN NaN 0.455535 0.490870 0.498482 +20 34499996 34505054 0 3 NaN NaN NaN 0.446249 0.479420 0.498256 +20 34525807 34525807 0 1 NaN NaN NaN 0.442364 0.481195 0.498689 +20 34535373 34581979 0 5 NaN NaN NaN 0.456539 0.486439 0.497588 +20 34589995 34766745 0 8 NaN NaN NaN 0.437184 0.489427 0.498905 +20 34775551 34782171 0 2 NaN NaN NaN 0.469808 0.489869 0.499042 +20 34974252 34974252 0 1 NaN NaN NaN 0.445748 0.481609 0.492556 +20 35068018 35740794 0 10 NaN NaN NaN 0.464681 0.487597 0.498203 +20 35748894 35869619 0 21 NaN NaN NaN 0.369695 0.423835 0.479538 +20 36022539 36288284 0 3 NaN NaN NaN 0.434927 0.487231 0.497979 +20 36337303 36607077 0 3 NaN NaN NaN 0.449672 0.483354 0.496946 +20 36615416 36793501 0 8 NaN NaN NaN 0.432721 0.482939 0.499334 +20 36793529 36793529 0 1 NaN NaN NaN 0.440256 0.484254 0.497543 +20 36841756 36919758 0 4 NaN NaN NaN 0.469843 0.489908 0.498566 +20 36932551 36944379 0 5 NaN NaN NaN 0.462033 0.486311 0.498534 +20 36946848 36953097 0 3 NaN NaN NaN 0.450135 0.483083 0.498330 +20 36958262 36958262 0 1 NaN NaN NaN 0.453375 0.484553 0.498961 +20 36959318 36965617 0 4 NaN NaN NaN 0.413945 0.472093 0.497277 +20 36989269 37291486 0 19 NaN NaN NaN 0.411379 0.473824 0.492787 +20 37366218 37396262 0 9 NaN NaN NaN 0.456673 0.491919 0.499590 +20 37404951 38354742 0 4 NaN NaN NaN 0.440430 0.472428 0.497850 +20 38483658 39501689 0 3 NaN NaN NaN 0.452357 0.482185 0.494986 +20 39501744 40126679 0 12 NaN NaN NaN 0.446647 0.487710 0.498695 +20 40179909 40179920 0 2 NaN NaN NaN 0.465611 0.487282 0.497982 +20 40234917 43803708 0 48 NaN NaN NaN 0.456142 0.488258 0.498201 +20 43803725 43881630 0 10 NaN NaN NaN 0.464148 0.486133 0.499149 +20 43920730 44645010 0 19 NaN NaN NaN 0.463745 0.481262 0.493393 +20 44650318 44650318 0 1 NaN NaN NaN 0.442719 0.473708 0.497030 +20 44806875 44806875 0 1 NaN NaN NaN 0.454028 0.489757 0.497468 +20 44812893 44983517 0 2 NaN NaN NaN 0.420470 0.487612 0.498797 +20 44987318 45023247 0 2 NaN NaN NaN 0.452640 0.479764 0.498640 +20 45092517 45092921 0 3 NaN NaN NaN 0.448411 0.491257 0.499235 +20 45093125 45789953 0 5 NaN NaN NaN 0.462363 0.491570 0.498117 +20 45797639 45816649 0 12 NaN NaN NaN 0.464985 0.487772 0.497823 +20 45891189 45891189 0 1 NaN NaN NaN 0.456895 0.486319 0.498029 +20 45923383 47253043 0 12 NaN NaN NaN 0.437330 0.486640 0.498939 +20 47256300 47258763 0 4 NaN NaN NaN 0.448233 0.480363 0.496259 +20 47261017 47361725 0 14 NaN NaN NaN 0.457149 0.488718 0.497551 +20 47569112 47589122 0 6 NaN NaN NaN 0.464327 0.487752 0.499047 +20 47591082 47639464 0 12 NaN NaN NaN 0.467733 0.486825 0.498215 +20 47648353 47850182 0 12 NaN NaN NaN 0.452828 0.483399 0.498619 +20 47852822 47859217 0 2 NaN NaN NaN 0.462212 0.492586 0.498053 +20 47865372 48129706 0 10 NaN NaN NaN 0.465947 0.490095 0.498235 +20 48129987 48129987 0 1 NaN NaN NaN 0.460453 0.490726 0.499314 +20 48130628 48259034 0 5 NaN NaN NaN 0.459919 0.490614 0.498955 +20 48300990 48300990 0 1 NaN NaN NaN 0.452984 0.484971 0.497330 +20 48301146 48701527 0 4 NaN NaN NaN 0.474371 0.488398 0.497599 +20 48720687 49225953 0 9 NaN NaN NaN 0.457860 0.482330 0.497673 +20 49227294 49575334 0 5 NaN NaN NaN 0.475173 0.491330 0.499207 +20 50078910 54464410 0 39 NaN NaN NaN 0.469053 0.488314 0.498636 +20 54935242 54941140 0 5 NaN NaN NaN 0.456144 0.484160 0.498089 +20 54945783 55803149 0 13 NaN NaN NaN 0.462125 0.488177 0.497216 +20 56064267 56064267 0 1 NaN NaN NaN 0.444666 0.482527 0.497378 +20 56071296 56136536 0 4 NaN NaN NaN 0.465843 0.488155 0.497390 +20 56137184 57024589 0 17 NaN NaN NaN 0.459149 0.484309 0.496623 +20 57045667 57045765 0 2 NaN NaN NaN 0.443906 0.479921 0.497793 +20 57266134 57470517 0 9 NaN NaN NaN 0.472568 0.492878 0.498200 +20 57478448 57569860 0 7 NaN NaN NaN 0.454338 0.485450 0.498503 +20 57570854 57768399 0 7 NaN NaN NaN 0.468466 0.488630 0.499160 +20 57768743 58578068 0 8 NaN NaN NaN 0.479529 0.492119 0.498696 +20 58581863 60582540 0 10 NaN NaN NaN 0.466288 0.489301 0.499123 +20 60584328 60584328 0 1 NaN NaN NaN 0.464335 0.489799 0.496885 +20 60712284 60712284 0 1 NaN NaN NaN 0.442181 0.485124 0.498852 +20 60712347 60735098 0 9 NaN NaN NaN 0.478940 0.492581 0.499016 +20 60739079 60739079 0 1 NaN NaN NaN 0.455358 0.485029 0.497990 +20 60740362 60740362 0 1 NaN NaN NaN 0.457997 0.487558 0.498100 +20 60740447 60886611 0 16 NaN NaN NaN 0.464101 0.484383 0.497441 +20 60897721 60992224 0 10 NaN NaN NaN 0.460464 0.485621 0.498462 +20 60992402 61039958 0 2 NaN NaN NaN 0.443693 0.484444 0.495282 +20 61040125 61040125 0 1 NaN NaN NaN 0.459168 0.483449 0.497955 +20 61040313 61040313 0 1 NaN NaN NaN 0.472881 0.491679 0.498592 +20 61041653 61150928 0 3 NaN NaN NaN 0.459862 0.490558 0.498679 +20 61150959 61162037 0 2 NaN NaN NaN 0.461984 0.490706 0.497922 +20 61162100 61162100 0 1 NaN NaN NaN 0.462580 0.489902 0.499510 +20 61167883 61443547 0 8 NaN NaN NaN 0.466374 0.489014 0.498194 +20 61444697 61444697 0 1 NaN NaN NaN 0.470155 0.485852 0.498770 +20 61444785 61453348 0 2 NaN NaN NaN 0.465422 0.491863 0.499370 +20 61453549 61527563 0 14 NaN NaN NaN 0.470363 0.489367 0.497731 +20 61528074 61528074 0 1 NaN NaN NaN 0.425956 0.488365 0.497173 +20 61528271 61528306 0 2 NaN NaN NaN 0.446290 0.481513 0.498134 +20 61541028 61542001 0 2 NaN NaN NaN 0.431168 0.478006 0.489505 +20 61588159 61834695 0 4 NaN NaN NaN 0.454649 0.486121 0.497582 +20 61869607 61869607 0 1 NaN NaN NaN 0.457406 0.480959 0.498766 +20 61870727 61875909 0 5 NaN NaN NaN 0.468459 0.487113 0.496821 +20 61879009 61879009 0 1 NaN NaN NaN 0.461557 0.484165 0.495584 +20 61880274 62234240 0 21 NaN NaN NaN 0.468643 0.490869 0.498391 +20 62245686 62305274 0 5 NaN NaN NaN 0.443920 0.476067 0.497015 +20 62324289 62698484 0 10 NaN NaN NaN 0.455244 0.484321 0.498762 +20 62701092 62720193 0 5 NaN NaN NaN 0.444600 0.487363 0.498842 +20 62729431 62836271 0 3 NaN NaN NaN 0.414653 0.475402 0.495953 +20 62836520 62854417 0 2 NaN NaN NaN 0.457524 0.488430 0.498349 +20 62868043 62904542 0 3 NaN NaN NaN 0.416166 0.476612 0.495896 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.af.param index 4ecb3b3a561..c1095d09ceb 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.071919 1.083975 1.094159 1.107253 1.114895 1.126273 1.131272 1.146231 1.159403 -BIAS_VARIANCE 0.411686 0.418478 0.431803 0.440233 0.451278 0.460688 0.476434 0.486997 0.495994 -OUTLIER_PROBABILITY 0.050319 0.058925 0.064151 0.067747 0.070172 0.077448 0.084848 0.089142 0.098892 +MEAN_BIAS 1.092310 1.098678 1.111646 1.117541 1.120565 1.125976 1.133225 1.136642 1.148982 +BIAS_VARIANCE 0.451935 0.459585 0.465554 0.471289 0.475876 0.479446 0.482660 0.491585 0.495789 +OUTLIER_PROBABILITY 0.045637 0.051060 0.054284 0.057989 0.064227 0.068471 0.077494 0.083395 0.093476 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.seg index 4785253fc27..1cc21a3ed90 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-nac-tumor-1.modelBegin.seg @@ -2,89 +2,89 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 68100 363520 28 20 0.616858 0.645817 0.674736 0.447788 0.481028 0.497632 -20 368404 377586 3 3 0.455567 0.553719 0.619254 0.466718 0.492327 0.497891 -20 389132 398077 4 3 0.580702 0.639602 0.734505 0.445849 0.481161 0.498706 -20 398078 1373576 94 11 0.636273 0.656804 0.674736 0.458694 0.490526 0.499272 -20 1424143 1426618 2 2 0.558403 0.686476 0.821470 0.458244 0.483936 0.498648 -20 1432887 1515339 16 2 0.664547 0.697313 0.747386 0.438730 0.483349 0.493308 -20 1517550 1559592 7 8 0.664479 0.733470 0.804384 0.437448 0.483021 0.498283 -20 1600264 1896353 7 9 0.504773 0.588939 0.638667 0.411974 0.472609 0.498112 -20 1901790 2474793 51 2 0.610221 0.628385 0.643121 0.456590 0.487358 0.497464 -20 2517017 2518214 2 3 0.466824 0.581057 0.727678 0.465307 0.490760 0.498456 -20 2538851 2597102 13 2 0.679380 0.737303 0.802924 0.462295 0.487364 0.498186 -20 2597467 2622249 5 8 0.586969 0.673810 0.758800 0.450553 0.484032 0.498764 -20 2633368 3680358 256 21 0.620770 0.627961 0.638491 0.451140 0.481890 0.497300 -20 3681738 3686841 4 6 0.513418 0.599017 0.663398 0.440501 0.483976 0.498477 -20 3686842 4866807 95 13 0.598378 0.621248 0.637607 0.441344 0.479451 0.498791 -20 4879950 4880610 1 1 -38.354541 -19.841739 1.879385 0.453875 0.484130 0.496080 +20 68100 363520 28 20 0.616858 0.645817 0.674736 0.409789 0.471381 0.498710 +20 368404 377586 3 3 0.455567 0.553719 0.619254 0.444268 0.484721 0.498171 +20 389132 398077 4 3 0.580702 0.639602 0.734505 0.457889 0.491709 0.498982 +20 398078 1373576 94 11 0.636273 0.656804 0.674736 0.459475 0.483937 0.496808 +20 1424143 1426618 2 2 0.558403 0.686476 0.821470 0.444009 0.485036 0.497889 +20 1432887 1515339 16 2 0.664547 0.697313 0.747386 0.434855 0.475514 0.496759 +20 1517550 1559592 7 8 0.664479 0.733470 0.804384 0.383600 0.461272 0.495372 +20 1600264 1896353 7 9 0.504773 0.588939 0.638667 0.458351 0.480160 0.495468 +20 1901790 2474793 51 2 0.610221 0.628385 0.643121 0.464564 0.482640 0.496452 +20 2517017 2518214 2 3 0.466824 0.581057 0.727678 0.442603 0.485772 0.497383 +20 2538851 2597102 13 2 0.679380 0.737303 0.802924 0.436187 0.476695 0.497050 +20 2597467 2622249 5 8 0.586969 0.673810 0.758800 0.450158 0.478906 0.497040 +20 2633368 3680358 256 21 0.620770 0.627961 0.638491 0.450843 0.479585 0.495897 +20 3681738 3686841 4 6 0.513418 0.599017 0.663398 0.464355 0.490281 0.497014 +20 3686842 4866807 95 13 0.598378 0.621248 0.637607 0.461567 0.493639 0.499383 +20 4879950 4880610 1 1 -38.354541 -19.841739 1.879385 0.432495 0.482473 0.496767 20 4882837 5171132 27 0 0.610876 0.647102 0.682110 NaN NaN NaN -20 5282435 5297334 3 5 0.451959 0.554162 0.660650 0.464823 0.489456 0.496935 -20 5454040 8746257 127 26 0.647893 0.660167 0.671549 0.431505 0.486266 0.498351 -20 8754935 8771160 5 5 0.754330 0.823035 0.912155 0.459762 0.484310 0.497243 -20 8772985 9416547 29 2 0.858519 0.883094 0.926069 0.451955 0.489006 0.498764 -20 9417398 9425142 3 3 0.573965 0.670621 0.746411 0.439868 0.485263 0.498747 -20 9433743 10025443 24 2 0.832737 0.877060 0.915016 0.447487 0.482660 0.496834 -20 10025971 10032789 3 4 0.850305 0.956211 1.045650 0.402745 0.482583 0.493137 -20 10033509 13055397 58 4 0.858814 0.887775 0.902961 0.462677 0.489072 0.498997 -20 13071480 13091116 3 3 0.863603 0.960950 1.085440 0.452368 0.486677 0.497540 -20 13097902 16729903 128 10 0.858418 0.873171 0.891151 0.458769 0.484539 0.497666 -20 16730297 16730907 1 2 0.786506 0.989487 1.137585 0.470538 0.490279 0.498069 +20 5282435 5297334 3 5 0.451959 0.554162 0.660650 0.440798 0.483426 0.497444 +20 5454040 8746257 127 26 0.647893 0.660167 0.671549 0.401577 0.478646 0.495989 +20 8754935 8771160 5 5 0.754330 0.823035 0.912155 0.461202 0.487140 0.499448 +20 8772985 9416547 29 2 0.858519 0.883094 0.926069 0.457733 0.483351 0.498120 +20 9417398 9425142 3 3 0.573965 0.670621 0.746411 0.441158 0.487900 0.498664 +20 9433743 10025443 24 2 0.832737 0.877060 0.915016 0.470050 0.489653 0.497616 +20 10025971 10032789 3 4 0.850305 0.956211 1.045650 0.416258 0.476656 0.497775 +20 10033509 13055397 58 4 0.858814 0.887775 0.902961 0.435063 0.479230 0.496810 +20 13071480 13091116 3 3 0.863603 0.960950 1.085440 0.456907 0.488265 0.497822 +20 13097902 16729903 128 10 0.858418 0.873171 0.891151 0.435937 0.480662 0.497917 +20 16730297 16730907 1 2 0.786506 0.989487 1.137585 0.462517 0.483981 0.497330 20 16731489 17462967 13 0 0.888570 0.931614 0.963131 NaN NaN NaN -20 17474468 17492965 4 4 0.765912 0.858438 0.931668 0.445874 0.487314 0.496564 -20 17495115 17601704 14 3 0.855885 0.903735 0.954234 0.460581 0.486884 0.497342 -20 17601852 17602264 1 1 0.785991 0.961659 1.108774 0.465876 0.490820 0.498947 +20 17474468 17492965 4 4 0.765912 0.858438 0.931668 0.462784 0.484380 0.498417 +20 17495115 17601704 14 3 0.855885 0.903735 0.954234 0.444740 0.481472 0.491304 +20 17601852 17602264 1 1 0.785991 0.961659 1.108774 0.465607 0.487797 0.498672 20 17602460 17971079 31 0 0.866080 0.903972 0.937876 NaN NaN NaN -20 18005029 18022619 2 2 0.795920 0.931541 1.041274 0.457887 0.481805 0.494794 -20 18037928 18429964 34 3 0.919930 0.944497 0.972318 0.444253 0.481164 0.494322 -20 18432248 18433633 2 2 0.778596 0.948346 1.059295 0.448132 0.486763 0.498181 -20 18434125 18795182 47 2 0.831734 0.871539 0.893205 0.458188 0.485824 0.495650 -20 18805660 19560970 5 4 0.784477 0.880833 0.993205 0.430713 0.472450 0.495326 -20 19565364 20031518 44 3 0.951942 0.981857 1.011919 0.457509 0.482547 0.498375 -20 20032685 20051900 5 8 1.056331 1.144170 1.202413 0.431841 0.483315 0.497405 -20 20054695 21117443 68 6 0.919610 0.944809 0.962379 0.445861 0.480921 0.495268 -20 21125956 21143319 2 3 0.746576 0.885838 1.011789 0.440571 0.488567 0.499114 -20 21143320 21335762 29 1 0.915857 0.946611 0.977729 0.457365 0.484383 0.499236 -20 21336467 21337020 1 1 1.049420 1.168026 1.278388 0.453967 0.489176 0.498439 +20 18005029 18022619 2 2 0.795920 0.931541 1.041274 0.433740 0.481543 0.497831 +20 18037928 18429964 34 3 0.919930 0.944497 0.972318 0.436358 0.480910 0.497113 +20 18432248 18433633 2 2 0.778596 0.948346 1.059295 0.459969 0.481866 0.498046 +20 18434125 18795182 47 2 0.831734 0.871539 0.893205 0.460556 0.490242 0.498278 +20 18805660 19560970 5 4 0.784477 0.880833 0.993205 0.417590 0.475906 0.497200 +20 19565364 20031518 44 3 0.951942 0.981857 1.011919 0.445241 0.484677 0.497625 +20 20032685 20051900 5 8 1.056331 1.144170 1.202413 0.405932 0.485601 0.496053 +20 20054695 21117443 68 6 0.919610 0.944809 0.962379 0.387876 0.473482 0.498818 +20 21125956 21143319 2 3 0.746576 0.885838 1.011789 0.437016 0.487228 0.498208 +20 21143320 21335762 29 1 0.915857 0.946611 0.977729 0.441617 0.477593 0.497587 +20 21336467 21337020 1 1 1.049420 1.168026 1.278388 0.458295 0.490273 0.499093 20 21337021 23335353 23 0 0.843591 0.873977 0.898971 NaN NaN NaN -20 23344770 23347986 2 2 0.754716 0.889823 1.036976 0.440731 0.483960 0.498460 -20 23349148 23476803 23 3 0.923513 0.962569 1.015895 0.468827 0.490500 0.497061 -20 23528151 23529802 2 3 0.751213 0.863958 1.016981 0.436880 0.480488 0.495974 -20 23530800 23804992 16 5 0.925557 0.984711 1.032753 0.449843 0.478344 0.497631 -20 23805596 23807549 2 2 1.000609 1.122151 1.251156 0.463043 0.480164 0.497427 -20 23856574 25058753 44 6 1.007022 1.031021 1.066713 0.450253 0.483631 0.497611 -20 25059122 25059830 1 1 0.924371 1.074894 1.231265 0.440738 0.483023 0.496292 -20 25059831 25250095 19 1 1.042005 1.075242 1.125932 0.466639 0.489368 0.497765 -20 25251768 25269459 12 16 1.045976 1.096869 1.125607 0.276196 0.356818 0.482869 -20 25270235 25283234 9 8 0.971934 1.056236 1.125711 0.447577 0.484028 0.497112 -20 25283935 25426879 19 4 1.023388 1.058247 1.124318 0.420743 0.475115 0.494665 -20 25433836 25439484 3 4 1.089659 1.188626 1.278029 0.472319 0.490192 0.498962 -20 25441907 25520944 21 4 1.049891 1.081117 1.117048 0.431667 0.477774 0.492514 -20 25596310 25829597 8 5 1.113431 1.213732 1.321630 0.409198 0.474988 0.496722 +20 23344770 23347986 2 2 0.754716 0.889823 1.036976 0.451827 0.486870 0.498835 +20 23349148 23476803 23 3 0.923513 0.962569 1.015895 0.470283 0.488686 0.496804 +20 23528151 23529802 2 3 0.751213 0.863958 1.016981 0.430882 0.478451 0.494496 +20 23530800 23804992 16 5 0.925557 0.984711 1.032753 0.442622 0.482650 0.494298 +20 23805596 23807549 2 2 1.000609 1.122151 1.251156 0.431926 0.475602 0.497183 +20 23856574 25058753 44 6 1.007022 1.031021 1.066713 0.419597 0.470506 0.494977 +20 25059122 25059830 1 1 0.924371 1.074894 1.231265 0.440977 0.487037 0.497514 +20 25059831 25250095 19 1 1.042005 1.075242 1.125932 0.458144 0.485891 0.498323 +20 25251768 25269459 12 16 1.045976 1.096869 1.125607 0.300267 0.396284 0.497883 +20 25270235 25283234 9 8 0.971934 1.056236 1.125711 0.463458 0.485461 0.495536 +20 25283935 25426879 19 4 1.023388 1.058247 1.124318 0.415201 0.479079 0.494780 +20 25433836 25439484 3 4 1.089659 1.188626 1.278029 0.447954 0.489290 0.497590 +20 25441907 25520944 21 4 1.049891 1.081117 1.117048 0.461965 0.487943 0.497185 +20 25596310 25829597 8 5 1.113431 1.213732 1.321630 0.403474 0.461151 0.493035 20 26061550 26072430 3 0 0.367641 0.515342 0.634110 NaN NaN NaN -20 26083858 30126381 33 5 1.126152 1.152054 1.187677 0.458538 0.487852 0.497252 -20 30132499 31021972 161 1 1.778447 1.796121 1.818081 0.465590 0.489225 0.497884 -20 31021984 31025393 1 2 -41.644357 -19.617064 3.691117 0.465850 0.492405 0.499414 +20 26083858 30126381 33 5 1.126152 1.152054 1.187677 0.459142 0.485827 0.498167 +20 30132499 31021972 161 1 1.778447 1.796121 1.818081 0.453168 0.486421 0.499158 +20 31021984 31025393 1 2 -41.644357 -19.617064 3.691117 0.467031 0.490179 0.497997 20 31034848 31644756 121 0 1.707959 1.722598 1.734877 NaN NaN NaN -20 31646933 31657031 7 5 1.507781 1.555989 1.618804 0.444886 0.478005 0.496415 +20 31646933 31657031 7 5 1.507781 1.555989 1.618804 0.449831 0.478359 0.497385 20 31657443 31673054 9 0 1.581746 1.640515 1.722870 NaN NaN NaN -20 31673576 31677616 3 3 1.438886 1.537880 1.604160 0.469526 0.489298 0.498899 +20 31673576 31677616 3 3 1.438886 1.537880 1.604160 0.449716 0.483926 0.495909 20 31678263 31805721 17 0 1.630800 1.668371 1.724806 NaN NaN NaN -20 31811366 31828443 9 5 1.556041 1.616400 1.675757 0.352401 0.443150 0.496094 -20 31828940 32700168 105 1 1.629432 1.650935 1.663871 0.447432 0.483274 0.498539 -20 32847930 34218538 301 6 1.107186 1.114977 1.126401 0.332683 0.464406 0.489034 -20 34218539 34782534 94 23 1.132510 1.151938 1.172347 0.338286 0.463567 0.497305 -20 34783000 35555907 102 1 1.082704 1.097204 1.120763 0.448223 0.483323 0.498074 -20 35558912 35559530 1 1 0.853674 1.090897 1.288792 0.455707 0.487730 0.498486 -20 35563181 35757820 38 4 0.948333 0.974652 1.008372 0.464030 0.489280 0.497779 -20 35765963 35769967 2 2 0.868623 0.960101 1.080009 0.452696 0.484278 0.497855 -20 35771870 35833556 14 3 0.934589 0.993416 1.059647 0.447575 0.490760 0.499072 -20 35835425 35838822 2 4 0.736938 0.846223 0.971703 0.417625 0.470545 0.491784 -20 35841912 36784743 74 9 0.907187 0.929155 0.948146 0.408467 0.480739 0.495337 -20 36789571 36846128 5 6 0.812387 0.874448 0.956137 0.409074 0.479615 0.497213 -20 36846395 37272803 90 12 0.942329 0.966290 0.982398 0.459506 0.484659 0.497142 -20 37274440 37279609 6 7 0.788135 0.914467 1.002640 0.454924 0.483874 0.497529 -20 37353117 37667438 46 5 0.924444 0.945050 0.977642 0.455376 0.485197 0.497905 -20 39316268 45878435 698 77 0.115573 0.126588 0.138203 0.473228 0.491137 0.498528 -20 45890779 45891424 1 1 -0.268258 -0.088095 0.101311 0.465602 0.493225 0.498821 -20 45904807 62905205 1317 245 0.092592 0.100428 0.105982 0.485187 0.495274 0.499313 +20 31811366 31828443 9 5 1.556041 1.616400 1.675757 0.384104 0.440858 0.495959 +20 31828940 32700168 105 1 1.629432 1.650935 1.663871 0.471075 0.491959 0.498668 +20 32847930 34218538 301 6 1.107186 1.114977 1.126401 0.432530 0.485085 0.499278 +20 34218539 34782534 94 23 1.132510 1.151938 1.172347 0.392348 0.481583 0.497366 +20 34783000 35555907 102 1 1.082704 1.097204 1.120763 0.437582 0.489327 0.497035 +20 35558912 35559530 1 1 0.853674 1.090897 1.288792 0.445938 0.485191 0.495392 +20 35563181 35757820 38 4 0.948333 0.974652 1.008372 0.444197 0.475088 0.496887 +20 35765963 35769967 2 2 0.868623 0.960101 1.080009 0.450706 0.475335 0.495864 +20 35771870 35833556 14 3 0.934589 0.993416 1.059647 0.457173 0.489366 0.498523 +20 35835425 35838822 2 4 0.736938 0.846223 0.971703 0.453829 0.485948 0.498814 +20 35841912 36784743 74 9 0.907187 0.929155 0.948146 0.435112 0.480162 0.497193 +20 36789571 36846128 5 6 0.812387 0.874448 0.956137 0.456018 0.484753 0.498036 +20 36846395 37272803 90 12 0.942329 0.966290 0.982398 0.467053 0.487589 0.498108 +20 37274440 37279609 6 7 0.788135 0.914467 1.002640 0.441471 0.476914 0.495875 +20 37353117 37667438 46 5 0.924444 0.945050 0.977642 0.441712 0.484168 0.497860 +20 39316268 45878435 698 77 0.115573 0.126588 0.138203 0.472154 0.493084 0.499358 +20 45890779 45891424 1 1 -0.268258 -0.088095 0.101311 0.454396 0.485635 0.498555 +20 45904807 62905205 1317 245 0.092592 0.100428 0.105982 0.483032 0.492206 0.498982 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.af.param index 5fdb1e53c19..e6ef049c3c2 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.101501 1.111624 1.117474 1.127434 1.134135 1.139207 1.144321 1.159496 1.171021 -BIAS_VARIANCE 0.439194 0.451545 0.458149 0.463372 0.471589 0.479536 0.483401 0.485951 0.491700 -OUTLIER_PROBABILITY 0.003480 0.005827 0.009182 0.011244 0.014605 0.017407 0.020466 0.024670 0.028342 +MEAN_BIAS 1.107480 1.127598 1.130514 1.139511 1.142812 1.148875 1.156153 1.165459 1.169052 +BIAS_VARIANCE 0.452167 0.463604 0.476934 0.482244 0.485483 0.490797 0.492643 0.494530 0.498252 +OUTLIER_PROBABILITY 0.005022 0.010228 0.012933 0.015383 0.017580 0.020834 0.025056 0.034416 0.041315 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.seg index 163bd74cf93..c5525185d8b 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/multiple-sample-cr-ac-tumor-1.modelBegin.seg @@ -3,125 +3,125 @@ @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 20 68100 126585 4 0 0.524470 0.601407 0.706644 NaN NaN NaN -20 137935 139917 2 5 0.785879 0.898611 1.016510 0.458031 0.482672 0.498802 -20 168276 363520 22 15 0.583876 0.625972 0.667696 0.451096 0.482099 0.498741 -20 368404 377586 3 3 0.461714 0.553914 0.626951 0.443169 0.479346 0.497185 -20 389132 398077 4 3 0.566831 0.656941 0.737884 0.454010 0.489712 0.498826 -20 398078 422417 13 1 0.608469 0.656020 0.689490 0.444038 0.488994 0.498704 -20 422418 428970 3 2 0.653730 0.744561 0.857407 0.450532 0.485500 0.497520 -20 464335 1209491 51 6 0.625960 0.646304 0.665655 0.455987 0.484154 0.498488 -20 1210274 1215085 3 2 0.415255 0.496718 0.602324 0.467127 0.490451 0.497934 -20 1218438 1373576 24 1 0.670675 0.701721 0.741305 0.466832 0.487369 0.499110 -20 1424143 1426618 2 2 0.549623 0.670839 0.798850 0.454399 0.484792 0.496795 -20 1432887 1515339 16 2 0.653477 0.694731 0.731888 0.464329 0.483343 0.496628 -20 1517550 1552935 6 6 0.728388 0.778619 0.853447 0.427385 0.475752 0.494109 -20 1558733 1617403 5 6 0.434020 0.509677 0.596605 0.426049 0.471795 0.494150 -20 1629447 2474793 54 6 0.597024 0.617708 0.654253 0.449793 0.486371 0.498833 -20 2517017 2518214 2 2 0.483187 0.624226 0.713785 0.462400 0.477034 0.495237 -20 2538851 2597102 13 3 0.699476 0.728465 0.778510 0.461209 0.484082 0.497802 -20 2597467 2622249 5 8 0.569809 0.655909 0.738855 0.464151 0.487026 0.499240 -20 2633368 2796137 50 1 0.570440 0.597928 0.616003 0.456669 0.486679 0.497837 -20 2796138 2796673 1 1 0.467547 0.638188 0.769026 0.456267 0.492618 0.498553 -20 2796731 3196210 84 10 0.622314 0.642648 0.661420 0.440870 0.490205 0.498278 -20 3198912 3199530 1 1 0.409606 0.604688 0.747195 0.445957 0.484184 0.498070 -20 3202236 3680358 120 12 0.632795 0.647795 0.665503 0.447971 0.484350 0.498621 -20 3681738 3686841 4 6 0.526923 0.597767 0.674034 0.463716 0.491703 0.498661 +20 137935 139917 2 5 0.785879 0.898611 1.016510 0.445793 0.485867 0.498427 +20 168276 363520 22 15 0.583876 0.625972 0.667696 0.458232 0.488759 0.499237 +20 368404 377586 3 3 0.461714 0.553914 0.626951 0.438345 0.481932 0.497096 +20 389132 398077 4 3 0.566831 0.656941 0.737884 0.463090 0.491570 0.499148 +20 398078 422417 13 1 0.608469 0.656020 0.689490 0.452115 0.493336 0.498722 +20 422418 428970 3 2 0.653730 0.744561 0.857407 0.475196 0.489912 0.498860 +20 464335 1209491 51 6 0.625960 0.646304 0.665655 0.464880 0.490417 0.498328 +20 1210274 1215085 3 2 0.415255 0.496718 0.602324 0.460029 0.484509 0.496862 +20 1218438 1373576 24 1 0.670675 0.701721 0.741305 0.434863 0.478191 0.496487 +20 1424143 1426618 2 2 0.549623 0.670839 0.798850 0.465797 0.489200 0.498222 +20 1432887 1515339 16 2 0.653477 0.694731 0.731888 0.436415 0.476516 0.497533 +20 1517550 1552935 6 6 0.728388 0.778619 0.853447 0.449801 0.481660 0.496806 +20 1558733 1617403 5 6 0.434020 0.509677 0.596605 0.446609 0.477000 0.498868 +20 1629447 2474793 54 6 0.597024 0.617708 0.654253 0.426963 0.481804 0.494611 +20 2517017 2518214 2 2 0.483187 0.624226 0.713785 0.445836 0.485371 0.497777 +20 2538851 2597102 13 3 0.699476 0.728465 0.778510 0.464870 0.488898 0.497643 +20 2597467 2622249 5 8 0.569809 0.655909 0.738855 0.459638 0.490843 0.499251 +20 2633368 2796137 50 1 0.570440 0.597928 0.616003 0.450413 0.488519 0.498891 +20 2796138 2796673 1 1 0.467547 0.638188 0.769026 0.452887 0.486223 0.497524 +20 2796731 3196210 84 10 0.622314 0.642648 0.661420 0.444392 0.480503 0.497243 +20 3198912 3199530 1 1 0.409606 0.604688 0.747195 0.459946 0.486965 0.497928 +20 3202236 3680358 120 12 0.632795 0.647795 0.665503 0.447657 0.479447 0.492065 +20 3681738 3686841 4 6 0.526923 0.597767 0.674034 0.459753 0.485331 0.496566 20 3686842 3719616 3 0 0.536630 0.653823 0.739464 NaN NaN NaN -20 3721211 3721811 1 1 0.432850 0.597559 0.746468 0.464964 0.488067 0.497583 -20 3722680 4055845 60 5 0.603406 0.625085 0.653040 0.460892 0.487675 0.498089 -20 4155452 4162680 3 3 0.436800 0.537025 0.647765 0.441819 0.488251 0.498867 -20 4162681 4866807 28 8 0.579587 0.618340 0.662348 0.463075 0.491977 0.498911 -20 4879950 4880610 1 1 -37.542394 0.615667 0.804203 0.467812 0.489467 0.499040 -20 4882837 5897817 53 12 0.621204 0.645923 0.672654 0.453715 0.480379 0.497693 -20 5902730 5905947 2 2 0.558012 0.672789 0.758048 0.441726 0.483849 0.496172 -20 5918930 8609330 78 13 0.644667 0.664414 0.675468 0.470237 0.484593 0.498104 -20 8626498 8639603 6 3 0.688078 0.738301 0.809159 0.459411 0.494015 0.499189 -20 8665328 8771160 23 14 0.693840 0.739937 0.766986 0.446536 0.487213 0.496601 -20 8772985 9416547 29 3 0.854021 0.881668 0.918282 0.472807 0.489842 0.497948 -20 9417398 9425142 3 3 0.568999 0.663009 0.771887 0.443315 0.487139 0.499397 +20 3721211 3721811 1 1 0.432850 0.597559 0.746468 0.460657 0.488252 0.499192 +20 3722680 4055845 60 5 0.603406 0.625085 0.653040 0.456796 0.489967 0.497601 +20 4155452 4162680 3 3 0.436800 0.537025 0.647765 0.449710 0.486831 0.498523 +20 4162681 4866807 28 8 0.579587 0.618340 0.662348 0.454679 0.484096 0.497551 +20 4879950 4880610 1 1 -37.542394 0.615667 0.804203 0.442931 0.487704 0.498279 +20 4882837 5897817 53 12 0.621204 0.645923 0.672654 0.443534 0.481419 0.498393 +20 5902730 5905947 2 2 0.558012 0.672789 0.758048 0.452608 0.477251 0.497889 +20 5918930 8609330 78 13 0.644667 0.664414 0.675468 0.450091 0.481151 0.495678 +20 8626498 8639603 6 3 0.688078 0.738301 0.809159 0.460188 0.484696 0.498440 +20 8665328 8771160 23 14 0.693840 0.739937 0.766986 0.418592 0.486230 0.497522 +20 8772985 9416547 29 3 0.854021 0.881668 0.918282 0.457301 0.486102 0.497722 +20 9417398 9425142 3 3 0.568999 0.663009 0.771887 0.450309 0.483783 0.498145 20 9433743 9499127 12 0 0.844885 0.894935 0.932438 NaN NaN NaN -20 9510038 9510719 1 1 -42.234544 0.781574 0.983984 0.453249 0.484564 0.497427 -20 9519858 10025443 11 2 0.816088 0.870296 0.920325 0.458572 0.483918 0.496565 -20 10025971 10032789 3 4 0.849116 0.925941 1.054150 0.416059 0.472763 0.495752 -20 10033509 10628978 37 3 0.847368 0.873779 0.899660 0.461706 0.485788 0.497144 -20 10628979 10629540 1 2 0.630511 0.828540 0.982925 0.451605 0.484933 0.499082 -20 10629541 13055397 20 1 0.849101 0.889400 0.926613 0.464925 0.486610 0.496707 -20 13071480 13091116 3 4 0.874972 0.944811 1.020779 0.461463 0.484479 0.497773 -20 13097902 13768250 40 1 0.854831 0.879653 0.906136 0.424272 0.479853 0.495924 -20 13768984 13769550 1 1 -3.480082 0.651350 0.843135 0.473802 0.485727 0.499085 -20 13773555 14067121 34 4 0.796034 0.818948 0.850134 0.438230 0.479576 0.498372 -20 14305952 14308404 1 2 -29.708743 0.886004 1.204083 0.463854 0.485867 0.497632 -20 14473874 16721902 50 3 0.897186 0.915981 0.937491 0.443318 0.488175 0.499073 -20 16728796 16730907 3 3 1.046724 1.147365 1.233400 0.427898 0.481790 0.496883 +20 9510038 9510719 1 1 -42.234544 0.781574 0.983984 0.431922 0.474307 0.491828 +20 9519858 10025443 11 2 0.816088 0.870296 0.920325 0.458978 0.485296 0.497405 +20 10025971 10032789 3 4 0.849116 0.925941 1.054150 0.437493 0.480054 0.499230 +20 10033509 10628978 37 3 0.847368 0.873779 0.899660 0.449639 0.487719 0.497859 +20 10628979 10629540 1 2 0.630511 0.828540 0.982925 0.462413 0.490165 0.498911 +20 10629541 13055397 20 1 0.849101 0.889400 0.926613 0.423254 0.481949 0.497124 +20 13071480 13091116 3 4 0.874972 0.944811 1.020779 0.408779 0.484474 0.497597 +20 13097902 13768250 40 1 0.854831 0.879653 0.906136 0.440968 0.484188 0.496410 +20 13768984 13769550 1 1 -3.480082 0.651350 0.843135 0.455241 0.484641 0.497044 +20 13773555 14067121 34 4 0.796034 0.818948 0.850134 0.436796 0.488863 0.499117 +20 14305952 14308404 1 2 -29.708743 0.886004 1.204083 0.457324 0.489595 0.498755 +20 14473874 16721902 50 3 0.897186 0.915981 0.937491 0.465750 0.483117 0.494326 +20 16728796 16730907 3 3 1.046724 1.147365 1.233400 0.429276 0.483001 0.495996 20 16731489 17462967 13 0 0.885677 0.927447 0.962016 NaN NaN NaN -20 17474468 17492965 4 5 0.767899 0.848583 0.914066 0.444561 0.475834 0.493753 -20 17495115 17971079 46 3 0.884311 0.906667 0.930729 0.457639 0.487817 0.496349 -20 18005029 18022619 2 2 0.745948 0.881739 1.066532 0.466782 0.490738 0.497924 -20 18037928 18429964 34 6 0.909837 0.938251 0.983586 0.457683 0.488208 0.497766 -20 18432248 18433633 2 2 0.797740 0.906709 1.047442 0.461686 0.488618 0.498365 -20 18434125 18795182 47 2 0.843838 0.869582 0.891032 0.421064 0.480900 0.496960 -20 18805660 19560970 5 4 0.838289 0.888106 0.939910 0.391508 0.471715 0.494492 -20 19565364 19937701 16 1 0.938640 0.997341 1.050233 0.462606 0.489236 0.498040 -20 19941094 19956681 4 3 0.801671 0.899010 0.994614 0.452674 0.486359 0.496118 -20 19970400 19971205 1 1 0.676305 0.828829 1.005478 0.465164 0.486897 0.499308 -20 19972562 20031518 23 1 0.952952 0.984219 1.020643 0.467670 0.489415 0.498455 -20 20032685 20050660 4 9 1.043540 1.136218 1.215523 0.435481 0.483225 0.498008 +20 17474468 17492965 4 5 0.767899 0.848583 0.914066 0.454999 0.485977 0.496023 +20 17495115 17971079 46 3 0.884311 0.906667 0.930729 0.459715 0.489877 0.497739 +20 18005029 18022619 2 2 0.745948 0.881739 1.066532 0.462521 0.487925 0.498529 +20 18037928 18429964 34 6 0.909837 0.938251 0.983586 0.448821 0.486737 0.498635 +20 18432248 18433633 2 2 0.797740 0.906709 1.047442 0.447009 0.482801 0.498572 +20 18434125 18795182 47 2 0.843838 0.869582 0.891032 0.474411 0.488506 0.498345 +20 18805660 19560970 5 4 0.838289 0.888106 0.939910 0.457942 0.490592 0.496397 +20 19565364 19937701 16 1 0.938640 0.997341 1.050233 0.449407 0.488675 0.497119 +20 19941094 19956681 4 3 0.801671 0.899010 0.994614 0.453786 0.481332 0.495590 +20 19970400 19971205 1 1 0.676305 0.828829 1.005478 0.465328 0.487769 0.496609 +20 19972562 20031518 23 1 0.952952 0.984219 1.020643 0.459628 0.488902 0.499259 +20 20032685 20050660 4 9 1.043540 1.136218 1.215523 0.408692 0.473176 0.496212 20 20051247 20066430 5 0 0.949809 1.022599 1.079028 NaN NaN NaN -20 20071237 20168952 8 6 0.982955 1.045001 1.100870 0.437489 0.476862 0.498173 +20 20071237 20168952 8 6 0.982955 1.045001 1.100870 0.447426 0.486084 0.498203 20 20171735 20232659 6 0 0.868100 0.940002 0.994605 NaN NaN NaN -20 20243349 20244026 1 1 0.592460 0.869890 1.027119 0.460877 0.486567 0.497700 -20 20245809 21117443 49 1 0.902107 0.925627 0.942873 0.451987 0.482172 0.496747 -20 21125956 21143319 2 3 0.758861 0.877973 0.982262 0.444945 0.486592 0.498343 -20 21143320 21335762 29 1 0.918967 0.950775 0.975699 0.450446 0.488195 0.497834 -20 21336467 21337020 1 1 0.951806 1.119504 1.347018 0.433674 0.485857 0.497618 +20 20243349 20244026 1 1 0.592460 0.869890 1.027119 0.438122 0.484322 0.498544 +20 20245809 21117443 49 1 0.902107 0.925627 0.942873 0.408751 0.485730 0.497850 +20 21125956 21143319 2 3 0.758861 0.877973 0.982262 0.401704 0.468562 0.493244 +20 21143320 21335762 29 1 0.918967 0.950775 0.975699 0.438312 0.479148 0.497020 +20 21336467 21337020 1 1 0.951806 1.119504 1.347018 0.432382 0.474451 0.493147 20 21337021 23335353 23 0 0.839495 0.886394 0.931221 NaN NaN NaN -20 23344770 23347986 2 2 0.784379 0.895208 0.996667 0.457406 0.486262 0.496485 -20 23349148 23476803 23 3 0.930992 0.973755 1.008134 0.456870 0.480390 0.497556 -20 23528151 23549339 6 8 0.918465 0.996926 1.107777 0.447500 0.481803 0.495308 -20 23583896 23804992 12 4 0.888770 0.959020 1.015016 0.448333 0.490936 0.498522 -20 23805596 23807549 2 2 0.974566 1.124046 1.262117 0.456094 0.487877 0.497049 -20 23856574 25058753 44 9 1.019328 1.037878 1.070047 0.435547 0.481043 0.496653 -20 25059122 25059830 1 1 0.929910 1.107691 1.338866 0.439596 0.473385 0.494929 -20 25059831 25250095 19 2 1.047704 1.076587 1.107808 0.451161 0.487525 0.495906 -20 25251768 25269459 12 15 1.032362 1.081958 1.157877 0.328503 0.432552 0.497541 -20 25270235 25398090 24 12 0.991888 1.033597 1.086257 0.388162 0.473173 0.492448 -20 25398490 25399083 1 1 1.218677 1.390608 1.553730 0.445157 0.482511 0.498461 -20 25405596 25470212 15 11 1.072084 1.114885 1.172830 0.414419 0.487009 0.498430 +20 23344770 23347986 2 2 0.784379 0.895208 0.996667 0.460554 0.484914 0.496191 +20 23349148 23476803 23 3 0.930992 0.973755 1.008134 0.450212 0.480663 0.497300 +20 23528151 23549339 6 8 0.918465 0.996926 1.107777 0.434165 0.469544 0.496407 +20 23583896 23804992 12 4 0.888770 0.959020 1.015016 0.455701 0.483432 0.499233 +20 23805596 23807549 2 2 0.974566 1.124046 1.262117 0.437890 0.478817 0.495153 +20 23856574 25058753 44 9 1.019328 1.037878 1.070047 0.449475 0.486774 0.497735 +20 25059122 25059830 1 1 0.929910 1.107691 1.338866 0.410701 0.477186 0.496561 +20 25059831 25250095 19 2 1.047704 1.076587 1.107808 0.442719 0.486679 0.497750 +20 25251768 25269459 12 15 1.032362 1.081958 1.157877 0.367954 0.476942 0.498365 +20 25270235 25398090 24 12 0.991888 1.033597 1.086257 0.362618 0.489197 0.497602 +20 25398490 25399083 1 1 1.218677 1.390608 1.553730 0.437730 0.476120 0.495946 +20 25405596 25470212 15 11 1.072084 1.114885 1.172830 0.438331 0.484138 0.495441 20 25470260 25520944 12 0 1.021558 1.075534 1.145459 NaN NaN NaN -20 25596310 25829597 8 6 1.098352 1.234171 1.333143 0.368155 0.434792 0.491948 +20 25596310 25829597 8 6 1.098352 1.234171 1.333143 0.397657 0.462887 0.497475 20 26061550 26072430 3 0 0.346585 0.476691 0.592981 NaN NaN NaN -20 26083858 30126381 33 7 1.128613 1.155134 1.189744 0.423524 0.480248 0.498177 -20 30132499 31644756 283 1 1.742213 1.754708 1.770965 0.452846 0.489331 0.498481 -20 31646933 31657031 7 5 1.486861 1.580170 1.653185 0.463974 0.487154 0.499090 -20 31657443 31673054 9 1 1.587447 1.648094 1.701662 0.467945 0.486271 0.499540 -20 31673576 31677070 2 2 1.367535 1.437547 1.576903 0.464843 0.486571 0.495059 +20 26083858 30126381 33 7 1.128613 1.155134 1.189744 0.433831 0.483528 0.496667 +20 30132499 31644756 283 1 1.742213 1.754708 1.770965 0.436856 0.475611 0.496588 +20 31646933 31657031 7 5 1.486861 1.580170 1.653185 0.444664 0.471426 0.495946 +20 31657443 31673054 9 1 1.587447 1.648094 1.701662 0.457106 0.488117 0.497674 +20 31673576 31677070 2 2 1.367535 1.437547 1.576903 0.454234 0.482689 0.498518 20 31677071 31805721 18 0 1.636028 1.675802 1.722761 NaN NaN NaN -20 31811366 31828443 9 5 1.547919 1.623082 1.678306 0.399502 0.485225 0.497984 -20 31828940 32700168 105 1 1.627604 1.651674 1.666737 0.452951 0.486761 0.498920 +20 31811366 31828443 9 5 1.547919 1.623082 1.678306 0.406299 0.471450 0.496816 +20 31828940 32700168 105 1 1.627604 1.651674 1.666737 0.450647 0.488298 0.497500 20 32847930 32981939 14 0 0.981523 1.032955 1.097114 NaN NaN NaN -20 32996206 32996850 1 1 -44.144161 -23.442478 6.075372 0.451163 0.486603 0.497835 -20 33000070 34218538 286 6 1.106545 1.121904 1.136853 0.412121 0.474008 0.497931 -20 34218539 34243516 10 4 1.059556 1.117523 1.199210 0.448864 0.482595 0.494705 -20 34246603 34302563 22 2 1.156840 1.183857 1.209517 0.430640 0.488297 0.497836 -20 34304411 34501521 25 16 1.133764 1.161469 1.186708 0.448843 0.479987 0.495198 -20 34501704 34505357 2 2 1.023992 1.129776 1.243862 0.465768 0.486219 0.497196 -20 34505358 35065005 53 8 1.093915 1.118065 1.140264 0.430981 0.478559 0.497583 -20 35067906 35068523 1 1 0.841778 1.092655 1.330495 0.454404 0.483187 0.498185 -20 35070879 35468094 64 1 1.090973 1.110308 1.127704 0.458199 0.488719 0.499301 -20 35490811 35491997 1 1 0.881239 1.050916 1.252413 0.475227 0.492415 0.499002 +20 32996206 32996850 1 1 -44.144161 -23.442478 6.075372 0.441531 0.486796 0.498200 +20 33000070 34218538 286 6 1.106545 1.121904 1.136853 0.376880 0.464391 0.495483 +20 34218539 34243516 10 4 1.059556 1.117523 1.199210 0.425429 0.472382 0.492492 +20 34246603 34302563 22 2 1.156840 1.183857 1.209517 0.459783 0.485626 0.498282 +20 34304411 34501521 25 16 1.133764 1.161469 1.186708 0.446864 0.490285 0.499201 +20 34501704 34505357 2 2 1.023992 1.129776 1.243862 0.457191 0.492502 0.498569 +20 34505358 35065005 53 8 1.093915 1.118065 1.140264 0.462744 0.486942 0.498102 +20 35067906 35068523 1 1 0.841778 1.092655 1.330495 0.448476 0.485228 0.498517 +20 35070879 35468094 64 1 1.090973 1.110308 1.127704 0.450405 0.484837 0.498576 +20 35490811 35491997 1 1 0.881239 1.050916 1.252413 0.461223 0.485843 0.497804 20 35504327 35555907 18 0 0.992799 1.064285 1.109742 NaN NaN NaN -20 35558912 35559530 1 1 0.920315 1.079069 1.257841 0.422901 0.486827 0.497734 -20 35563181 35757820 38 4 0.936493 0.973360 1.002878 0.456153 0.485114 0.497181 -20 35765963 35769967 2 2 0.774601 0.951250 1.057507 0.452966 0.486821 0.498353 -20 35771870 35833556 14 4 0.942110 0.983035 1.026967 0.464561 0.489627 0.499305 -20 35835425 35838822 2 4 0.738773 0.890097 1.000615 0.423247 0.474563 0.496526 -20 35841912 36784743 74 11 0.909883 0.932272 0.944864 0.432027 0.489073 0.498199 -20 36789571 36846128 5 6 0.809076 0.875575 0.946742 0.440550 0.478764 0.494482 -20 36846395 36946389 16 5 0.901904 0.935909 0.990166 0.455391 0.478252 0.496626 -20 36946564 36963147 8 5 0.851695 0.915816 0.982273 0.463448 0.490635 0.498627 -20 36963749 37268279 65 6 0.951057 0.971139 0.999376 0.449183 0.482902 0.497956 -20 37272097 37279609 7 11 0.829791 0.897668 0.977499 0.454187 0.480527 0.492579 -20 37353117 37667438 46 6 0.920441 0.944903 0.968250 0.455150 0.487227 0.497249 -20 39316268 45878435 698 90 0.116500 0.125577 0.134277 0.473332 0.491645 0.498786 -20 45890779 45891424 1 1 -0.195750 -0.083534 0.091984 0.447779 0.488067 0.498147 -20 45904807 62905205 1317 284 0.092283 0.099282 0.107203 0.488598 0.494875 0.499061 +20 35558912 35559530 1 1 0.920315 1.079069 1.257841 0.434159 0.476086 0.495184 +20 35563181 35757820 38 4 0.936493 0.973360 1.002878 0.455034 0.485798 0.498183 +20 35765963 35769967 2 2 0.774601 0.951250 1.057507 0.426728 0.480781 0.496349 +20 35771870 35833556 14 4 0.942110 0.983035 1.026967 0.467737 0.488991 0.496488 +20 35835425 35838822 2 4 0.738773 0.890097 1.000615 0.418123 0.476152 0.495263 +20 35841912 36784743 74 11 0.909883 0.932272 0.944864 0.433347 0.482283 0.497554 +20 36789571 36846128 5 6 0.809076 0.875575 0.946742 0.453502 0.488412 0.499434 +20 36846395 36946389 16 5 0.901904 0.935909 0.990166 0.433242 0.475947 0.494414 +20 36946564 36963147 8 5 0.851695 0.915816 0.982273 0.454641 0.491101 0.498921 +20 36963749 37268279 65 6 0.951057 0.971139 0.999376 0.465846 0.485789 0.497945 +20 37272097 37279609 7 11 0.829791 0.897668 0.977499 0.441992 0.487394 0.499113 +20 37353117 37667438 46 6 0.920441 0.944903 0.968250 0.449098 0.480317 0.495612 +20 39316268 45878435 698 90 0.116500 0.125577 0.134277 0.476517 0.491417 0.499391 +20 45890779 45891424 1 1 -0.195750 -0.083534 0.091984 0.468558 0.481017 0.496755 +20 45904807 62905205 1317 284 0.092283 0.099282 0.107203 0.484183 0.492933 0.498847 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.af.igv.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.af.igv.seg index 727cdadd21f..10e268ac898 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.af.igv.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.af.igv.seg @@ -1,10 +1,10 @@ Sample Chromosome Start End Num_Probes Segment_Mean -SM-74P4M-1 20 138125 1552430 49 0.313709 -SM-74P4M-1 20 1559330 2779257 34 0.340767 -SM-74P4M-1 20 2796471 3838441 33 0.333826 -SM-74P4M-1 20 3870124 17460005 94 0.310069 -SM-74P4M-1 20 17474690 25841650 131 0.254511 -SM-74P4M-1 20 25846283 31025231 23 0.330888 -SM-74P4M-1 20 31647126 33879478 28 0.222819 -SM-74P4M-1 20 34218673 37396262 79 0.292410 -SM-74P4M-1 20 38354742 62871232 356 0.494893 +SM-74P4M-1 20 138125 1552430 49 0.310482 +SM-74P4M-1 20 1559330 2779257 34 0.331388 +SM-74P4M-1 20 2796471 3838441 33 0.330721 +SM-74P4M-1 20 3870124 13060331 76 0.315462 +SM-74P4M-1 20 13071871 25841650 149 0.262686 +SM-74P4M-1 20 25846283 31025231 23 0.340765 +SM-74P4M-1 20 31647126 34782171 52 0.242045 +SM-74P4M-1 20 35491033 37396262 55 0.301540 +SM-74P4M-1 20 38354742 62871232 356 0.496904 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.igv.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.igv.seg index f0376bdda14..37cb07c9193 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.igv.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.igv.seg @@ -2,9 +2,9 @@ Sample Chromosome Start End Num_Probes Segment_Mean SM-74P4M-1 20 138125 1552430 0 NaN SM-74P4M-1 20 1559330 2779257 0 NaN SM-74P4M-1 20 2796471 3838441 0 NaN -SM-74P4M-1 20 3870124 17460005 0 NaN -SM-74P4M-1 20 17474690 25841650 0 NaN +SM-74P4M-1 20 3870124 13060331 0 NaN +SM-74P4M-1 20 13071871 25841650 0 NaN SM-74P4M-1 20 25846283 31025231 0 NaN -SM-74P4M-1 20 31647126 33879478 0 NaN -SM-74P4M-1 20 34218673 37396262 0 NaN +SM-74P4M-1 20 31647126 34782171 0 NaN +SM-74P4M-1 20 35491033 37396262 0 NaN SM-74P4M-1 20 38354742 62871232 0 NaN diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.seg index 494695f2f5e..2db501a0499 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.cr.seg @@ -5,9 +5,9 @@ CONTIG START END NUM_POINTS_COPY_RATIO MEAN_LOG2_COPY_RATIO 20 138125 1552430 0 NaN 20 1559330 2779257 0 NaN 20 2796471 3838441 0 NaN -20 3870124 17460005 0 NaN -20 17474690 25841650 0 NaN +20 3870124 13060331 0 NaN +20 13071871 25841650 0 NaN 20 25846283 31025231 0 NaN -20 31647126 33879478 0 NaN -20 34218673 37396262 0 NaN +20 31647126 34782171 0 NaN +20 35491033 37396262 0 NaN 20 38354742 62871232 0 NaN diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.af.param index c01d4e5c8e2..04f1b0882cd 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.064979 1.069976 1.072287 1.074434 1.075888 1.077744 1.079786 1.081268 1.087864 -BIAS_VARIANCE 0.023228 0.025380 0.028014 0.030125 0.031415 0.032020 0.034953 0.036126 0.038595 -OUTLIER_PROBABILITY 0.053104 0.068030 0.072079 0.077273 0.083907 0.086835 0.092636 0.101832 0.116526 +MEAN_BIAS 1.065001 1.070465 1.073150 1.077038 1.078562 1.082153 1.087074 1.089658 1.091769 +BIAS_VARIANCE 0.026059 0.027576 0.029252 0.030330 0.032522 0.034146 0.034816 0.036562 0.039798 +OUTLIER_PROBABILITY 0.055326 0.064962 0.071506 0.074164 0.081333 0.085060 0.089944 0.095421 0.103508 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.seg index 9d423b511c8..f59b83c9932 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelBegin.seg @@ -2,49 +2,49 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 139576 0 5 NaN NaN NaN 0.308293 0.339029 0.375295 -20 168466 377226 0 18 NaN NaN NaN 0.327036 0.348428 0.368614 -20 389456 402921 0 4 NaN NaN NaN 0.326848 0.352694 0.391841 -20 425606 1458504 0 14 NaN NaN NaN 0.314029 0.333098 0.347429 -20 1517979 1552430 0 8 NaN NaN NaN 0.308972 0.342341 0.366315 -20 1559330 1592312 0 6 NaN NaN NaN 0.444949 0.481833 0.496871 -20 1600524 1616892 0 6 NaN NaN NaN 0.326215 0.365393 0.397058 -20 1895889 1896060 0 3 NaN NaN NaN 0.452867 0.482624 0.497125 -20 2056358 2517825 0 6 NaN NaN NaN 0.351681 0.393595 0.448896 -20 2552805 2621998 0 10 NaN NaN NaN 0.320245 0.343728 0.374045 -20 2633380 2779257 0 3 NaN NaN NaN 0.419440 0.471906 0.493589 -20 2796471 3838441 0 33 NaN NaN NaN 0.323449 0.332979 0.346263 -20 3870124 4055656 0 2 NaN NaN NaN 0.435462 0.492200 0.498869 -20 4155948 4843609 0 7 NaN NaN NaN 0.367923 0.396476 0.435051 -20 4880308 5482307 0 15 NaN NaN NaN 0.327069 0.350866 0.375718 -20 5528518 6100230 0 13 NaN NaN NaN 0.336238 0.350827 0.371627 -20 6194421 6195664 0 2 NaN NaN NaN 0.438623 0.489070 0.497910 -20 7866261 8703145 0 9 NaN NaN NaN 0.314281 0.334591 0.369431 -20 8707900 8707927 0 2 NaN NaN NaN 0.390812 0.444791 0.490994 -20 8737734 8770932 0 7 NaN NaN NaN 0.278027 0.310407 0.356609 -20 8773096 10032413 0 11 NaN NaN NaN 0.285616 0.309854 0.336216 -20 10329888 10629525 0 6 NaN NaN NaN 0.295792 0.344451 0.488663 -20 13054633 13060331 0 2 NaN NaN NaN 0.350108 0.446891 0.492924 -20 13071871 16730522 0 15 NaN NaN NaN 0.288995 0.308153 0.334858 -20 17459905 17460005 0 3 NaN NaN NaN 0.351944 0.390735 0.477194 -20 17474690 18446024 0 22 NaN NaN NaN 0.288469 0.304401 0.322490 -20 18806046 22714612 0 34 NaN NaN NaN 0.251695 0.269344 0.282756 -20 23345844 25011423 0 24 NaN NaN NaN 0.255886 0.269573 0.283058 -20 25038484 25255415 0 6 NaN NaN NaN 0.228550 0.243600 0.267038 -20 25257260 25282944 0 21 NaN NaN NaN 0.238815 0.249759 0.265142 -20 25288505 25398876 0 5 NaN NaN NaN 0.257330 0.459628 0.494389 -20 25434351 25470056 0 8 NaN NaN NaN 0.236346 0.260178 0.280356 -20 25597236 25838130 0 7 NaN NaN NaN 0.245072 0.277076 0.322202 -20 25838802 25841650 0 4 NaN NaN NaN 0.378249 0.429661 0.493250 -20 25846283 25900162 0 3 NaN NaN NaN 0.453579 0.481617 0.497553 -20 25900379 30037783 0 16 NaN NaN NaN 0.339240 0.455992 0.497208 -20 30053255 31025231 0 4 NaN NaN NaN 0.432501 0.486036 0.498669 -20 31647126 31677476 0 8 NaN NaN NaN 0.186306 0.203736 0.228313 -20 31811551 33879478 0 20 NaN NaN NaN 0.238200 0.249918 0.269297 -20 34218673 34782171 0 24 NaN NaN NaN 0.268272 0.280104 0.295469 -20 35491033 35869619 0 19 NaN NaN NaN 0.283399 0.300067 0.318457 -20 36022539 36937246 0 16 NaN NaN NaN 0.287923 0.304225 0.319391 -20 36946848 36965617 0 4 NaN NaN NaN 0.347528 0.431325 0.489126 -20 36989269 37279458 0 11 NaN NaN NaN 0.304763 0.330131 0.362966 -20 37377139 37396262 0 5 NaN NaN NaN 0.350772 0.372221 0.411310 -20 38354742 62871232 0 356 NaN NaN NaN 0.485004 0.495130 0.498904 +20 138125 139576 0 5 NaN NaN NaN 0.307582 0.346773 0.438145 +20 168466 377226 0 18 NaN NaN NaN 0.330926 0.347455 0.367309 +20 389456 402921 0 4 NaN NaN NaN 0.318461 0.352416 0.395247 +20 425606 1458504 0 14 NaN NaN NaN 0.308598 0.335077 0.363829 +20 1517979 1552430 0 8 NaN NaN NaN 0.311232 0.343111 0.373709 +20 1559330 1592312 0 6 NaN NaN NaN 0.447784 0.484865 0.497913 +20 1600524 1616892 0 6 NaN NaN NaN 0.336560 0.362889 0.396577 +20 1895889 1896060 0 3 NaN NaN NaN 0.460422 0.486434 0.498040 +20 2056358 2517825 0 6 NaN NaN NaN 0.353765 0.385550 0.448352 +20 2552805 2621998 0 10 NaN NaN NaN 0.311485 0.345045 0.369987 +20 2633380 2779257 0 3 NaN NaN NaN 0.435613 0.479867 0.496273 +20 2796471 3838441 0 33 NaN NaN NaN 0.325125 0.334590 0.351038 +20 3870124 4055656 0 2 NaN NaN NaN 0.442941 0.478607 0.498017 +20 4155948 4843609 0 7 NaN NaN NaN 0.377582 0.399804 0.432501 +20 4880308 5482307 0 15 NaN NaN NaN 0.329403 0.351695 0.371260 +20 5528518 6100230 0 13 NaN NaN NaN 0.333372 0.350985 0.371450 +20 6194421 6195664 0 2 NaN NaN NaN 0.374732 0.463121 0.494839 +20 7866261 8703145 0 9 NaN NaN NaN 0.309391 0.343965 0.369563 +20 8707900 8707927 0 2 NaN NaN NaN 0.407690 0.463100 0.495038 +20 8737734 8770932 0 7 NaN NaN NaN 0.277306 0.307132 0.346704 +20 8773096 10032413 0 11 NaN NaN NaN 0.274085 0.305374 0.329942 +20 10329888 10629525 0 6 NaN NaN NaN 0.301127 0.338250 0.482567 +20 13054633 13060331 0 2 NaN NaN NaN 0.384441 0.478201 0.496186 +20 13071871 16730522 0 15 NaN NaN NaN 0.289290 0.309515 0.322158 +20 17459905 17460005 0 3 NaN NaN NaN 0.363929 0.400084 0.456407 +20 17474690 18446024 0 22 NaN NaN NaN 0.283351 0.300435 0.319628 +20 18806046 22714612 0 34 NaN NaN NaN 0.257412 0.268365 0.283623 +20 23345844 25011423 0 24 NaN NaN NaN 0.259794 0.272567 0.286583 +20 25038484 25255415 0 6 NaN NaN NaN 0.228080 0.250970 0.274484 +20 25257260 25282944 0 21 NaN NaN NaN 0.234277 0.251599 0.265177 +20 25288505 25398876 0 5 NaN NaN NaN 0.246085 0.274298 0.308657 +20 25434351 25470056 0 8 NaN NaN NaN 0.239093 0.255439 0.285947 +20 25597236 25838130 0 7 NaN NaN NaN 0.248991 0.278405 0.316273 +20 25838802 25841650 0 4 NaN NaN NaN 0.401315 0.463642 0.494459 +20 25846283 25900162 0 3 NaN NaN NaN 0.459655 0.485372 0.498836 +20 25900379 30037783 0 16 NaN NaN NaN 0.356864 0.458995 0.493495 +20 30053255 31025231 0 4 NaN NaN NaN 0.453880 0.490586 0.498220 +20 31647126 31677476 0 8 NaN NaN NaN 0.183849 0.205084 0.227366 +20 31811551 33879478 0 20 NaN NaN NaN 0.234299 0.244505 0.263952 +20 34218673 34782171 0 24 NaN NaN NaN 0.265194 0.282690 0.301982 +20 35491033 35869619 0 19 NaN NaN NaN 0.287529 0.305609 0.319915 +20 36022539 36937246 0 16 NaN NaN NaN 0.291775 0.304733 0.314173 +20 36946848 36965617 0 4 NaN NaN NaN 0.337974 0.452887 0.488730 +20 36989269 37279458 0 11 NaN NaN NaN 0.307611 0.334935 0.358422 +20 37377139 37396262 0 5 NaN NaN NaN 0.335320 0.369374 0.412040 +20 38354742 62871232 0 356 NaN NaN NaN 0.490904 0.495706 0.498569 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.af.param index b902d4b5ecc..62e366134cb 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.060195 1.070838 1.072904 1.075003 1.078570 1.080291 1.082617 1.085703 1.091312 -BIAS_VARIANCE 0.023671 0.026876 0.028157 0.029099 0.029852 0.031301 0.031531 0.033205 0.034780 -OUTLIER_PROBABILITY 0.032842 0.038724 0.039614 0.042207 0.047856 0.054548 0.057929 0.061304 0.069610 +MEAN_BIAS 1.071219 1.074761 1.079743 1.084029 1.087154 1.089152 1.090474 1.093839 1.098595 +BIAS_VARIANCE 0.027265 0.028460 0.030686 0.032551 0.033488 0.035178 0.037179 0.038672 0.039563 +OUTLIER_PROBABILITY 0.033591 0.038581 0.040129 0.042728 0.045875 0.048124 0.052671 0.055083 0.057366 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.seg index b18f53170eb..69f57fb4052 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac-nac.modelFinal.seg @@ -2,12 +2,12 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 1552430 0 49 NaN NaN NaN 0.298624 0.313709 0.326040 -20 1559330 2779257 0 34 NaN NaN NaN 0.320567 0.340767 0.361811 -20 2796471 3838441 0 33 NaN NaN NaN 0.319240 0.333826 0.348229 -20 3870124 17460005 0 94 NaN NaN NaN 0.301268 0.310069 0.321773 -20 17474690 25841650 0 131 NaN NaN NaN 0.248601 0.254511 0.262415 -20 25846283 31025231 0 23 NaN NaN NaN 0.268522 0.330888 0.392249 -20 31647126 33879478 0 28 NaN NaN NaN 0.206467 0.222819 0.239564 -20 34218673 37396262 0 79 NaN NaN NaN 0.282908 0.292410 0.301721 -20 38354742 62871232 0 356 NaN NaN NaN 0.489260 0.494893 0.499112 +20 138125 1552430 0 49 NaN NaN NaN 0.301656 0.310482 0.321020 +20 1559330 2779257 0 34 NaN NaN NaN 0.321121 0.331388 0.351097 +20 2796471 3838441 0 33 NaN NaN NaN 0.311604 0.330721 0.346451 +20 3870124 13060331 0 76 NaN NaN NaN 0.295467 0.315462 0.329249 +20 13071871 25841650 0 149 NaN NaN NaN 0.253458 0.262686 0.277703 +20 25846283 31025231 0 23 NaN NaN NaN 0.283981 0.340765 0.421111 +20 31647126 34782171 0 52 NaN NaN NaN 0.222884 0.242045 0.262660 +20 35491033 37396262 0 55 NaN NaN NaN 0.289958 0.301540 0.314308 +20 38354742 62871232 0 356 NaN NaN NaN 0.488923 0.496904 0.499041 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.af.igv.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.af.igv.seg index 1c1bd11f5d6..6376f02f30f 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.af.igv.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.af.igv.seg @@ -1,5 +1,3 @@ Sample Chromosome Start End Num_Probes Segment_Mean -SM-74P4M-1 20 138125 18446024 348 0.329600 -SM-74P4M-1 20 18806046 23807028 80 0.274873 -SM-74P4M-1 20 23842032 37396262 315 0.283610 -SM-74P4M-1 20 37404951 62904542 483 0.496253 +SM-74P4M-1 20 138125 37396262 743 0.303751 +SM-74P4M-1 20 37404951 62904542 483 0.496547 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.igv.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.igv.seg index fb086d4506f..236905bb2f6 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.igv.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.igv.seg @@ -1,5 +1,3 @@ Sample Chromosome Start End Num_Probes Segment_Mean -SM-74P4M-1 20 138125 18446024 0 NaN -SM-74P4M-1 20 18806046 23807028 0 NaN -SM-74P4M-1 20 23842032 37396262 0 NaN +SM-74P4M-1 20 138125 37396262 0 NaN SM-74P4M-1 20 37404951 62904542 0 NaN diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.seg index 058b4585231..10dd4a7e87b 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.cr.seg @@ -2,7 +2,5 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO MEAN_LOG2_COPY_RATIO -20 138125 18446024 0 NaN -20 18806046 23807028 0 NaN -20 23842032 37396262 0 NaN +20 138125 37396262 0 NaN 20 37404951 62904542 0 NaN diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.af.param index b6afaf39cf0..1019aba1e75 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.090256 1.099481 1.109172 1.119249 1.124900 1.130002 1.142848 1.147598 1.158294 -BIAS_VARIANCE 0.386686 0.397327 0.403015 0.408885 0.416855 0.423181 0.443412 0.459471 0.483977 -OUTLIER_PROBABILITY 0.010941 0.012792 0.014915 0.022995 0.028332 0.030680 0.034429 0.039288 0.052753 +MEAN_BIAS 1.059231 1.073764 1.082538 1.091104 1.099210 1.107675 1.124835 1.142061 1.156225 +BIAS_VARIANCE 0.337549 0.355694 0.367646 0.371785 0.380377 0.397368 0.428090 0.446462 0.484917 +OUTLIER_PROBABILITY 0.009441 0.014040 0.016986 0.022264 0.027119 0.031235 0.034292 0.044029 0.047521 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.seg index dbc1d03ce2f..037bb2eeeaf 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelBegin.seg @@ -2,71 +2,71 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 139576 0 5 NaN NaN NaN 0.440798 0.479702 0.497599 -20 168466 259156 0 13 NaN NaN NaN 0.440494 0.488599 0.496826 -20 259818 360306 0 8 NaN NaN NaN 0.453937 0.487197 0.496708 -20 368905 377226 0 3 NaN NaN NaN 0.464748 0.490570 0.498988 -20 389456 402921 0 4 NaN NaN NaN 0.455061 0.484825 0.498592 -20 425606 1285933 0 16 NaN NaN NaN 0.455865 0.489725 0.497571 -20 1417397 1896244 0 30 NaN NaN NaN 0.359240 0.443016 0.492340 -20 2036954 2552805 0 12 NaN NaN NaN 0.476290 0.491636 0.499129 -20 2593006 2621998 0 10 NaN NaN NaN 0.464514 0.491787 0.498511 -20 2624956 2779257 0 5 NaN NaN NaN 0.435842 0.481883 0.497459 -20 2796471 3838441 0 43 NaN NaN NaN 0.444566 0.484396 0.496843 -20 3858985 4055656 0 3 NaN NaN NaN 0.456114 0.481442 0.499047 -20 4138585 5068730 0 17 NaN NaN NaN 0.467622 0.486902 0.498036 -20 5159344 5482307 0 16 NaN NaN NaN 0.465595 0.489608 0.499188 -20 5528518 6100391 0 21 NaN NaN NaN 0.465393 0.486382 0.497495 -20 6194421 6798939 0 5 NaN NaN NaN 0.461229 0.489925 0.498863 -20 7866261 8625108 0 6 NaN NaN NaN 0.437814 0.479370 0.496951 -20 8625250 8639443 0 4 NaN NaN NaN 0.458029 0.483078 0.495324 -20 8665751 8703145 0 5 NaN NaN NaN 0.451941 0.478444 0.496848 -20 8707900 8742326 0 6 NaN NaN NaN 0.443505 0.484670 0.497819 -20 8755243 8770932 0 4 NaN NaN NaN 0.424924 0.480004 0.497533 -20 8773096 8773155 0 2 NaN NaN NaN 0.466812 0.487851 0.498420 -20 9108585 9376019 0 4 NaN NaN NaN 0.447496 0.482482 0.497583 -20 9417870 9510263 0 4 NaN NaN NaN 0.443796 0.480370 0.498457 -20 9624587 10024951 0 6 NaN NaN NaN 0.463675 0.490557 0.498368 -20 10026357 10032413 0 4 NaN NaN NaN 0.420220 0.474803 0.496140 -20 10329888 10393145 0 4 NaN NaN NaN 0.458186 0.484965 0.497048 -20 10426975 12113410 0 10 NaN NaN NaN 0.459159 0.487033 0.495408 -20 13054307 13074243 0 8 NaN NaN NaN 0.422730 0.479198 0.495801 -20 13090745 13845726 0 12 NaN NaN NaN 0.459112 0.488688 0.498798 -20 13872093 15967327 0 14 NaN NaN NaN 0.469241 0.489931 0.498706 -20 16729262 16730522 0 3 NaN NaN NaN 0.458029 0.487920 0.498656 -20 17028059 17460132 0 5 NaN NaN NaN 0.445134 0.486996 0.498367 -20 17474690 18327570 0 30 NaN NaN NaN 0.442347 0.482205 0.496573 -20 18429497 18429509 0 2 NaN NaN NaN 0.442946 0.477879 0.497855 -20 18432690 18446024 0 4 NaN NaN NaN 0.461632 0.487390 0.497677 -20 18806046 22714612 0 54 NaN NaN NaN 0.311032 0.333551 0.365837 -20 23345844 23807028 0 26 NaN NaN NaN 0.316373 0.412002 0.489998 -20 23842032 24938195 0 12 NaN NaN NaN 0.460769 0.488878 0.497288 -20 24939590 24959386 0 2 NaN NaN NaN 0.447806 0.480658 0.498828 -20 24993414 25011423 0 4 NaN NaN NaN 0.450815 0.487411 0.498519 -20 25038484 25059442 0 2 NaN NaN NaN 0.394328 0.471879 0.495716 -20 25190598 25286059 0 27 NaN NaN NaN 0.281397 0.342294 0.492798 -20 25288505 25424713 0 11 NaN NaN NaN 0.398046 0.482640 0.497572 -20 25434351 25470056 0 11 NaN NaN NaN 0.378380 0.464472 0.493703 -20 25597236 25755672 0 12 NaN NaN NaN 0.442179 0.483619 0.498683 -20 25756059 25841650 0 7 NaN NaN NaN 0.448212 0.479904 0.497603 -20 25846283 25900162 0 3 NaN NaN NaN 0.341213 0.462817 0.496427 -20 25900379 26134237 0 4 NaN NaN NaN 0.455921 0.490608 0.498795 -20 26138206 29449678 0 3 NaN NaN NaN 0.439211 0.486197 0.497057 -20 29516670 30037783 0 20 NaN NaN NaN 0.456562 0.491430 0.498024 -20 30053255 31025163 0 2 NaN NaN NaN 0.444929 0.482061 0.499409 -20 31647126 31676804 0 8 NaN NaN NaN 0.430324 0.471191 0.495301 -20 31811551 31826027 0 4 NaN NaN NaN 0.409054 0.476855 0.492332 -20 31828265 32330930 0 6 NaN NaN NaN 0.431338 0.474485 0.495541 -20 32340077 32710710 0 8 NaN NaN NaN 0.356173 0.451210 0.497063 -20 32935192 33006597 0 6 NaN NaN NaN 0.468295 0.490199 0.496922 -20 33030405 33150503 0 9 NaN NaN NaN 0.402144 0.473202 0.497573 -20 33178782 33882791 0 9 NaN NaN NaN 0.456522 0.484069 0.498129 -20 34218673 34782171 0 53 NaN NaN NaN 0.429611 0.476297 0.495476 -20 34974252 35869619 0 32 NaN NaN NaN 0.336243 0.380496 0.458634 -20 36022539 36944379 0 24 NaN NaN NaN 0.428000 0.483294 0.498555 -20 36946848 36965617 0 8 NaN NaN NaN 0.440872 0.485605 0.497363 -20 36989269 37291486 0 19 NaN NaN NaN 0.442259 0.482437 0.497222 -20 37366218 37396262 0 9 NaN NaN NaN 0.452619 0.485731 0.498013 -20 37404951 61444697 0 402 NaN NaN NaN 0.484274 0.494096 0.499134 -20 61444785 61453348 0 2 NaN NaN NaN 0.451488 0.485654 0.496916 -20 61453549 62904542 0 79 NaN NaN NaN 0.472371 0.490990 0.498263 +20 138125 139576 0 5 NaN NaN NaN 0.402598 0.458690 0.489257 +20 168466 259156 0 13 NaN NaN NaN 0.466822 0.487670 0.497309 +20 259818 360306 0 8 NaN NaN NaN 0.408195 0.481713 0.498844 +20 368905 377226 0 3 NaN NaN NaN 0.452640 0.483733 0.496855 +20 389456 402921 0 4 NaN NaN NaN 0.439883 0.475307 0.494706 +20 425606 1285933 0 16 NaN NaN NaN 0.447089 0.479530 0.494184 +20 1417397 1896244 0 30 NaN NaN NaN 0.311661 0.374359 0.452280 +20 2036954 2552805 0 12 NaN NaN NaN 0.465444 0.488381 0.498581 +20 2593006 2621998 0 10 NaN NaN NaN 0.460950 0.485237 0.497729 +20 2624956 2779257 0 5 NaN NaN NaN 0.472348 0.492532 0.498647 +20 2796471 3838441 0 43 NaN NaN NaN 0.426428 0.485532 0.498052 +20 3858985 4055656 0 3 NaN NaN NaN 0.455864 0.484473 0.493982 +20 4138585 5068730 0 17 NaN NaN NaN 0.455611 0.484819 0.497596 +20 5159344 5482307 0 16 NaN NaN NaN 0.469968 0.489276 0.498473 +20 5528518 6100391 0 21 NaN NaN NaN 0.438522 0.487269 0.497109 +20 6194421 6798939 0 5 NaN NaN NaN 0.439933 0.487875 0.498050 +20 7866261 8625108 0 6 NaN NaN NaN 0.431096 0.480998 0.495239 +20 8625250 8639443 0 4 NaN NaN NaN 0.452132 0.490778 0.498100 +20 8665751 8703145 0 5 NaN NaN NaN 0.464700 0.486542 0.498388 +20 8707900 8742326 0 6 NaN NaN NaN 0.451179 0.482977 0.496961 +20 8755243 8770932 0 4 NaN NaN NaN 0.465033 0.490912 0.499373 +20 8773096 8773155 0 2 NaN NaN NaN 0.457933 0.481761 0.497595 +20 9108585 9376019 0 4 NaN NaN NaN 0.456850 0.490451 0.497941 +20 9417870 9510263 0 4 NaN NaN NaN 0.450214 0.471448 0.498505 +20 9624587 10024951 0 6 NaN NaN NaN 0.460308 0.487576 0.498544 +20 10026357 10032413 0 4 NaN NaN NaN 0.383593 0.482721 0.497445 +20 10329888 10393145 0 4 NaN NaN NaN 0.451740 0.483709 0.499096 +20 10426975 12113410 0 10 NaN NaN NaN 0.463732 0.483361 0.498896 +20 13054307 13074243 0 8 NaN NaN NaN 0.460254 0.480012 0.496881 +20 13090745 13845726 0 12 NaN NaN NaN 0.442980 0.480915 0.494221 +20 13872093 15967327 0 14 NaN NaN NaN 0.438024 0.478811 0.498088 +20 16729262 16730522 0 3 NaN NaN NaN 0.450649 0.487730 0.498631 +20 17028059 17460132 0 5 NaN NaN NaN 0.451572 0.474350 0.496080 +20 17474690 18327570 0 30 NaN NaN NaN 0.449200 0.480355 0.494322 +20 18429497 18429509 0 2 NaN NaN NaN 0.471028 0.486146 0.499530 +20 18432690 18446024 0 4 NaN NaN NaN 0.440645 0.487903 0.497942 +20 18806046 22714612 0 54 NaN NaN NaN 0.292756 0.326880 0.362237 +20 23345844 23807028 0 26 NaN NaN NaN 0.331547 0.481088 0.497273 +20 23842032 24938195 0 12 NaN NaN NaN 0.466514 0.492118 0.498481 +20 24939590 24959386 0 2 NaN NaN NaN 0.452099 0.485577 0.496816 +20 24993414 25011423 0 4 NaN NaN NaN 0.444157 0.485087 0.496990 +20 25038484 25059442 0 2 NaN NaN NaN 0.413650 0.477351 0.498441 +20 25190598 25286059 0 27 NaN NaN NaN 0.285450 0.335143 0.440814 +20 25288505 25424713 0 11 NaN NaN NaN 0.369824 0.438819 0.495847 +20 25434351 25470056 0 11 NaN NaN NaN 0.449188 0.484455 0.498332 +20 25597236 25755672 0 12 NaN NaN NaN 0.435903 0.485251 0.498070 +20 25756059 25841650 0 7 NaN NaN NaN 0.466450 0.489128 0.498105 +20 25846283 25900162 0 3 NaN NaN NaN 0.375980 0.459039 0.492023 +20 25900379 26134237 0 4 NaN NaN NaN 0.438987 0.484034 0.496397 +20 26138206 29449678 0 3 NaN NaN NaN 0.441430 0.490041 0.498022 +20 29516670 30037783 0 20 NaN NaN NaN 0.466100 0.486705 0.494903 +20 30053255 31025163 0 2 NaN NaN NaN 0.460866 0.491822 0.498690 +20 31647126 31676804 0 8 NaN NaN NaN 0.420384 0.476044 0.497287 +20 31811551 31826027 0 4 NaN NaN NaN 0.358847 0.479664 0.495201 +20 31828265 32330930 0 6 NaN NaN NaN 0.443005 0.484786 0.496641 +20 32340077 32710710 0 8 NaN NaN NaN 0.362631 0.428692 0.489771 +20 32935192 33006597 0 6 NaN NaN NaN 0.451948 0.485780 0.498018 +20 33030405 33150503 0 9 NaN NaN NaN 0.367456 0.441215 0.493514 +20 33178782 33882791 0 9 NaN NaN NaN 0.465225 0.486634 0.498055 +20 34218673 34782171 0 53 NaN NaN NaN 0.434052 0.476885 0.497838 +20 34974252 35869619 0 32 NaN NaN NaN 0.317636 0.363562 0.409450 +20 36022539 36944379 0 24 NaN NaN NaN 0.429298 0.476811 0.495536 +20 36946848 36965617 0 8 NaN NaN NaN 0.462958 0.483369 0.498854 +20 36989269 37291486 0 19 NaN NaN NaN 0.449951 0.479868 0.496863 +20 37366218 37396262 0 9 NaN NaN NaN 0.466491 0.484398 0.497237 +20 37404951 61444697 0 402 NaN NaN NaN 0.486953 0.494099 0.499177 +20 61444785 61453348 0 2 NaN NaN NaN 0.453088 0.473369 0.497858 +20 61453549 62904542 0 79 NaN NaN NaN 0.483483 0.491975 0.498251 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.af.param b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.af.param index 52de07ca503..5bb69d76ced 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.af.param +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.af.param @@ -1,6 +1,6 @@ @HD VN:1.6 @RG ID:GATKCopyNumber SM:SM-74P4M-1 PARAMETER_NAME POSTERIOR_10 POSTERIOR_20 POSTERIOR_30 POSTERIOR_40 POSTERIOR_50 POSTERIOR_60 POSTERIOR_70 POSTERIOR_80 POSTERIOR_90 -MEAN_BIAS 1.052579 1.059157 1.063855 1.067549 1.071192 1.075970 1.079045 1.083201 1.087549 -BIAS_VARIANCE 0.038132 0.039991 0.040937 0.041641 0.042978 0.044380 0.046389 0.047301 0.048955 -OUTLIER_PROBABILITY 0.012181 0.013084 0.015014 0.017866 0.019282 0.021425 0.022695 0.024926 0.031160 +MEAN_BIAS 1.069255 1.073963 1.078146 1.080389 1.082496 1.087311 1.089726 1.092997 1.097136 +BIAS_VARIANCE 0.048473 0.052003 0.052692 0.054348 0.056050 0.058032 0.060749 0.066364 0.069438 +OUTLIER_PROBABILITY 0.007462 0.011329 0.013651 0.015995 0.019026 0.019725 0.021521 0.023417 0.030548 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.seg index 4421257a69a..64ff0b444c6 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-ac.modelFinal.seg @@ -2,7 +2,5 @@ @SQ SN:20 LN:63025520 UR:http://www.broadinstitute.org/ftp/pub/seq/references/Homo_sapiens_assembly19.fasta AS:GRCh37 M5:0dec9660ec1efaaf33281c0d5ea2560f SP:Homo Sapiens @RG ID:GATKCopyNumber SM:SM-74P4M-1 CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATIO_POSTERIOR_10 LOG2_COPY_RATIO_POSTERIOR_50 LOG2_COPY_RATIO_POSTERIOR_90 MINOR_ALLELE_FRACTION_POSTERIOR_10 MINOR_ALLELE_FRACTION_POSTERIOR_50 MINOR_ALLELE_FRACTION_POSTERIOR_90 -20 138125 18446024 0 348 NaN NaN NaN 0.322288 0.329600 0.340519 -20 18806046 23807028 0 80 NaN NaN NaN 0.260987 0.274873 0.288961 -20 23842032 37396262 0 315 NaN NaN NaN 0.277454 0.283610 0.291280 -20 37404951 62904542 0 483 NaN NaN NaN 0.490406 0.496253 0.498829 +20 138125 37396262 0 743 NaN NaN NaN 0.295187 0.303751 0.312721 +20 37404951 62904542 0 483 NaN NaN NaN 0.490964 0.496547 0.499700 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-cr-ac-nac.modelBegin.seg b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-cr-ac-nac.modelBegin.seg index e9459ff54bd..9a0db9fbc00 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-cr-ac-nac.modelBegin.seg +++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/model-segments-expected/single-sample-cr-ac-nac.modelBegin.seg @@ -11,6 +11,6 @@ CONTIG START END NUM_POINTS_COPY_RATIO NUM_POINTS_ALLELE_FRACTION LOG2_COPY_RATI 20 25270235 30126381 96 30 1.082384 1.110710 1.129877 0.221805 0.233278 0.250439 20 30132499 31673054 299 8 1.732520 1.745058 1.762498 0.166325 0.184239 0.203376 20 31673576 31677616 3 3 1.397140 1.520348 1.651265 0.458801 0.488136 0.496235 -20 31678263 32700168 131 6 1.630741 1.645129 1.659100 0.218810 0.247490 0.270924 +20 31678263 32700168 131 6 1.630741 1.645129 1.659100 0.218809 0.247486 0.270917 20 32847930 37667438 775 83 1.052254 1.059208 1.066407 0.279490 0.286181 0.292944 20 39316268 62905205 2016 323 0.099098 0.110945 0.118745 0.485522 0.494328 0.499528 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf index 39827ae85b5..7c7fe9a3d02 100644 --- a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf +++ b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf @@ -3668,7 +3668,7 @@ chr9 81151711 . G . . END=81151711 GT:DP:GQ:MIN_DP:PL 0/0:41:79:41:0,7 chr9 81151712 . T . . END=81151728 GT:DP:GQ:MIN_DP:PL 0/0:41:98:40:0,98,1704 chr9 81151729 . T . . END=81151729 GT:DP:GQ:MIN_DP:PL 0/0:40:76:40:0,76,1584 chr9 81151730 . T . . END=81151760 GT:DP:GQ:MIN_DP:PL 0/0:39:92:36:0,92,1218 -chr9 81151761 . A AT, 0 . ASSEMBLED_HAPS=24;AS_RAW_BaseQRankSum=|-1.6,1|NaN;AS_RAW_MQ=111600.00|10800.00|0.00;AS_RAW_MQRankSum=|0.0,1|NaN;AS_RAW_ReadPosRankSum=|0.9,1|NaN;AS_SB_TABLE=9,22|3,0|0,0;BaseQRankSum=-1.529;DP=37;ExcessHet=0.0000;FILTERED_HAPS=20;HAPCOMP=0,0;HAPDOM=0.333,0.00;HEC=35,22,3,2,1,0,0,0,0,0,0,0;MLEAC=0,0;MLEAF=0.00,0.00;MQRankSum=0.000;RAW_MQandDP=133200,37;ReadPosRankSum=0.911;SUSP_NOISY_ADJACENT_TP_VARIANT GT:AD:DP:GQ:PL:SB 0/0:31,3,0:34:39:0,39,79,93,859,133:9,22,3,0 +chr9 81151761 . A AT, 0 . ASSEMBLED_HAPS=24;AS_RAW_BaseQRankSum=|-1.6,1|NaN;AS_RAW_MQ=111600.00|10800.00|0.00;AS_RAW_MQRankSum=|0.0,1|NaN;AS_RAW_ReadPosRankSum=|0.9,1|NaN;AS_SB_TABLE=9,22|3,0|0,0;BaseQRankSum=-1.529;DP=37;ExcessHet=0.0000;FILTERED_HAPS=20;HAPCOMP=2,0;HAPDOM=0.333,0.00;HEC=35,22,3,2,1,0,0,0,0,0,0,0;MLEAC=0,0;MLEAF=0.00,0.00;MQRankSum=0.000;RAW_MQandDP=133200,37;ReadPosRankSum=0.911;SUSP_NOISY_ADJACENT_TP_VARIANT GT:AD:DP:GQ:PL:SB 0/0:31,3,0:34:39:0,39,79,93,859,133:9,22,3,0 chr9 81151762 . C . . END=81151762 GT:DP:GQ:MIN_DP:PL 0/0:35:70:35:0,70,1283 chr9 81151763 . C . . END=81151763 GT:DP:GQ:MIN_DP:PL 0/0:34:57:34:0,57,1259 chr9 81151764 . T . . END=81151768 GT:DP:GQ:MIN_DP:PL 0/0:36:99:36:0,102,1530 @@ -4187,7 +4187,7 @@ chr9 81156094 . A . . END=81156104 GT:DP:GQ:MIN_DP:PL 0/0:25:72:25:0,7 chr9 81156105 . G . . END=81156111 GT:DP:GQ:MIN_DP:PL 0/0:24:66:24:0,66,990 chr9 81156112 . G . . END=81156112 GT:DP:GQ:MIN_DP:PL 0/0:24:36:24:0,36,859 chr9 81156113 . G . . END=81156113 GT:DP:GQ:MIN_DP:PL 0/0:24:69:24:0,69,1035 -chr9 81156114 . G T, 67.64 . ASSEMBLED_HAPS=14;AS_RAW_BaseQRankSum=|1.8,1|NaN;AS_RAW_MQ=39600.00|46800.00|0.00;AS_RAW_MQRankSum=|0.0,1|NaN;AS_RAW_ReadPosRankSum=|0.4,1|NaN;AS_SB_TABLE=5,6|2,11|0,0;BaseQRankSum=1.862;DP=24;ExcessHet=0.0000;FILTERED_HAPS=6;HAPCOMP=2,0;HAPDOM=0.385,0.00;HEC=7,6,6,5,1,1,0;MLEAC=1,0;MLEAF=0.500,0.00;MQRankSum=0.000;RAW_MQandDP=86400,24;ReadPosRankSum=0.435 GT:AD:DP:GQ:PL:SB 0/1:11,13,0:24:40:75,0,40,531,462,536:5,6,2,11 +chr9 81156114 . G T, 67.64 . ASSEMBLED_HAPS=14;AS_RAW_BaseQRankSum=|1.8,1|NaN;AS_RAW_MQ=39600.00|46800.00|0.00;AS_RAW_MQRankSum=|0.0,1|NaN;AS_RAW_ReadPosRankSum=|0.4,1|NaN;AS_SB_TABLE=5,6|2,11|0,0;BaseQRankSum=1.862;DP=24;ExcessHet=0.0000;FILTERED_HAPS=6;HAPCOMP=4,0;HAPDOM=0.385,0.00;HEC=7,6,6,5,1,1,0;MLEAC=1,0;MLEAF=0.500,0.00;MQRankSum=0.000;RAW_MQandDP=86400,24;ReadPosRankSum=0.435 GT:AD:DP:GQ:PL:SB 0/1:11,13,0:24:40:75,0,40,531,462,536:5,6,2,11 chr9 81156115 . T . . END=81156122 GT:DP:GQ:MIN_DP:PL 0/0:23:63:22:0,63,783 chr9 81156123 . A . . END=81156123 GT:DP:GQ:MIN_DP:PL 0/0:23:24:23:0,24,911 chr9 81156124 . A . . END=81156141 GT:DP:GQ:MIN_DP:PL 0/0:23:60:21:0,60,900 @@ -4206,7 +4206,7 @@ chr9 81156182 . A . . END=81156183 GT:DP:GQ:MIN_DP:PL 0/0:16:28:16:0,2 chr9 81156184 . A . . END=81156185 GT:DP:GQ:MIN_DP:PL 0/0:15:13:13:0,13,144 chr9 81156186 . A . . END=81156190 GT:DP:GQ:MIN_DP:PL 0/0:16:42:16:0,42,630 chr9 81156191 . T . . END=81156194 GT:DP:GQ:MIN_DP:PL 0/0:15:36:15:0,36,540 -chr9 81156195 . A C, 103.06 . ASSEMBLED_HAPS=14;AS_RAW_BaseQRankSum=||;AS_RAW_MQ=0.00|50400.00|0.00;AS_RAW_MQRankSum=||;AS_RAW_ReadPosRankSum=||;AS_SB_TABLE=0,0|3,11|0,0;DP=15;ExcessHet=0.0000;FILTERED_HAPS=6;HAPCOMP=2,0;HAPDOM=0.250,0.00;HEC=10,6,5,2,1,1,1,0;MLEAC=2,0;MLEAF=1.00,0.00;RAW_MQandDP=54000,15 GT:AD:DP:GQ:PL:SB 1/1:0,14,0:14:42:117,42,0,595,42,117:0,0,3,11 +chr9 81156195 . A C, 103.06 . ASSEMBLED_HAPS=14;AS_RAW_BaseQRankSum=||;AS_RAW_MQ=0.00|50400.00|0.00;AS_RAW_MQRankSum=||;AS_RAW_ReadPosRankSum=||;AS_SB_TABLE=0,0|3,11|0,0;DP=15;ExcessHet=0.0000;FILTERED_HAPS=6;HAPCOMP=4,0;HAPDOM=0.250,0.00;HEC=10,6,5,2,1,1,1,0;MLEAC=2,0;MLEAF=1.00,0.00;RAW_MQandDP=54000,15 GT:AD:DP:GQ:PL:SB 1/1:0,14,0:14:42:117,42,0,595,42,117:0,0,3,11 chr9 81156196 . A . . END=81156196 GT:DP:GQ:MIN_DP:PL 0/0:15:30:15:0,30,450 chr9 81156197 . T . . END=81156197 GT:DP:GQ:MIN_DP:PL 0/0:15:10:15:0,10,592 chr9 81156198 . C . . END=81156206 GT:DP:GQ:MIN_DP:PL 0/0:15:30:11:0,30,450 diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf.idx b/src/test/resources/org/broadinstitute/hellbender/tools/haplotypecaller/testGvcfWithAssemblyComplexityAnnotationRevamp.expected.flowbased.vcf.idx index 30f6ebd18c024c3b74baa2a4832f470ce6958a22..da9c92451dc9fd6b74174f0919bc0e2ae7191549 100644 GIT binary patch delta 62 zcmV-E0KxzLb1!3VZ*py6ZZB|hZ)#;@baRm-n+5%zG%|yM!-c~E Ug~I}c!vlrG1ck!|wZjIwu~4HMeE getAllAnnotations() { CommandLineParser clp = new CommandLineArgumentParser( new Object(),