diff --git a/.github/workflows/gatk-tests.yml b/.github/workflows/gatk-tests.yml
index 76fa7a9d07e..5d2e7f5f497 100644
--- a/.github/workflows/gatk-tests.yml
+++ b/.github/workflows/gatk-tests.yml
@@ -291,7 +291,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- wdlTest: [ 'RUN_CNV_GERMLINE_COHORT_WDL', 'RUN_CNV_GERMLINE_CASE_WDL', 'RUN_CNV_SOMATIC_WDL', 'RUN_M2_WDL', 'RUN_CNN_WDL', 'RUN_VCF_SITE_LEVEL_FILTERING_WDL' ]
+ wdlTest: [ 'RUN_CNV_GERMLINE_COHORT_WDL', 'RUN_CNV_GERMLINE_CASE_WDL', 'RUN_CNV_SOMATIC_WDL', 'RUN_M2_WDL', 'RUN_VCF_SITE_LEVEL_FILTERING_WDL' ]
continue-on-error: true
name: WDL test ${{ matrix.wdlTest }} on cromwell
steps:
diff --git a/Dockerfile b/Dockerfile
index ceec398a9d3..6349f4088fa 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-ARG BASE_DOCKER=broadinstitute/gatk:gatkbase-3.2.0
+ARG BASE_DOCKER=broadinstitute/gatk:gatkbase-3.3.0
# stage 1 for constructing the GATK zip
FROM ${BASE_DOCKER} AS gradleBuild
@@ -85,7 +85,7 @@ ENV CLASSPATH=/gatk/gatk.jar:$CLASSPATH PATH=$CONDA_PATH/envs/gatk/bin:$CONDA_PA
# Start GATK Python environment
-RUN conda env create -n gatk -f /gatk/gatkcondaenv.yml && \
+RUN conda env create -vv -n gatk -f /gatk/gatkcondaenv.yml && \
echo "source activate gatk" >> /gatk/gatkenv.rc && \
echo "source /gatk/gatk-completion.sh" >> /gatk/gatkenv.rc && \
conda clean -afy && \
diff --git a/build.gradle b/build.gradle
index 9e82637cdfe..1c31efa500b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -684,7 +684,7 @@ task localDevCondaEnv(type: Exec) {
dependsOn 'condaEnvironmentDefinition'
inputs.file("$buildDir/$pythonPackageArchiveName")
workingDir "$buildDir"
- commandLine "conda", "env", "create", "--force", "-f", gatkCondaYML
+ commandLine "conda", "env", "create", "--yes", "-f", gatkCondaYML
}
task javadocJar(type: Jar, dependsOn: javadoc) {
diff --git a/scripts/cnv_cromwell_tests/germline/cnv_germline_case_scattered_workflow.json b/scripts/cnv_cromwell_tests/germline/cnv_germline_case_scattered_workflow.json
index aeb0bb8796d..ab85fe78e83 100644
--- a/scripts/cnv_cromwell_tests/germline/cnv_germline_case_scattered_workflow.json
+++ b/scripts/cnv_cromwell_tests/germline/cnv_germline_case_scattered_workflow.json
@@ -17,8 +17,8 @@
"CNVGermlineCaseScatteredWorkflow.gcnv_max_training_epochs": 1,
"CNVGermlineCaseScatteredWorkflow.gcnv_min_training_epochs": 1,
"CNVGermlineCaseScatteredWorkflow.gcnv_model_tars": [
- "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-0.tar.gz",
- "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-1.tar.gz"],
+ "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-0.tar.gz",
+ "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-1.tar.gz"],
"CNVGermlineCaseScatteredWorkflow.gcnv_num_thermal_advi_iters": 1,
"CNVGermlineCaseScatteredWorkflow.intervals": "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/ice_targets_chr20xy.interval_list",
"CNVGermlineCaseScatteredWorkflow.filtered_intervals": "/home/runner/work/gatk/gatk/src/test/resources/large/cnv_germline_workflows_test_files/ice_targets_chr20xy.preprocessed.filtered.interval_list",
diff --git a/scripts/docker/gatkbase/Dockerfile b/scripts/docker/gatkbase/Dockerfile
index a4ba3ac557a..7f405744c85 100644
--- a/scripts/docker/gatkbase/Dockerfile
+++ b/scripts/docker/gatkbase/Dockerfile
@@ -30,6 +30,7 @@ RUN apt update && \
git \
gpg-agent \
build-essential \
+ libblas-dev \
openjdk-17-jdk \
vim \
software-properties-common && \
diff --git a/scripts/gatkcondaenv.yml.template b/scripts/gatkcondaenv.yml.template
index 75284b829e8..4fa5ae1d805 100644
--- a/scripts/gatkcondaenv.yml.template
+++ b/scripts/gatkcondaenv.yml.template
@@ -15,53 +15,41 @@
name: $condaEnvName
channels:
# if channels other than conda-forge are added and the channel order is changed (note that conda channel_priority is currently set to flexible),
-# verify that key dependencies are installed from the correct channel and compiled against MKL
+# verify that key dependencies are installed from the correct channel
- conda-forge
-- defaults
+
dependencies:
# core python dependencies
-- conda-forge::python=3.6.10 # do not update
-- conda-forge::pip=21.3.1
-- conda-forge::mkl=2019.5 # MKL typically provides dramatic performance increases for theano, tensorflow, and other key dependencies
-- conda-forge::mkl-service=2.3.0
-- conda-forge::joblib=1.1.1 # must pin joblib - versions after 1.1.1 no longer support python 3.6
-- conda-forge::numpy=1.17.5 # do not update, this will break scipy=1.0.0
- # verify that numpy is compiled against MKL (e.g., by checking *_mkl_info using numpy.show_config())
- # and that it is used in tensorflow, theano, and other key dependencies
-- conda-forge::theano=1.0.4 # it is unlikely that new versions of theano will be released
- # verify that this is using numpy compiled against MKL (e.g., by the presence of -lmkl_rt in theano.config.blas.ldflags)
-- defaults::tensorflow=1.15.0 # update only if absolutely necessary, as this may cause conflicts with other core dependencies
- # verify that this is using numpy compiled against MKL (e.g., by checking tensorflow.pywrap_tensorflow.IsMklEnabled())
-- conda-forge::scipy=1.0.0 # do not update, this will break a scipy.misc.logsumexp import (deprecated in scipy=1.0.0) in pymc3=3.1
-- conda-forge::pymc3=3.1 # do not update, this will break gcnvkernel
-- conda-forge::h5py=2.10.0 # required by keras 2.2.4
-- conda-forge::keras=2.2.4 # updated from pip-installed 2.2.0, which caused various conflicts/clobbers of conda-installed packages
- # conda-installed 2.2.4 appears to be the most recent version with a consistent API and without conflicts/clobbers
- # if you wish to update, note that versions of conda-forge::keras after 2.2.5
- # undesirably set the environment variable KERAS_BACKEND = theano by default
-- defaults::intel-openmp=2019.4
-- conda-forge::scikit-learn=0.23.1
-- conda-forge::matplotlib=3.2.1
-- conda-forge::pandas=1.0.3
-- conda-forge::typing_extensions=4.1.1 # see https://github.com/broadinstitute/gatk/issues/7800 and linked PRs
-- conda-forge::dill=0.3.4 # used for pickling lambdas in TrainVariantAnnotationsModel
+- conda-forge::python=3.10.13 # do not update without good reason
+- conda-forge:pip=23.3.1
+- conda-forge:blas=1.0=mkl # our official environment uses MKL versions of various packages; if other versions are desired, users should edit this YML accordingly
+- conda-forge::numpy=1.26.2
+- conda-forge::pymc=5.10.1
+- conda-forge::pytensor=2.18.3
+- conda-forge::scipy=1.11.4
+- conda-forge::h5py=3.10.0
+- conda-forge::pytorch=2.1.0=*mkl*100
+- conda-forge::scikit-learn=1.3.2
+- conda-forge::matplotlib=3.8.2
+- conda-forge::pandas=2.1.3
+- conda-forge::tqdm=4.66.1
+- conda-forge::dill=0.3.7 # used for pickling lambdas in TrainVariantAnnotationsModel
# core R dependencies; these should only be used for plotting and do not take precedence over core python dependencies!
-- r-base=3.6.2
-- r-data.table=1.12.8
-- r-dplyr=0.8.5
-- r-getopt=1.20.3
-- r-ggplot2=3.3.0
-- r-gplots=3.0.3
-- r-gsalib=2.1
-- r-optparse=1.6.4
-- r-backports=1.1.10
+- r-base=4.3.1
+- r-data.table=1.14.8
+- r-dplyr=1.1.3
+- r-getopt=1.20.4
+- r-ggplot2=3.4.4
+- r-gplots=3.1.3
+- r-gsalib=2.2.1
+- r-optparse=1.7.3
+- r-backports=1.4.1
# other python dependencies; these should be removed after functionality is moved into Java code
-- biopython=1.76
-- pyvcf=0.6.8
-- bioconda::pysam=0.15.3 # using older conda-installed versions may result in libcrypto / openssl bugs
+- bioconda::pysam=0.22.0
+- conda-forge::pyvcf=0.6.8
# pip installs should be avoided, as pip may not respect the dependencies found by the conda solver
- pip:
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/DetermineGermlineContigPloidy.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/DetermineGermlineContigPloidy.java
index fcb93e202b9..bb2f7f1f0e9 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/DetermineGermlineContigPloidy.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/DetermineGermlineContigPloidy.java
@@ -67,12 +67,12 @@
*
OpenMP and MKL parallelism can be controlled by setting the OMP_NUM_THREADS
and MKL_NUM_THREADS
* environment variables, respectively.
*
- * Advanced users may wish to set the THEANO_FLAGS
environment variable to override the GATK theano
+ *
Advanced users may wish to set the PYTENSOR_FLAGS
environment variable to override the GATK PyTensor
* configuration. For example, by running
- * THEANO_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk DetermineGermlineContigPloidy ...
, users can specify
- * the theano compilation directory (which is set to $HOME/.theano
by default). See theano documentation
- * at
- * https://theano-pymc.readthedocs.io/en/latest/library/config.html.
+ * PYTENSOR_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk DetermineGermlineContigPloidy ...
, users can specify
+ * the PyTensor compilation directory (which is set to $HOME/.pytensor
by default). See PyTensor documentation
+ * at
+ * https://pytensor.readthedocs.io/en/latest/library/config.html.
*
*
* Tool run modes
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCaller.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCaller.java
index 095ffb76850..aac440912bd 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCaller.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCaller.java
@@ -92,12 +92,12 @@
* OpenMP and MKL parallelism can be controlled by setting the OMP_NUM_THREADS
and MKL_NUM_THREADS
* environment variables, respectively.
*
- * Advanced users may wish to set the THEANO_FLAGS
environment variable to override the GATK theano
+ *
Advanced users may wish to set the PYTENSOR_FLAGS
environment variable to override the GATK PyTensor
* configuration. For example, by running
- * THEANO_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk GermlineCNVCaller ...
, users can specify
- * the theano compilation directory (which is set to $HOME/.theano
by default). See theano documentation
- * at
- * https://theano-pymc.readthedocs.io/en/latest/library/config.html.
+ * PYTENSOR_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk DetermineGermlineContigPloidy ...
, users can specify
+ * the PyTensor compilation directory (which is set to $HOME/.pytensor
by default). See PyTensor documentation
+ * at
+ * https://pytensor.readthedocs.io/en/latest/library/config.html.
*
*
* Resource usage
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/PostprocessGermlineCNVCalls.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/PostprocessGermlineCNVCalls.java
index fa68bb4f34d..b9ac8561e59 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/PostprocessGermlineCNVCalls.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/PostprocessGermlineCNVCalls.java
@@ -89,12 +89,12 @@
* the python environment is already set up. Otherwise, the environment must be created and activated as described in the
* main GATK README.md file.
*
- * Advanced users may wish to set the THEANO_FLAGS
environment variable to override the GATK theano
+ *
Advanced users may wish to set the PYTENSOR_FLAGS
environment variable to override the GATK PyTensor
* configuration. For example, by running
- * THEANO_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk PostprocessGermlineCNVCalls ...
, users can specify
- * the theano compilation directory (which is set to $HOME/.theano
by default). See theano documentation
- * at
- * https://theano-pymc.readthedocs.io/en/latest/library/config.html.
+ * PYTENSOR_FLAGS="base_compiledir=PATH/TO/BASE_COMPILEDIR" gatk DetermineGermlineContigPloidy ...
, users can specify
+ * the PyTensor compilation directory (which is set to $HOME/.pytensor
by default). See PyTensor documentation
+ * at
+ * https://pytensor.readthedocs.io/en/latest/library/config.html.
*
*
* Required inputs:
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotDenoisedCopyRatios.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotDenoisedCopyRatios.java
index 33672cac84f..215b03154fa 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotDenoisedCopyRatios.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotDenoisedCopyRatios.java
@@ -204,8 +204,7 @@ private void writeDenoisingPlots(final String sampleName,
//this runs the R statement "source("CNVPlottingLibrary.R")" before the main script runs
executor.addScript(new Resource(PlottingUtils.CNV_PLOTTING_R_LIBRARY, PlotDenoisedCopyRatios.class));
executor.addScript(new Resource(PLOT_DENOISED_COPY_RATIOS_R_SCRIPT, PlotDenoisedCopyRatios.class));
- //--args is needed for Rscript to recognize other arguments properly
- executor.addArgs("--args",
+ executor.addArgs(
"--sample_name=" + sampleName,
"--standardized_copy_ratios_file=" + CopyNumberArgumentValidationUtils.getCanonicalPath(inputStandardizedCopyRatiosFile),
"--denoised_copy_ratios_file=" + CopyNumberArgumentValidationUtils.getCanonicalPath(inputDenoisedCopyRatiosFile),
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotModeledSegments.java b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotModeledSegments.java
index 89a211cfdd9..424c15880b2 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotModeledSegments.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/copynumber/plotting/PlotModeledSegments.java
@@ -285,8 +285,7 @@ private void writeModeledSegmentsPlot(final String sampleName,
//this runs the R statement "source("CNVPlottingLibrary.R")" before the main script runs
executor.addScript(new Resource(PlottingUtils.CNV_PLOTTING_R_LIBRARY, PlotModeledSegments.class));
executor.addScript(new Resource(PLOT_MODELED_SEGMENTS_R_SCRIPT, PlotModeledSegments.class));
- //--args is needed for Rscript to recognize other arguments properly
- executor.addArgs("--args",
+ executor.addArgs(
"--sample_name=" + sampleName,
"--denoised_copy_ratios_file=" + (inputDenoisedCopyRatiosFile == null ? null : CopyNumberArgumentValidationUtils.getCanonicalPath(inputDenoisedCopyRatiosFile)),
"--allelic_counts_file=" + (inputAllelicCountsFile == null ? null : CopyNumberArgumentValidationUtils.getCanonicalPath(inputAllelicCountsFile)),
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariants.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariants.java
index a17da13b0cf..88e71d7df40 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariants.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariants.java
@@ -103,6 +103,7 @@
* -weights path/to/my_model_folder/2dmodel.hd5
*
*/
+@DeprecatedFeature
@DocumentedFeature
@CommandLineProgramProperties(
summary = CNNScoreVariants.USAGE_SUMMARY,
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantTrain.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantTrain.java
index 32ea3568b10..8fe917a2cff 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantTrain.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantTrain.java
@@ -57,8 +57,8 @@
oneLineSummary = "Train a CNN model for filtering variants",
programGroup = VariantFilteringProgramGroup.class
)
+@DeprecatedFeature
@DocumentedFeature
-@ExperimentalFeature
public class CNNVariantTrain extends CommandLineProgram {
@Argument(fullName = "input-tensor-dir", shortName = "input-tensor-dir", doc = "Directory of training tensors to create.")
diff --git a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantWriteTensors.java b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantWriteTensors.java
index 0fd0ec79e17..49ce59bdd0c 100644
--- a/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantWriteTensors.java
+++ b/src/main/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantWriteTensors.java
@@ -71,8 +71,8 @@
oneLineSummary = "Write variant tensors for training a CNN to filter variants",
programGroup = VariantFilteringProgramGroup.class
)
+@DeprecatedFeature
@DocumentedFeature
-@ExperimentalFeature
public class CNNVariantWriteTensors extends CommandLineProgram {
@Argument(fullName = StandardArgumentDefinitions.REFERENCE_LONG_NAME,
diff --git a/src/main/python/org/broadinstitute/hellbender/README.md b/src/main/python/org/broadinstitute/hellbender/README.md
index 1c57defd1a3..9780f6a7b3d 100644
--- a/src/main/python/org/broadinstitute/hellbender/README.md
+++ b/src/main/python/org/broadinstitute/hellbender/README.md
@@ -4,3 +4,9 @@ can be installed as a standalone package, a corresponding `setup_.
file may be placed in this directory. However, during creation of the common
GATK conda environment, all packages will be combined and pip-installed as a
single package named ``gatkpythonpackages`` by `setup.py`.
+
+However, note that it is easier to do development by installing live/editable versions of these packages
+(i.e., running `pip install --editable .` in this directory), so that any code changes are immediately reflected in
+the underlying environment. To do this, 1) remove the pip install of the `gatkpythonpackages.zip` archive in the
+conda environment file, 2) create and activate the corresponding conda environment, then
+3) run the editable pip install.
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/README.txt b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/README.txt
index da8aa9c131a..92e9c9e3c3d 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/README.txt
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/README.txt
@@ -8,7 +8,7 @@ germline copy number variant (gCNV) tools and workflows.
This module implements inference schemes for read-depth profile denoising, germline
integer copy number variation discovery, germline contig ploidy determination, associated
I/O methods, and helper CLI scripts. `gcnvkernel` additionally provides general-purpose
-inference schemas built on the top of `PyMC3` and `theano`.
+inference schemas built on the top of `PyMC` and `pytensor`.
The module is organized as follows::
@@ -20,7 +20,7 @@ The module is organized as follows::
genomic intervals, read count data, global and sample-specific posteriors, and
sample metadata.
- `gcnvkernel.models`: `PyMC3` model declarations, `theano` symbolic operations (e.g.
+ `gcnvkernel.models`: `PyMC` model declarations, `pytensor` symbolic operations (e.g.
forward-backward algorithm for HMMs), and custom probability distributions.
`gcnvkernel.preprocess`: Routines for filtering interval lists.
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/__init__.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/__init__.py
index 1b76f1d4adf..1cf10633a44 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/__init__.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/__init__.py
@@ -1,4 +1,4 @@
-from pymc3 import __version__ as pymc3_version
+from pymc import __version__ as pymc_version
from ._version import __version__
from .io import io_commons, io_consts, io_ploidy, io_denoising_calling, \
@@ -26,6 +26,6 @@
from .tasks.inference_task_base import ConvergenceError
from .utils import cli_commons, math
-assert pymc3_version == "3.1", "gcnvkernel currently only supports PyMC3 3.1; version found: {0}; " \
- "please upgrade or downgrade the PyMC3 module in your python environment " \
- "accordingly.".format(pymc3_version)
+assert pymc_version == "5.10.1", "gcnvkernel currently only supports PyMC 5.10.1; version found: {0}; " \
+ "please upgrade or downgrade the PyMC module in your python environment " \
+ "accordingly.".format(pymc_version)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/_version.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/_version.py
index 376df7ca596..e46aee1fb54 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/_version.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/_version.py
@@ -1 +1 @@
-__version__ = '0.8'
+__version__ = '0.9'
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/config.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/config.py
index 2afda1e8975..3f1ab955e91 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/config.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/config.py
@@ -1,4 +1,4 @@
-# let theano share memory workspace on large tensors with numpy
+# let pytensor share memory workspace on large tensors with numpy
borrow_numpy = True
# if a normalized PMF violates total probability by the following threshold, it will
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/convergence_tracker.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/convergence_tracker.py
index a5e94592ef3..6bd1663b945 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/convergence_tracker.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/convergence_tracker.py
@@ -1,5 +1,5 @@
import numpy as np
-from pymc3.variational.callbacks import Callback
+from pymc.variational.callbacks import Callback
from ..utils.rls import NonStationaryLinearRegression
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/deterministic_annealing.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/deterministic_annealing.py
index e6524ac3dd2..8e7a901412d 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/deterministic_annealing.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/deterministic_annealing.py
@@ -1,4 +1,4 @@
-import pymc3 as pm
+import pymc as pm
from .. import types
Operator = pm.operators.Operator
@@ -14,16 +14,15 @@ def __init__(self,
"""Initializer.
Args:
- approx: an instance of PyMC3 approximation
- temperature: a scalar shared theano tensor variable
+ approx: an instance of PyMC approximation
+ temperature: a scalar shared pytensor tensor variable
"""
super().__init__(approx)
assert temperature is not None
self.temperature = temperature
def apply(self, f):
- z = self.input
- return self.temperature * self.logq_norm(z) - self.logp_norm(z)
+ return (self.temperature * self.logq_norm - self.logp_norm)[0]
class ADVIDeterministicAnnealing(Inference):
@@ -32,7 +31,7 @@ class ADVIDeterministicAnnealing(Inference):
Note:
Temperature is not updated automatically by this class. This task is delegated to the ADVI step
function. This can be done by including a temperature update in `more_updates`; refer to
- `pymc3.opvi.ObjectiveFunction.step_function` for more information.
+ `pymc.opvi.ObjectiveFunction.step_function` for more information.
"""
def __init__(self,
@@ -40,16 +39,16 @@ def __init__(self,
model=None,
cost_part_grad_scale=1,
scale_cost_to_minibatch=False,
- random_seed=None, start=None,
+ random_seed=None,
+ start=None,
temperature=None):
- assert temperature is not None, "Temperature (a scalar theano shared tensor) is not provided"
+ assert temperature is not None, "Temperature (a scalar pytensor shared tensor) is not provided"
+ approx = MeanField(local_rv=local_rv,
+ model=model,
+ cost_part_grad_scale=cost_part_grad_scale,
+ scale_cost_to_minibatch=scale_cost_to_minibatch,
+ random_seed=random_seed,
+ start=start)
super().__init__(
- KLThermal, MeanField, None,
- local_rv=local_rv,
- model=model,
- cost_part_grad_scale=cost_part_grad_scale,
- scale_cost_to_minibatch=scale_cost_to_minibatch,
- random_seed=random_seed,
- start=start,
- op_kwargs={'temperature': temperature})
+ KLThermal, approx, None, temperature=temperature)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/fancy_optimizers.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/fancy_optimizers.py
index 5eb5b733694..9eff78cbc76 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/fancy_optimizers.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/fancy_optimizers.py
@@ -4,10 +4,10 @@
from typing import List
import numpy as np
-import pymc3 as pm
-import theano as th
-import theano.tensor as tt
-from pymc3.variational.updates import get_or_compute_grads
+import pymc as pm
+import pytensor
+import pytensor.tensor as pt
+from pymc.variational.updates import get_or_compute_grads
from .. import types
from ..io import io_commons
@@ -28,12 +28,12 @@ def get_optimizer(self,
"""
Args:
- model: a generalized continuous PyMC3 model
- approx: an instance of PyMC3 mean-field approximation
+ model: a generalized continuous PyMC model
+ approx: an instance of PyMC mean-field approximation
Returns:
A callable function that upon providing `loss_or_grads` and `params`, returns an
- `OrderedDict` of shared theano tensor updates (for example, see `FancyAdamax.get_optimizer`).
+ `OrderedDict` of shared pytensor tensor updates (for example, see `FancyAdamax.get_optimizer`).
"""
raise NotImplementedError
@@ -139,7 +139,7 @@ def structured_adamax(loss_or_grads=None,
Returns:
returns the function itself if `loss_or_grads` and `params` are not given;
- otherwise, returns an ordered dict of shared tensor updates (to be used in pymc3 for compiling
+ otherwise, returns an ordered dict of shared tensor updates (to be used in pymc for compiling
the step function)
"""
if loss_or_grads is None and params is None:
@@ -160,16 +160,16 @@ def structured_adamax(loss_or_grads=None,
for vmap in vmap_list:
if vmap.var in model.sample_specific_var_registry:
sample_specific_indices += [idx for idx in range(vmap.slc.start, vmap.slc.stop)]
- update_indices = th.shared(np.asarray(sample_specific_indices, dtype=np.int))
+ update_indices = pytensor.shared(np.asarray(sample_specific_indices, dtype=int))
num_dof = len(sample_specific_indices)
- # Using theano constant to prevent upcasting of float32
- one = tt.constant(1)
+ # Using pytensor constant to prevent upcasting of float32
+ one = pt.constant(1)
if disable_bias_correction:
a_t = learning_rate
else:
- res_prev = th.shared(pm.theanof.floatX(beta1))
+ res_prev = pytensor.shared(pm.pytensorf.floatX(beta1))
res = beta1 * res_prev
a_t = learning_rate / (one - res)
updates[res_prev] = res
@@ -179,17 +179,17 @@ def structured_adamax(loss_or_grads=None,
for param, g_t in zip(params, all_grads):
if sample_specific_only:
g_t_view = g_t[update_indices]
- m_prev = th.shared(np.zeros((num_dof,), dtype=types.floatX),
- broadcastable=(False,))
- u_prev = th.shared(np.zeros((num_dof,), dtype=types.floatX),
- broadcastable=(False,))
+ m_prev = pytensor.shared(np.zeros((num_dof,), dtype=types.floatX),
+ broadcastable=(False,))
+ u_prev = pytensor.shared(np.zeros((num_dof,), dtype=types.floatX),
+ broadcastable=(False,))
else:
g_t_view = g_t
value = param.get_value(borrow=True)
- m_prev = th.shared(np.zeros(value.shape, dtype=types.floatX),
- broadcastable=(False,))
- u_prev = th.shared(np.zeros(value.shape, dtype=types.floatX),
- broadcastable=(False,))
+ m_prev = pytensor.shared(np.zeros(value.shape, dtype=types.floatX),
+ broadcastable=(False,))
+ u_prev = pytensor.shared(np.zeros(value.shape, dtype=types.floatX),
+ broadcastable=(False,))
# save a reference to m and u in the base class
if base_class is not None:
@@ -197,11 +197,11 @@ def structured_adamax(loss_or_grads=None,
base_class.u_tensors.append(u_prev)
m_t = beta1 * m_prev + (one - beta1) * g_t_view
- u_t = tt.maximum(beta2 * u_prev, abs(g_t_view))
+ u_t = pt.maximum(beta2 * u_prev, abs(g_t_view))
step = a_t * m_t / (u_t + epsilon)
if sample_specific_only:
- new_param = tt.inc_subtensor(param[update_indices], -step)
+ new_param = pt.inc_subtensor(param[update_indices], -step)
else:
new_param = param - step
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/param_tracker.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/param_tracker.py
index c3dc0b83a0e..594e8ea3ffb 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/param_tracker.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/inference/param_tracker.py
@@ -1,5 +1,5 @@
import numpy as np
-import pymc3 as pm
+import pymc as pm
from typing import Callable, Dict
from ..io import io_commons
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_commons.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_commons.py
index bb8a407a878..5ff7e975353 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_commons.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_commons.py
@@ -6,9 +6,10 @@
import pandas as pd
from ast import literal_eval as make_tuple
from typing import List, Optional, Tuple, Set, Dict
+import collections
import numpy as np
-import pymc3 as pm
+import pymc as pm
from . import io_consts
from .._version import __version__ as gcnvkernel_version
@@ -17,6 +18,10 @@
_logger = logging.getLogger(__name__)
+# originally in pymc3.blocking in PyMC3 3.5
+VarMap = collections.namedtuple('VarMap', 'var, slc, shp, dtyp')
+
+
def read_csv(input_file: str,
dtypes_dict: Dict[str, object] = None,
mandatory_columns_set: Set[str] = None,
@@ -268,30 +273,36 @@ def read_ndarray_from_tsv(input_file: str,
return df.values.reshape(shape)
-def get_var_map_list_from_mean_field_approx(approx: pm.MeanField) -> List[pm.blocking.VarMap]:
- """Extracts the variable-to-linear-array of a PyMC3 mean-field approximation.
+def get_var_map_list_from_mean_field_approx(approx: pm.MeanField) -> List[VarMap]:
+ """Extracts the variable-to-linear-array of a PyMC mean-field approximation.
Args:
- approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC mean-field approximation
Returns:
- A list of `pymc3.blocking.VarMap`
+ A list of VarMap
"""
- if pm.__version__ == "3.1":
- return approx.gbij.ordering.vmap
- elif pm.__version__ == "3.2":
- return approx.bij.ordering.vmap
- else:
- raise Exception("Unsupported PyMC3 version")
+ # Originally, with PyMC3 3.5, this simply returned a List[pymc3.blocking.VarMap]:
+ # return approx.bij.ordering.vmap
+ # However, changes were made to the API and the VarMap class was obviated by the use of Xarray, see:
+ # https://discourse.pymc.io/t/how-to-get-named-means-and-sds-from-advi-fit/11073
+ # Unfortunately, this new functionality appears to be somewhat brittle and yields an error in our use case.
+ # We instead bring the old VarMap class into this module and recreate the old functionality to
+ # preserve our preexisting interfaces.
+ var_map_list = []
+ for var, slc, shp, dtyp in approx.ordering.values():
+ var_map_list.append(VarMap(var, slc, shp, dtyp))
+ return var_map_list
+
def extract_mean_field_posterior_parameters(approx: pm.MeanField) \
-> Tuple[Set[str], Dict[str, np.ndarray], Dict[str, np.ndarray]]:
"""Extracts mean-field posterior parameters in the right shape and dtype from an instance
- of PyMC3 mean-field approximation.
+ of PyMC mean-field approximation.
Args:
- approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC mean-field approximation
Returns:
A tuple (set of variable names,
@@ -373,7 +384,7 @@ def write_mean_field_sample_specific_params(sample_index: int,
approx_std_map: Dict[str, np.ndarray],
model: GeneralizedContinuousModel,
extra_comment_lines: Optional[List[str]] = None):
- """Writes sample-specific parameters contained in an instance of PyMC3 mean-field approximation
+ """Writes sample-specific parameters contained in an instance of PyMC mean-field approximation
to disk.
Args:
@@ -405,11 +416,11 @@ def write_mean_field_sample_specific_params(sample_index: int,
def write_mean_field_global_params(output_path: str,
approx: pm.MeanField,
model: GeneralizedContinuousModel):
- """Writes global parameters contained in an instance of PyMC3 mean-field approximation to disk.
+ """Writes global parameters contained in an instance of PyMC mean-field approximation to disk.
Args:
output_path: output path (must be writable)
- approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC mean-field approximation
model: the generalized model corresponding to the provided mean-field approximation
"""
# parse mean-field posterior parameters
@@ -437,7 +448,7 @@ def read_mean_field_global_params(input_model_path: str,
Args:
input_model_path: input model path
- approx: an instance of PyMC3 mean-field approximation to be updated
+ approx: an instance of PyMC mean-field approximation to be updated
model: the generalized model corresponding to the provided mean-field approximation and the saved
instance
"""
@@ -460,7 +471,7 @@ def _update_param_inplace(param, slc, dtype, new_value):
var_mu = read_ndarray_from_tsv(var_mu_input_file)
var_std = read_ndarray_from_tsv(var_std_input_file)
- # convert std to rho, see pymc3.dist_math.sd2rho
+ # convert std to rho, see pymc.dist_math.sd2rho
var_rho = np.log(np.exp(var_std) - 1)
del var_std
@@ -491,7 +502,7 @@ def read_mean_field_sample_specific_params(input_sample_calls_path: str,
sample_index: index of the sample in the current instance of model/approximation
sample_name: name of the sample in the current instance of model/approximation
(used to check whether `input_sample_calls_path` actually corresponds to the sample)
- approx: an instance of PyMC3 mean-field approximation corresponding to the provided model
+ approx: an instance of PyMC mean-field approximation corresponding to the provided model
model: the generalized model corresponding to the provided mean-field approximation
Returns:
@@ -548,7 +559,7 @@ def _update_param_inplace(_param: np.ndarray,
var_mu = read_ndarray_from_tsv(var_mu_input_file)
var_std = read_ndarray_from_tsv(var_std_input_file)
- # convert std to rho, see pymc3.dist_math.sd2rho
+ # convert std to rho, see pymc.dist_math.sd2rho
var_rho = np.log(np.exp(var_std) - 1)
del var_std
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_denoising_calling.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_denoising_calling.py
index d0f9d24f59c..416c0c9c93d 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_denoising_calling.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_denoising_calling.py
@@ -3,7 +3,7 @@
from typing import List, Optional
import numpy as np
-import pymc3 as pm
+import pymc as pm
from . import io_commons
from . import io_consts
@@ -155,9 +155,9 @@ def __call__(self):
# compute approximate denoised copy ratios
_logger.info("Sampling and approximating posteriors for denoised copy ratios...")
denoising_copy_ratios_st_approx_generator = commons.get_sampling_generator_for_model_approximation(
- model_approx=self.denoising_model_approx, node=self.denoising_model['denoised_copy_ratio_st'],
+ approx=self.denoising_model_approx, node=self.denoising_model['denoised_copy_ratio_st'],
num_samples=self.denoising_config.num_samples_copy_ratio_approx)
- mu_denoised_copy_ratio_st, var_denoised_copy_ratio_st =\
+ mu_denoised_copy_ratio_st, var_denoised_copy_ratio_st = \
math.calculate_mean_and_variance_online(denoising_copy_ratios_st_approx_generator)
std_denoised_copy_ratio_st = np.sqrt(var_denoised_copy_ratio_st)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_ploidy.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_ploidy.py
index 1acc4a43c61..49a850733d5 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_ploidy.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/io/io_ploidy.py
@@ -3,7 +3,7 @@
from typing import List, Dict
import numpy as np
-import pymc3 as pm
+import pymc as pm
from . import io_commons
from . import io_consts
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/commons.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/commons.py
index 01f91a3fc36..5506cd3b107 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/commons.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/commons.py
@@ -1,9 +1,12 @@
import numpy as np
import logging
-import theano.tensor as tt
-import pymc3 as pm
-import theano as th
-import pymc3.distributions.dist_math as pm_dist_math
+import pytensor
+import pytensor.tensor as pt
+from pytensor.graph.replace import graph_replace
+import pymc as pm
+import pymc.distributions.dist_math as pm_dist_math
+from pymc.util import makeiter
+from pymc.variational.opvi import _known_scan_ignored_inputs
from typing import Tuple, Generator
_logger = logging.getLogger(__name__)
@@ -51,7 +54,7 @@ def negative_binomial_logp(mu, alpha, value):
Returns:
symbolic negative binomial logp
"""
- return pm_dist_math.bound(pm_dist_math.binomln(value + alpha - 1, value)
+ return pm_dist_math.check_parameters(pm_dist_math.binomln(value + alpha - 1, value)
+ pm_dist_math.logpow(mu / (mu + alpha), value)
+ pm_dist_math.logpow(alpha / (mu + alpha), alpha),
mu > 0, value >= 0, alpha > 0)
@@ -72,7 +75,7 @@ def negative_binomial_gaussian_approx_logp(mu, alpha, value):
symbolic approximate negative binomial logp
"""
tau = alpha / (mu * (alpha + mu)) # precision
- return pm_dist_math.bound(0.5 * (tt.log(tau) - _log_2_pi - tau * tt.square(value - mu)),
+ return pm_dist_math.check_parameters(0.5 * (pt.log(tau) - _log_2_pi - tau * pt.square(value - mu)),
mu > 0, value >= 0, alpha > 0)
@@ -107,8 +110,8 @@ def centered_heavy_tail_logp(mu, value):
Returns:
symbolic logp
"""
- return pm_dist_math.bound(tt.log(1.0 + 2.0 * mu) + 2.0 * mu * tt.log(value)
- - 2.0 * (1.0 + mu) * tt.log(1.0 + value),
+ return pm_dist_math.check_parameters(pt.log(1.0 + 2.0 * mu) + 2.0 * mu * pt.log(value)
+ - 2.0 * (1.0 + mu) * pt.log(1.0 + value),
mu >= 0, value > 0)
@@ -120,10 +123,10 @@ def safe_logaddexp(a, b):
symbolic log(exp(a) + exp(b))
"""
diff = b - a
- safe_diff = tt.switch(tt.isnan(diff), 0, diff)
- return tt.switch(safe_diff >= 0,
- b + tt.log1p(tt.exp(-safe_diff)),
- a + tt.log1p(tt.exp(safe_diff)))
+ safe_diff = pt.switch(pt.isnan(diff), 0, diff)
+ return pt.switch(safe_diff >= 0,
+ b + pt.log1p(pt.exp(-safe_diff)),
+ a + pt.log1p(pt.exp(safe_diff)))
def get_jensen_shannon_divergence(log_p_1, log_p_2):
@@ -136,12 +139,12 @@ def get_jensen_shannon_divergence(log_p_1, log_p_2):
Returns:
Symbolic Jensen-Shannon distance
"""
- p_1 = tt.exp(log_p_1)
- p_2 = tt.exp(log_p_2)
+ p_1 = pt.exp(log_p_1)
+ p_2 = pt.exp(log_p_2)
diff_12 = p_1 - p_2
log_diff_12 = log_p_1 - log_p_2
- safe_log_diff_12 = tt.switch(tt.isnan(log_diff_12), 0, log_diff_12)
- return 0.5 * tt.sum(diff_12 * safe_log_diff_12, axis=-1)
+ safe_log_diff_12 = pt.switch(pt.isnan(log_diff_12), 0, log_diff_12)
+ return 0.5 * pt.sum(diff_12 * safe_log_diff_12, axis=-1)
def get_hellinger_distance(log_p_1, log_p_2):
@@ -154,9 +157,9 @@ def get_hellinger_distance(log_p_1, log_p_2):
Returns:
Symbolic Hellinger distance
"""
- p_1 = tt.exp(log_p_1)
- p_2 = tt.exp(log_p_2)
- return tt.sqrt(tt.sum(tt.square(tt.sqrt(p_1) - tt.sqrt(p_2)), axis=-1)) / tt.sqrt(2)
+ p_1 = pt.exp(log_p_1)
+ p_2 = pt.exp(log_p_2)
+ return pt.sqrt(pt.sum(pt.square(pt.sqrt(p_1) - pt.sqrt(p_2)), axis=-1)) / pt.sqrt(2)
def perform_genotyping(log_p: np.ndarray) -> Tuple[int, float]:
@@ -179,67 +182,66 @@ def perform_genotyping(log_p: np.ndarray) -> Tuple[int, float]:
phred_genotype_quality = _10_inv_log_10 * (sorted_log_p[0][1] - sorted_log_p[1][1])
return max_likely_genotype_idx, phred_genotype_quality
+# PyMC/pytensor logsumexp doesn't include the stability trick, so we port the PyMC3/theano version here for consistency
+def logsumexp(x, axis=None):
+ # Adapted from https://github.com/Theano/Theano/issues/1563
+ x_max = pt.max(x, axis=axis, keepdims=True)
+ return pt.log(pt.sum(pt.exp(x - x_max), axis=axis, keepdims=True)) + x_max
-def stochastic_node_mean_symbolic(approx: pm.MeanField, node, size=100,
- more_replacements=None, shape=None, dtype=None):
+def stochastic_node_mean_symbolic(approx: pm.MeanField, node, size=100):
"""Symbolic mean of a given PyMC3 stochastic node with respect to a given variational
posterior approximation.
-
Args:
approx: an instance of PyMC3 approximation
node: stochastic node
size: the number of samples to use for calculating the mean
- more_replacements: (optional) an ordered dictionary of node replacements to be
- applied to the computational graph before sampling
- shape: (optional) shape of the node
- dtype: (optional) dtype of the node
-
- Raises:
- ValueError: If `node.tag.test_value` is not present and `shape` and `dtype` are
- not provided
-
Returns:
Symbolic approximate mean of the stochastic node
"""
assert size > 0
- if shape is not None and dtype is not None:
- cum_sum = tt.zeros(shape, dtype)
- elif hasattr(node.tag, 'test_value') and node.tag.test_value is not None:
- cum_sum = tt.zeros(node.tag.test_value.shape, node.tag.test_value.dtype)
- else:
- raise ValueError("Can not determine the shape of the node to be sampled")
-
- if more_replacements is not None:
- node = th.clone(node, more_replacements, strict=False)
- posterior_samples = approx.random(size)
+ cum_sum = pt.zeros(node.shape, node.dtype)
+ # see Approximation.sample_node()
+ node = approx.model.replace_rvs_by_values([node])
+ node = node[0]
node = approx.to_flat_input(node)
+ posterior_samples = approx.symbolic_random.astype(approx.symbolic_initial.dtype)
+ posterior_samples = pt.specify_shape(posterior_samples, approx.symbolic_initial.type.shape)
+ posterior_samples = approx.set_size_and_deterministic(posterior_samples, s=size, d=False)
def add_sample_to_cum_sum(posterior_sample, _cum_sum):
- new_sample = th.clone(node, {approx.input: posterior_sample}, strict=False)
- return _cum_sum + tt.patternbroadcast(new_sample, _cum_sum.broadcastable)
+ new_sample = graph_replace(node, {approx.input: posterior_sample}, strict=False)
+ return _cum_sum + new_sample
- outputs, _ = th.scan(add_sample_to_cum_sum,
- sequences=[posterior_samples],
- outputs_info=[cum_sum],
- n_steps=size)
+ outputs, _ = pytensor.scan(add_sample_to_cum_sum,
+ sequences=posterior_samples,
+ non_sequences=_known_scan_ignored_inputs(makeiter(posterior_samples)),
+ outputs_info=cum_sum,
+ n_steps=size)
return outputs[-1] / size
-
-def get_sampling_generator_for_model_approximation(model_approx: pm.MeanField, node,
+def get_sampling_generator_for_model_approximation(approx: pm.MeanField, node,
num_samples: int = 20) -> Generator:
"""Get a generator that returns samples of a precomputed model approximation for a specific variable in that model
-
Args:
- model_approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC3 mean-field approximation
node: a stochastic node in the model
num_samples: number of samples to draw
-
Returns:
A generator that will yield `num_samples` samples from an approximation to a posterior
"""
- sample = model_approx.sample_node(node, size=1)[0]
- return (sample.eval() for _ in range(num_samples))
+ assert num_samples > 0
+
+ # see Approximation.sample_node()
+ node = approx.model.replace_rvs_by_values([node])
+ node = node[0]
+ node_sample = approx.symbolic_sample_over_posterior(node)
+ node_sample = approx.set_size_and_deterministic(node_sample, s=1, d=False)
+ # must use compile_pymc to pass random_seed for reproducible sampling
+ node_sample_func = pm.pytensorf.compile_pymc(inputs=[], outputs=node_sample,
+ random_seed=approx.rng.randint(2**30, dtype=np.int64))
+
+ return (node_sample_func()[0] for _ in range(num_samples))
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/dists.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/dists.py
deleted file mode 100644
index f8db4241d59..00000000000
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/dists.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from pymc3.distributions.continuous import PositiveContinuous,\
- assert_negative_support, bound, gammaln, get_variable_name
-import theano.tensor as tt
-
-
-class PositiveFlatTop(PositiveContinuous):
- """A positive continuous two-parameter flat-top distribution with super-exponential light tail.
- The pdf of this distribution is given as:
-
- p(x) \propto \exp(-(x/u)^k)
-
- Here, `u` is the soft upper bound of the distribution and `k` is the decay exponent.
- In the limit `k` \rightarrow \infty, p(x) converges to the uniform distribution in [0, u].
- The case `k` = 2 corresponds to the half-normal distribution.
-
- """
- def __init__(self, u, k, *args, **kwargs):
- """Initializer.
-
- Args:
- u: soft upper bound of the distribution (positive)
- k: decay exponent (positive)
- """
- super(PositiveFlatTop, self).__init__(*args, **kwargs)
- self.u = u = tt.as_tensor_variable(u)
- self.k = k = tt.as_tensor_variable(k)
-
- assert_negative_support(u, 'u', 'PositiveFlatTop')
- assert_negative_support(k, 'k', 'PositiveFlatTop')
-
- def random(self, point=None, size=None, repeat=None):
- raise NotImplementedError
-
- def logp(self, value):
- u = self.u
- k = self.k
- logp = -tt.pow(value / u, k) - tt.log(u) - gammaln(1 + tt.inv(k))
- return bound(logp, value > 0, u > 0, k > 0)
-
- def _repr_latex_(self, name=None, dist=None):
- if dist is None:
- dist = self
- u = dist.u
- k = dist.k
- return r'${} \sim \text{{FlatTop}}(\mathit{{u}}={0}, \mathit{{k}}={1})$'.format(
- name, get_variable_name(u), get_variable_name(k))
-
-
-class HalfFlat(PositiveContinuous):
- """Improper flat prior over the positive reals."""
-
- def __init__(self, *args, **kwargs):
- self._default = 1
- super(HalfFlat, self).__init__(defaults=('_default',), *args, **kwargs)
-
- def random(self, point=None, size=None, repeat=None):
- raise ValueError('Cannot sample from HalfFlat distribution')
-
- def logp(self, value):
- return bound(tt.zeros_like(value), value > 0)
-
- def _repr_latex_(self, name=None, dist=None):
- return r'${} \sim \text{{HalfFlat}}()$'.format(name)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/fancy_model.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/fancy_model.py
index fe5bf80c006..ec6d1a86829 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/fancy_model.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/fancy_model.py
@@ -1,14 +1,14 @@
-import pymc3 as pm
+import pymc as pm
import logging
-from pymc3 import Model
+from pymc import Model
from typing import Optional, Set, Dict
_logger = logging.getLogger(__name__)
class GeneralizedContinuousModel(Model):
- """An extension of PyMC3 `Model` class with the added functionality of labeling RVs
+ """An extension of PyMC `Model` class with the added functionality of labeling RVs
as either global or sample-specific (for the purpose of I/O, and structured optimization).
"""
def __init__(self):
@@ -17,12 +17,9 @@ def __init__(self):
self.sample_specific_var_registry: Dict[str, int] = dict()
super().__init__()
- @staticmethod
- def _get_var_name(var) -> str:
+ def _get_var_name(self, var) -> str:
assert hasattr(var, 'name')
- name = var.name
- if hasattr(var, 'transformed'):
- name = var.transformed.name
+ name = self.rvs_to_values[var].name
return name
def _assert_var_is_unannotated(self, var):
@@ -36,7 +33,7 @@ def register_as_global(self, var):
"""Register a variable as global.
Args:
- var: a PyMC3 free variable
+ var: a PyMC free variable
Returns:
None
@@ -49,7 +46,7 @@ def register_as_sample_specific(self, var, sample_axis: int):
"""Register a variable as sample-specific.
Args:
- var: a PyMC3 free variable
+ var: a PyMC free variable
sample_axis: axis corresponding to sample index (it is used for slicing `var` to obtain single-sample
parameters)
@@ -64,7 +61,7 @@ def verify_var_registry(self):
"""Verifies that all variables are registered as either as global or sample-specific."""
_logger.info("Global model variables: " + str(self.global_var_registry))
_logger.info("Sample-specific model variables: " + str(set(self.sample_specific_var_registry.keys())))
- model_var_set = {self._get_var_name(var) for var in self.vars}
+ model_var_set = {self._get_var_name(var) for var in self.free_RVs}
unannotated_vars = model_var_set \
.difference(self.global_var_registry) \
.difference(set(self.sample_specific_var_registry.keys()))
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_denoising_calling.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_denoising_calling.py
index 63ef4f9e86f..6aa7d127575 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_denoising_calling.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_denoising_calling.py
@@ -7,17 +7,17 @@
from typing import List, Tuple, Set, Dict, Optional
import numpy as np
-import pymc3 as pm
+import pymc as pm
import scipy.sparse as sp
-import theano as th
-import theano.sparse as tst
-import theano.tensor as tt
-from pymc3 import Normal, Deterministic, DensityDist, Lognormal, Exponential
+import pytensor
+import pytensor.sparse as pst
+import pytensor.tensor as pt
+from pytensor.tensor.shape import unbroadcast
+from pymc import Normal, Deterministic, Potential, Lognormal, Exponential, TruncatedNormal, Uniform
from . import commons
-from .dists import HalfFlat
from .fancy_model import GeneralizedContinuousModel
-from .theano_hmm import TheanoForwardBackward
+from .pytensor_hmm import PytensorForwardBackward
from .. import config, types
from ..structs.interval import Interval, GCContentAnnotation
from ..structs.metadata import SampleMetadataCollection
@@ -26,6 +26,7 @@
_logger = logging.getLogger(__name__)
_eps = commons.eps
+_ard_upper_bound = 1E10
class DenoisingModelConfig:
@@ -330,7 +331,7 @@ def initialize_posterior(denoising_config: DenoisingModelConfig,
# interval class log posterior probs
class_probs_k = np.asarray([1.0 - calling_config.p_active, calling_config.p_active], dtype=types.floatX)
log_q_tau_tk = np.tile(np.log(class_probs_k), (shared_workspace.num_intervals, 1))
- shared_workspace.log_q_tau_tk = th.shared(log_q_tau_tk, name="log_q_tau_tk", borrow=config.borrow_numpy)
+ shared_workspace.log_q_tau_tk = pytensor.shared(log_q_tau_tk, name="log_q_tau_tk", borrow=config.borrow_numpy)
# copy number log posterior probs
log_q_c_stc = np.zeros((shared_workspace.num_samples, shared_workspace.num_intervals,
@@ -345,11 +346,11 @@ def initialize_posterior(denoising_config: DenoisingModelConfig,
sample_log_pi_jc = np.log(np.sum(sample_pi_jkc * class_probs_k[np.newaxis, :, np.newaxis], axis=1))
for ti in range(shared_workspace.num_intervals):
log_q_c_stc[si, ti, :] = sample_log_pi_jc[t_to_j_map[ti], :]
- shared_workspace.log_q_c_stc = th.shared(log_q_c_stc, name="log_q_c_stc", borrow=config.borrow_numpy)
+ shared_workspace.log_q_c_stc = pytensor.shared(log_q_c_stc, name="log_q_c_stc", borrow=config.borrow_numpy)
class DenoisingCallingWorkspace:
- """This class contains objects (numpy arrays, theano tensors, etc) shared between the denoising model
+ """This class contains objects (numpy arrays, pytensor tensors, etc) shared between the denoising model
and the copy number caller."""
def __init__(self,
denoising_config: DenoisingModelConfig,
@@ -381,7 +382,7 @@ def __init__(self,
contig_to_j_map = {contig: self.contig_list.index(contig) for contig in self.contig_list}
t_to_j_map = np.asarray([contig_to_j_map[interval.contig] for interval in interval_list],
dtype=types.small_uint)
- self.t_to_j_map: types.TensorSharedVariable = th.shared(
+ self.t_to_j_map: types.TensorSharedVariable = pytensor.shared(
t_to_j_map, name="t_to_j_map", borrow=config.borrow_numpy)
self.global_read_depth_s, average_ploidy_s, self.baseline_copy_number_sj = \
@@ -393,22 +394,23 @@ def __init__(self,
"The highest contig ploidy ({0}) must be smaller or equal to the highest copy number state ({1})".format(
max_baseline_copy_number, calling_config.max_copy_number)
- # shared theano tensors from the input data
- self.n_st: types.TensorSharedVariable = th.shared(
+ # shared pytensor tensors from the input data
+ self.n_st: types.TensorSharedVariable = pytensor.shared(
n_st.astype(types.med_uint), name="n_st", borrow=config.borrow_numpy)
- self.average_ploidy_s: types.TensorSharedVariable = th.shared(
+ self.average_ploidy_s: types.TensorSharedVariable = pytensor.shared(
average_ploidy_s.astype(types.floatX), name="average_ploidy_s", borrow=config.borrow_numpy)
# copy-number event stay probability
self.dist_t = np.asarray([self.interval_list[ti + 1].distance(self.interval_list[ti])
for ti in range(self.num_intervals - 1)])
cnv_stay_prob_t = np.exp(-self.dist_t / calling_config.cnv_coherence_length)
- self.cnv_stay_prob_t = th.shared(cnv_stay_prob_t, name='cnv_stay_prob_t', borrow=config.borrow_numpy)
+ self.cnv_stay_prob_t = pytensor.shared(cnv_stay_prob_t, name='cnv_stay_prob_t', borrow=config.borrow_numpy)
# copy number values for each copy number state
copy_number_values_c = np.arange(0, calling_config.num_copy_number_states, dtype=types.small_uint)
- self.copy_number_values_c = th.shared(copy_number_values_c, name='copy_number_values_c',
- borrow=config.borrow_numpy)
+ self.copy_number_values_c = pytensor.shared(copy_number_values_c, name='copy_number_values_c',
+ borrow=config.borrow_numpy)
+
# copy number log posterior and derived quantities (to be initialized by `PosteriorInitializer`)
self.log_q_c_stc: Optional[types.TensorSharedVariable] = None
@@ -424,7 +426,7 @@ def __init__(self,
# copy number emission log posterior
log_copy_number_emission_stc = np.zeros(
(self.num_samples, self.num_intervals, calling_config.num_copy_number_states), dtype=types.floatX)
- self.log_copy_number_emission_stc: types.TensorSharedVariable = th.shared(
+ self.log_copy_number_emission_stc: types.TensorSharedVariable = pytensor.shared(
log_copy_number_emission_stc, name="log_copy_number_emission_stc", borrow=config.borrow_numpy)
# class log posterior (to be initialized by `PosteriorInitializer`)
@@ -448,7 +450,7 @@ def __init__(self,
# GC bias factors
# (to be initialized by calling `initialize_bias_inference_vars`)
- self.W_gc_tg: Optional[tst.SparseConstant] = None
+ self.W_gc_tg: Optional[pst.SparseConstant] = None
# auxiliary data structures for hybrid q_c_expectation_mode calculation
# (to be initialized by calling `initialize_bias_inference_vars`)
@@ -456,7 +458,7 @@ def __init__(self,
# denoised copy ratios
denoised_copy_ratio_st = np.zeros((self.num_samples, self.num_intervals), dtype=types.floatX)
- self.denoised_copy_ratio_st: types.TensorSharedVariable = th.shared(
+ self.denoised_copy_ratio_st: types.TensorSharedVariable = pytensor.shared(
denoised_copy_ratio_st, name="denoised_copy_ratio_st", borrow=config.borrow_numpy)
# initialize posterior
@@ -475,7 +477,7 @@ def initialize_copy_number_class_inference_vars(self):
# class emission log posterior
log_class_emission_tk = np.zeros(
(self.num_intervals, self.calling_config.num_copy_number_classes), dtype=types.floatX)
- self.log_class_emission_tk: types.TensorSharedVariable = th.shared(
+ self.log_class_emission_tk: types.TensorSharedVariable = pytensor.shared(
log_class_emission_tk, name="log_class_emission_tk", borrow=True)
# class assignment prior probabilities
@@ -484,7 +486,7 @@ def initialize_copy_number_class_inference_vars(self):
# The second class is a CNV-active class (all copy number states are equally probable)
class_probs_k = np.asarray([1.0 - self.calling_config.p_active, self.calling_config.p_active],
dtype=types.floatX)
- self.class_probs_k: types.TensorSharedVariable = th.shared(
+ self.class_probs_k: types.TensorSharedVariable = pytensor.shared(
class_probs_k, name='class_probs_k', borrow=config.borrow_numpy)
# class Markov chain log prior (initialized here and remains constant throughout)
@@ -515,7 +517,7 @@ def update_auxiliary_vars(self):
# MAP copy number call
if self.c_map_st is None:
c_map_st = np.zeros((self.num_samples, self.num_intervals), dtype=types.small_uint)
- self.c_map_st = th.shared(c_map_st, name="c_map_st", borrow=config.borrow_numpy)
+ self.c_map_st = pytensor.shared(c_map_st, name="c_map_st", borrow=config.borrow_numpy)
self.c_map_st.set_value(
np.argmax(self.log_q_c_stc.get_value(borrow=True), axis=2).astype(types.small_uint),
borrow=config.borrow_numpy)
@@ -524,7 +526,7 @@ def update_auxiliary_vars(self):
_logger.debug("Updating CNV-active class bitmask...")
if self.active_class_bitmask_t is None:
active_class_bitmask_t = np.zeros((self.num_intervals,), dtype=bool)
- self.active_class_bitmask_t = th.shared(
+ self.active_class_bitmask_t = pytensor.shared(
active_class_bitmask_t, name="active_class_bitmask_t", borrow=config.borrow_numpy)
# bitmask for intervals of which the probability of being in the silent class is below 0.5
@@ -590,8 +592,8 @@ def _get_log_trans_tkk(dist_t: np.ndarray,
return np.log(trans_tkl)
@staticmethod
- def _create_sparse_gc_bin_tensor_tg(interval_list: List[Interval], num_gc_bins: int) -> tst.SparseConstant:
- """Creates a sparse 2d theano tensor with shape (num_intervals, gc_bin). The sparse
+ def _create_sparse_gc_bin_tensor_tg(interval_list: List[Interval], num_gc_bins: int) -> pst.SparseConstant:
+ """Creates a sparse 2d pytensor tensor with shape (num_intervals, gc_bin). The sparse
tensor represents a 1-hot mapping of each interval to its GC bin index. The range [0, 1]
is uniformly divided into num_gc_bins.
"""
@@ -609,8 +611,8 @@ def get_gc_bin_idx(gc_content):
indptr = np.arange(0, num_intervals + 1)
scipy_gc_matrix = sp.csr_matrix((data, indices, indptr), shape=(num_intervals, num_gc_bins),
dtype=types.small_uint)
- theano_gc_matrix: tst.SparseConstant = tst.as_sparse(scipy_gc_matrix)
- return theano_gc_matrix
+ pytensor_gc_matrix: pst.SparseConstant = pst.as_sparse(scipy_gc_matrix)
+ return pytensor_gc_matrix
@staticmethod
def _get_baseline_copy_number_and_read_depth(sample_metadata_collection: SampleMetadataCollection,
@@ -700,8 +702,10 @@ def get_init_ard_u(self) -> np.ndarray:
class DenoisingModel(GeneralizedContinuousModel):
+ # PR #8561 some broadcastable arguments in the distributions below in PyMC3 were removed
"""The gCNV coverage denoising model declaration (continuous RVs only; discrete posteriors are assumed
to be given)."""
+ @pytensor.config.change_flags(compute_test_value="off")
def __init__(self,
denoising_model_config: DenoisingModelConfig,
shared_workspace: DenoisingCallingWorkspace,
@@ -715,25 +719,22 @@ def __init__(self,
# interval-specific unexplained variance
psi_t = Exponential(name='psi_t', lam=1.0 / denoising_model_config.psi_t_scale,
- shape=(shared_workspace.num_intervals,),
- broadcastable=(False,))
+ shape=(shared_workspace.num_intervals,))
register_as_global(psi_t)
# sample-specific unexplained variance
psi_s = Exponential(name='psi_s', lam=1.0 / denoising_model_config.psi_s_scale,
- shape=(shared_workspace.num_samples,),
- broadcastable=(False,))
+ shape=(shared_workspace.num_samples,))
register_as_sample_specific(psi_s, sample_axis=0)
# convert "unexplained variance" to negative binomial over-dispersion
- alpha_st = tt.maximum(tt.inv(tt.exp(psi_t.dimshuffle('x', 0) + psi_s.dimshuffle(0, 'x')) - 1.0),
+ alpha_st = pt.maximum(pt.reciprocal(pt.exp(psi_t.dimshuffle('x', 0) + psi_s.dimshuffle(0, 'x')) - 1.0),
_eps)
# interval-specific mean log bias
- log_mean_bias_t = Normal(name='log_mean_bias_t', mu=0.0, sd=denoising_model_config.log_mean_bias_std,
+ log_mean_bias_t = Normal(name='log_mean_bias_t', mu=0.0, sigma=denoising_model_config.log_mean_bias_std,
shape=(shared_workspace.num_intervals,),
- broadcastable=(False,),
- testval=initial_model_parameters_supplier.get_init_log_mean_bias_t())
+ initval=initial_model_parameters_supplier.get_init_log_mean_bias_t())
register_as_global(log_mean_bias_t)
# log-normal read depth centered at the global read depth
@@ -743,53 +744,51 @@ def __init__(self,
mu=read_depth_mu_s,
tau=denoising_model_config.depth_correction_tau,
shape=(shared_workspace.num_samples,),
- broadcastable=(False,),
- testval=shared_workspace.global_read_depth_s)
+ initval=shared_workspace.global_read_depth_s)
register_as_sample_specific(read_depth_s, sample_axis=0)
# log bias modelling, starting with the log mean bias
- log_bias_st = tt.tile(log_mean_bias_t, (shared_workspace.num_samples, 1))
+ log_bias_st = pt.tile(log_mean_bias_t, (shared_workspace.num_samples, 1))
if denoising_model_config.enable_bias_factors:
+ # PR #8651 NOTE: originally used HalfFlat in PyMC3, but this now raises
+ # NotImplementedError: Cannot sample from half_flat variable.
+ # we instead use a Uniform with a very large, unexposed upper bound
# ARD prior precisions
- ard_u = HalfFlat(name='ard_u',
- shape=(denoising_model_config.max_bias_factors,),
- broadcastable=(False,),
- testval=initial_model_parameters_supplier.get_init_ard_u())
+ ard_u = Uniform(name='ard_u', lower=0., upper=_ard_upper_bound,
+ shape=(denoising_model_config.max_bias_factors,),
+ initval=initial_model_parameters_supplier.get_init_ard_u())
register_as_global(ard_u)
# bias factors
W_tu = Normal(name='W_tu', mu=0.0, tau=ard_u.dimshuffle('x', 0),
- shape=(shared_workspace.num_intervals, denoising_model_config.max_bias_factors),
- broadcastable=(False, False))
+ shape=(shared_workspace.num_intervals, denoising_model_config.max_bias_factors))
register_as_global(W_tu)
# sample-specific bias factor loadings
- z_su = Normal(name='z_su', mu=0.0, sd=1.0,
- shape=(shared_workspace.num_samples, denoising_model_config.max_bias_factors),
- broadcastable=(False, False))
+ z_su = Normal(name='z_su', mu=0.0, sigma=1.0,
+ shape=(shared_workspace.num_samples, denoising_model_config.max_bias_factors))
register_as_sample_specific(z_su, sample_axis=0)
# add contribution to total log bias
if denoising_model_config.disable_bias_factors_in_active_class:
- prob_silent_class_t = tt.exp(shared_workspace.log_q_tau_tk[:, 0])
- log_bias_st += (prob_silent_class_t.dimshuffle('x', 0) * tt.dot(W_tu, z_su.T).T)
+ prob_silent_class_t = pt.exp(shared_workspace.log_q_tau_tk[:, 0])
+ log_bias_st += (prob_silent_class_t.dimshuffle('x', 0) * pt.dot(W_tu, z_su.T).T)
else:
- log_bias_st += tt.dot(W_tu, z_su.T).T
+ log_bias_st += pt.dot(W_tu, z_su.T).T
# GC bias
if denoising_model_config.enable_explicit_gc_bias_modeling:
# sample-specific GC bias factor loadings
- z_sg = Normal(name='z_sg', mu=0.0, sd=denoising_model_config.gc_curve_sd,
- shape=(shared_workspace.num_samples, denoising_model_config.num_gc_bins),
- broadcastable=(False, False))
+ z_sg = Normal(name='z_sg', mu=0.0, sigma=denoising_model_config.gc_curve_sd,
+ shape=(shared_workspace.num_samples, denoising_model_config.num_gc_bins))
register_as_sample_specific(z_sg, sample_axis=0)
# add contribution to total log bias
- log_bias_st += tst.dot(shared_workspace.W_gc_tg, z_sg.T).T
+ log_bias_st += pst.dot(shared_workspace.W_gc_tg, z_sg.T).T
# useful expressions
- bias_st = tt.exp(log_bias_st)
+ bias_st = pt.exp(log_bias_st)
# the expected number of erroneously mapped reads
mean_mapping_error_correction_s = eps_mapping * read_depth_s * shared_workspace.average_ploidy_s
@@ -823,8 +822,8 @@ def _copy_number_emission_logp(_n_st):
alpha_st.dimshuffle(0, 1, 'x'),
_n_st.dimshuffle(0, 1, 'x'))
log_q_c_stc = shared_workspace.log_q_c_stc
- q_c_stc = tt.exp(log_q_c_stc)
- return tt.sum(q_c_stc * (_log_copy_number_emission_stc - log_q_c_stc), axis=2)
+ q_c_stc = pt.exp(log_q_c_stc)
+ return pt.sum(q_c_stc * (_log_copy_number_emission_stc - log_q_c_stc), axis=2)
elif denoising_model_config.q_c_expectation_mode == 'hybrid':
def _copy_number_emission_logp(_n_st):
@@ -834,17 +833,17 @@ def _copy_number_emission_logp(_n_st):
# for CNV-active classes, calculate exact posterior expectation
mu_active_stc = ((1.0 - eps_mapping) * read_depth_s.dimshuffle(0, 'x', 'x')
- * bias_st.dimshuffle(0, 1, 'x')[:, active_class_indices, :]
+ * bias_st[:, active_class_indices].dimshuffle(0, 1, 'x') # PR #8561 switched indexing and dimshuffle to account for case when active_class_indices has a single element
* shared_workspace.copy_number_values_c.dimshuffle('x', 'x', 0)
+ mean_mapping_error_correction_s.dimshuffle(0, 'x', 'x'))
- alpha_active_stc = tt.maximum(tt.inv((tt.exp(psi_t.dimshuffle('x', 0)[:, active_class_indices]
- + psi_s.dimshuffle(0, 'x')) - 1.0)).dimshuffle(0, 1, 'x'),
+ alpha_active_stc = pt.maximum(pt.reciprocal((pt.exp(psi_t[active_class_indices].dimshuffle('x', 0) # PR #8561 switched indexing and dimshuffle to account for case when active_class_indices has a single element, inv to reciprocal
+ + psi_s.dimshuffle(0, 'x')) - 1.0)).dimshuffle(0, 1, 'x'),
_eps)
- n_active_stc = _n_st.dimshuffle(0, 1, 'x')[:, active_class_indices, :]
+ n_active_stc = _n_st[:, active_class_indices].dimshuffle(0, 1, 'x') # PR #8561 switched indexing and dimshuffle to account for case when active_class_indices has a single element
active_class_logp_stc = commons.negative_binomial_logp(mu_active_stc, alpha_active_stc, n_active_stc)
log_q_c_active_stc = shared_workspace.log_q_c_stc[:, active_class_indices, :]
- q_c_active_stc = tt.exp(log_q_c_active_stc)
- active_class_logp = tt.sum(q_c_active_stc * (active_class_logp_stc - log_q_c_active_stc))
+ q_c_active_stc = pt.exp(log_q_c_active_stc)
+ active_class_logp = pt.sum(q_c_active_stc * (active_class_logp_stc - log_q_c_active_stc))
# for CNV-silent classes, use MAP copy number state
mu_silent_st = ((1.0 - eps_mapping) * read_depth_s.dimshuffle(0, 'x') * bias_st[:, silent_class_indices]
@@ -852,7 +851,7 @@ def _copy_number_emission_logp(_n_st):
+ mean_mapping_error_correction_s.dimshuffle(0, 'x'))
alpha_silent_st = alpha_st[:, silent_class_indices]
n_silent_st = _n_st[:, silent_class_indices]
- silent_class_logp = tt.sum(commons.negative_binomial_logp(mu_silent_st, alpha_silent_st, n_silent_st))
+ silent_class_logp = pt.sum(commons.negative_binomial_logp(mu_silent_st, alpha_silent_st, n_silent_st))
return active_class_logp + silent_class_logp
@@ -862,14 +861,15 @@ def _copy_number_emission_logp(_n_st):
mu_stc,
alpha_st.dimshuffle(0, 1, 'x'),
_n_st.dimshuffle(0, 1, 'x'))
- return pm.math.logsumexp(shared_workspace.log_q_c_stc + _log_copy_number_emission_stc, axis=2)
+ return commons.logsumexp(shared_workspace.log_q_c_stc + _log_copy_number_emission_stc, axis=2)
else:
raise Exception("Unknown q_c expectation mode; an exception should have been raised earlier")
- DensityDist(name='n_st_obs',
- logp=_copy_number_emission_logp,
- observed=shared_workspace.n_st)
+ # originally DensityDist in PyMC3, but this now raises an error about sampling;
+ # changed in https://github.com/broadinstitute/gatk/pull/8561
+ Potential(name='n_st_obs',
+ var=_copy_number_emission_logp(shared_workspace.n_st))
class CopyNumberEmissionBasicSampler:
@@ -891,7 +891,7 @@ def __init__(self,
def update_approximation(self, approx: pm.approximations.MeanField):
"""Generates a new compiled sampler based on a given approximation.
Args:
- approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC mean-field approximation
Returns:
None
@@ -907,14 +907,16 @@ def draw(self) -> np.ndarray:
assert self.is_sampler_initialized, "Posterior approximation is not provided yet"
return self._simultaneous_log_copy_number_emission_sampler()
- @th.configparser.change_flags(compute_test_value="off")
+ @pytensor.config.change_flags(compute_test_value="off")
def _get_compiled_simultaneous_log_copy_number_emission_sampler(self, approx: pm.approximations.MeanField):
- """For a given variational approximation, returns a compiled theano function that draws posterior samples
+ """For a given variational approximation, returns a compiled pytensor function that draws posterior samples
from log copy number emission probabilities."""
log_copy_number_emission_stc = commons.stochastic_node_mean_symbolic(
approx, self.denoising_model['log_copy_number_emission_stc'],
size=self.inference_params.log_emission_samples_per_round)
- return th.function(inputs=[], outputs=log_copy_number_emission_stc)
+ # must use compile_pymc to pass random_seed for reproducible sampling
+ return pm.pytensorf.compile_pymc(inputs=[], outputs=log_copy_number_emission_stc,
+ random_seed=approx.rng.randint(2**30, dtype=np.int64))
class HHMMClassAndCopyNumberBasicCaller:
@@ -947,7 +949,7 @@ class HHMMClassAndCopyNumberBasicCaller:
forward-backward algorithm for each sample (see _update_copy_number_log_posterior)
- Given q(c_s), the emission probability of each copy number class (tau) is determined
- (see _get_update_log_class_emission_tk_theano_func). The class prior and transition probabilities
+ (see _get_update_log_class_emission_tk_pytensor_func). The class prior and transition probabilities
are fixed hyperparameters. Therefore, q(tau) can be updated immediately using a single run
of forward-backward algorithm (see _update_class_log_posterior).
"""
@@ -978,10 +980,10 @@ def __init__(self,
calling_config.num_copy_number_states,
calling_config.p_alt,
shared_workspace.baseline_copy_number_sj[si, :])[:, :, :]
- self.pi_sjkc: types.TensorSharedVariable = th.shared(pi_sjkc, name='pi_sjkc', borrow=config.borrow_numpy)
+ self.pi_sjkc: types.TensorSharedVariable = pytensor.shared(pi_sjkc, name='pi_sjkc', borrow=config.borrow_numpy)
# compiled function for forward-backward updates of copy number posterior
- self._hmm_q_copy_number = TheanoForwardBackward(
+ self._hmm_q_copy_number = PytensorForwardBackward(
log_posterior_probs_output_tc=None,
resolve_nans=False,
do_thermalization=True,
@@ -994,7 +996,7 @@ def __init__(self,
# Note:
# if p_active == 0, we have to deal with inf - inf expressions properly.
# setting resolve_nans = True takes care of such ambiguities.
- self._hmm_q_class = TheanoForwardBackward(
+ self._hmm_q_class = PytensorForwardBackward(
log_posterior_probs_output_tc=shared_workspace.log_q_tau_tk,
resolve_nans=(calling_config.p_active == 0),
do_thermalization=True,
@@ -1003,13 +1005,13 @@ def __init__(self,
include_alpha_beta_output=False)
# compiled function for update of class log emission
- self._update_log_class_emission_tk_theano_func = self._get_update_log_class_emission_tk_theano_func()
+ self._update_log_class_emission_tk_pytensor_func = self._get_update_log_class_emission_tk_pytensor_func()
else:
- self._hmm_q_class: Optional[TheanoForwardBackward] = None
- self._update_log_class_emission_tk_theano_func = None
+ self._hmm_q_class: Optional[PytensorForwardBackward] = None
+ self._update_log_class_emission_tk_pytensor_func = None
# compiled function for variational update of copy number HMM specs
- self._get_copy_number_hmm_specs_theano_func = self.get_compiled_copy_number_hmm_specs_theano_func()
+ self._get_copy_number_hmm_specs_pytensor_func = self.get_compiled_copy_number_hmm_specs_pytensor_func()
@staticmethod
def get_copy_number_prior_for_sample_jkc(num_copy_number_states: int,
@@ -1084,7 +1086,7 @@ def _run_single_sample_fb(_sample_index: int):
cnv_stay_prob_t = self.shared_workspace.cnv_stay_prob_t.get_value(borrow=True)
log_q_tau_tk = self.shared_workspace.log_q_tau_tk.get_value(borrow=True)
t_to_j_map = self.shared_workspace.t_to_j_map.get_value(borrow=True)
- hmm_spec = self._get_copy_number_hmm_specs_theano_func(pi_jkc, cnv_stay_prob_t, log_q_tau_tk, t_to_j_map)
+ hmm_spec = self._get_copy_number_hmm_specs_pytensor_func(pi_jkc, cnv_stay_prob_t, log_q_tau_tk, t_to_j_map)
log_prior_c = hmm_spec[0]
log_trans_tcc = hmm_spec[1]
@@ -1132,7 +1134,7 @@ def _update_log_q_c_stc_inplace(log_q_c_stc, _sample_index, new_log_posterior_tc
return copy_number_update_s, copy_number_log_likelihoods_s
def _update_log_class_emission_tk(self):
- self._update_log_class_emission_tk_theano_func()
+ self._update_log_class_emission_tk_pytensor_func()
def _update_class_log_posterior(self, class_update_summary_statistic_reducer) -> Tuple[float, float]:
fb_result = self._hmm_q_class.perform_forward_backward(
@@ -1150,19 +1152,19 @@ def update_auxiliary_vars(self):
self.shared_workspace.update_auxiliary_vars()
@staticmethod
- @th.configparser.change_flags(compute_test_value="off")
- def get_compiled_copy_number_hmm_specs_theano_func() -> th.compile.function_module.Function:
+ @pytensor.config.change_flags(compute_test_value="off")
+ def get_compiled_copy_number_hmm_specs_pytensor_func() -> pytensor.compile.Function:
"""Returns a compiled function that calculates the interval-class-averaged and probability-sum-normalized
log copy number transition matrix and log copy number prior for the first interval
- Returned theano function inputs:
+ Returned pytensor function inputs:
pi_jkc: a 3d tensor containing copy-number priors for each contig (j) and each class (k)
cnv_stay_prob_t: probability of staying on the same copy-number state at interval `t`
log_q_tau_tk: log probability of copy-number classes at interval `t`
t_to_j_map: a mapping from interval indices (t) to contig indices (j); it is used to unpack
`pi_jkc` to `pi_tkc` (see below)
- Returned theano function outputs:
+ Returned pytensor function outputs:
log_prior_c_first_interval: log probability of copy-number states for the first interval
log_trans_tab: log transition probability matrix from interval `t` to interval `t+1`
@@ -1172,38 +1174,40 @@ def get_compiled_copy_number_hmm_specs_theano_func() -> th.compile.function_modu
refers to contig index.
"""
# shorthands
- pi_jkc = tt.tensor3(name='pi_jkc')
- cnv_stay_prob_t = tt.vector(name='cnv_stay_prob_t')
- log_q_tau_tk = tt.matrix(name='log_q_tau_tk')
- t_to_j_map = tt.vector(name='t_to_j_map', dtype=tt.scal.uint32)
+ pi_jkc = pt.tensor3(name='pi_jkc')
+ cnv_stay_prob_t = pt.vector(name='cnv_stay_prob_t')
+ log_q_tau_tk = pt.matrix(name='log_q_tau_tk')
+ t_to_j_map = pt.vector(name='t_to_j_map', dtype=pytensor.scalar.uint32)
+
+
# log prior probability for the first interval
- log_prior_c_first_interval = tt.dot(tt.log(pi_jkc[t_to_j_map[0], :, :].T), tt.exp(log_q_tau_tk[0, :]))
- log_prior_c_first_interval -= pm.logsumexp(log_prior_c_first_interval)
+ log_prior_c_first_interval = pt.dot(pt.log(pi_jkc[t_to_j_map[0], :, :].T), pt.exp(log_q_tau_tk[0, :]))
+ log_prior_c_first_interval -= commons.logsumexp(log_prior_c_first_interval)
# log transition matrix
- cnv_not_stay_prob_t = tt.ones_like(cnv_stay_prob_t) - cnv_stay_prob_t
+ cnv_not_stay_prob_t = pt.ones_like(cnv_stay_prob_t) - cnv_stay_prob_t
num_copy_number_states = pi_jkc.shape[2]
- delta_ab = tt.eye(num_copy_number_states)
+ delta_ab = pt.eye(num_copy_number_states)
# map contig to interval and obtain pi_tkc for the rest of the targets
pi_tkc = pi_jkc[t_to_j_map[1:], :, :]
# calculate normalized log transition matrix
# todo use logaddexp
- log_trans_tkab = tt.log(cnv_not_stay_prob_t.dimshuffle(0, 'x', 'x', 'x') * pi_tkc.dimshuffle(0, 1, 'x', 2)
+ log_trans_tkab = pt.log(cnv_not_stay_prob_t.dimshuffle(0, 'x', 'x', 'x') * pi_tkc.dimshuffle(0, 1, 'x', 2)
+ cnv_stay_prob_t.dimshuffle(0, 'x', 'x', 'x') * delta_ab.dimshuffle('x', 'x', 0, 1))
- q_tau_tkab = tt.exp(log_q_tau_tk[1:, :]).dimshuffle(0, 1, 'x', 'x')
- log_trans_tab = tt.sum(q_tau_tkab * log_trans_tkab, axis=1)
- log_trans_tab -= pm.logsumexp(log_trans_tab, axis=2)
+ q_tau_tkab = pt.exp(log_q_tau_tk[1:, :]).dimshuffle(0, 1, 'x', 'x')
+ log_trans_tab = pt.sum(q_tau_tkab * log_trans_tkab, axis=1)
+ log_trans_tab -= commons.logsumexp(log_trans_tab, axis=2)
inputs = [pi_jkc, cnv_stay_prob_t, log_q_tau_tk, t_to_j_map]
outputs = [log_prior_c_first_interval, log_trans_tab]
- return th.function(inputs=inputs, outputs=outputs)
+ return pytensor.function(inputs=inputs, outputs=outputs)
- @th.configparser.change_flags(compute_test_value="off")
- def _get_update_log_class_emission_tk_theano_func(self) -> th.compile.function_module.Function:
+ @pytensor.config.change_flags(compute_test_value="off")
+ def _get_update_log_class_emission_tk_pytensor_func(self) -> pytensor.compile.Function:
"""Returns a compiled function that calculates the log interval class emission probability and
directly updates `log_class_emission_tk` in the workspace.
@@ -1221,23 +1225,23 @@ def _get_update_log_class_emission_tk_theano_func(self) -> th.compile.function_m
"""
# shorthands
cnv_stay_prob_t = self.shared_workspace.cnv_stay_prob_t
- q_c_stc = tt.exp(self.shared_workspace.log_q_c_stc)
+ q_c_stc = pt.exp(self.shared_workspace.log_q_c_stc)
pi_sjkc = self.pi_sjkc
t_to_j_map = self.shared_workspace.t_to_j_map
num_copy_number_states = self.calling_config.num_copy_number_states
# log copy number transition matrix for each class
- cnv_not_stay_prob_t = tt.ones_like(cnv_stay_prob_t) - cnv_stay_prob_t
- delta_ab = tt.eye(num_copy_number_states)
+ cnv_not_stay_prob_t = pt.ones_like(cnv_stay_prob_t) - cnv_stay_prob_t
+ delta_ab = pt.eye(num_copy_number_states)
# calculate log class emission by reducing over samples; see below
- log_class_emission_cum_sum_tk = tt.zeros((self.shared_workspace.num_intervals - 1,
+ log_class_emission_cum_sum_tk = pt.zeros((self.shared_workspace.num_intervals - 1,
self.calling_config.num_copy_number_classes),
dtype=types.floatX)
- # this converts TensorType from row to matrix when number in the edge case when number of intervals is equal to 2
+ # this converts TensorType from row to matrix in the edge case when number of intervals is equal to 2
# (to avoid type mismatch later on)
- log_class_emission_cum_sum_tk = tt.unbroadcast(log_class_emission_cum_sum_tk, 0)
+ log_class_emission_cum_sum_tk = unbroadcast(log_class_emission_cum_sum_tk, 0)
def inc_log_class_emission_tk_except_for_first_interval(pi_jkc, q_c_tc, cum_sum_tk):
"""Adds the contribution of a given sample to the log class emission (symbolically).
@@ -1254,15 +1258,15 @@ def inc_log_class_emission_tk_except_for_first_interval(pi_jkc, q_c_tc, cum_sum_
pi_tkc = pi_jkc[t_to_j_map[1:], :, :]
# todo use logaddexp
- log_trans_tkab = tt.log(
+ log_trans_tkab = pt.log(
cnv_not_stay_prob_t.dimshuffle(0, 'x', 'x', 'x') * pi_tkc.dimshuffle(0, 1, 'x', 2)
+ cnv_stay_prob_t.dimshuffle(0, 'x', 'x', 'x') * delta_ab.dimshuffle('x', 'x', 0, 1))
xi_tab = q_c_tc[:-1, :].dimshuffle(0, 1, 'x') * q_c_tc[1:, :].dimshuffle(0, 'x', 1)
- current_log_class_emission_tk = tt.sum(tt.sum(
+ current_log_class_emission_tk = pt.sum(pt.sum(
xi_tab.dimshuffle(0, 'x', 1, 2) * log_trans_tkab, axis=-1), axis=-1)
return cum_sum_tk + current_log_class_emission_tk
- reduce_output = th.reduce(inc_log_class_emission_tk_except_for_first_interval,
+ reduce_output = pytensor.reduce(inc_log_class_emission_tk_except_for_first_interval,
sequences=[pi_sjkc, q_c_stc],
outputs_info=[log_class_emission_cum_sum_tk])
log_class_emission_tk_except_for_first_interval = reduce_output[0]
@@ -1270,11 +1274,11 @@ def inc_log_class_emission_tk_except_for_first_interval(pi_jkc, q_c_tc, cum_sum_
# the first interval
pi_skc_first = pi_sjkc[:, t_to_j_map[0], :, :]
q_skc_first = q_c_stc[:, 0, :].dimshuffle(0, 'x', 1)
- log_class_emission_k_first = tt.sum(tt.sum(tt.log(pi_skc_first) * q_skc_first, axis=0), axis=-1)
+ log_class_emission_k_first = pt.sum(pt.sum(pt.log(pi_skc_first) * q_skc_first, axis=0), axis=-1)
# concatenate first and rest
- log_class_emission_tk = tt.concatenate((log_class_emission_k_first.dimshuffle('x', 0),
+ log_class_emission_tk = pt.concatenate((log_class_emission_k_first.dimshuffle('x', 0),
log_class_emission_tk_except_for_first_interval))
- return th.function(inputs=[], outputs=[], updates=[
+ return pytensor.function(inputs=[], outputs=[], updates=[
(self.shared_workspace.log_class_emission_tk, log_class_emission_tk)])
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_ploidy.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_ploidy.py
index fd50776420f..931ded52bed 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_ploidy.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/model_ploidy.py
@@ -4,10 +4,10 @@
from typing import List, Dict, Set, Tuple
import numpy as np
-import pymc3 as pm
-import theano as th
-import theano.tensor as tt
-from pymc3 import Normal, Deterministic, DensityDist, Bound, Exponential
+import pymc as pm
+import pytensor
+import pytensor.tensor as pt
+from pymc import Normal, Deterministic, Potential, Exponential, TruncatedNormal, Mixture, NegativeBinomial
from . import commons
from .fancy_model import GeneralizedContinuousModel
@@ -147,56 +147,55 @@ def __init__(self,
assert sample_metadata_collection.all_samples_have_coverage_metadata(sample_names), \
"Some samples do not have coverage metadata"
- # number of intervals per contig as a shared theano tensor
- self.t_j: types.TensorSharedVariable = th.shared(
+ # number of intervals per contig as a shared pytensor tensor
+ self.t_j: types.TensorSharedVariable = pytensor.shared(
interval_list_metadata.t_j.astype(types.floatX), name='t_j', borrow=config.borrow_numpy)
- # count per contig and total count as shared theano tensors
+ # count per contig and total count as shared pytensor tensors
n_sj = np.zeros((self.num_samples, self.num_contigs), dtype=types.floatX)
n_s = np.zeros((self.num_samples,), dtype=types.floatX)
for si, sample_name in enumerate(self.sample_names):
sample_metadata = sample_metadata_collection.get_sample_coverage_metadata(sample_name)
n_sj[si, :] = sample_metadata.n_j[:]
n_s[si] = sample_metadata.n_total
- self.n_sj: types.TensorSharedVariable = th.shared(n_sj, name='n_sj', borrow=config.borrow_numpy)
- self.n_s: types.TensorSharedVariable = th.shared(n_s, name='n_s', borrow=config.borrow_numpy)
+ self.n_sj: types.TensorSharedVariable = pytensor.shared(n_sj, name='n_sj', borrow=config.borrow_numpy)
+ self.n_s: types.TensorSharedVariable = pytensor.shared(n_s, name='n_s', borrow=config.borrow_numpy)
# integer ploidy values
int_ploidy_values_k = np.arange(0, ploidy_config.num_ploidy_states, dtype=types.small_uint)
- self.int_ploidy_values_k = th.shared(int_ploidy_values_k, name='int_ploidy_values_k',
+ self.int_ploidy_values_k = pytensor.shared(int_ploidy_values_k, name='int_ploidy_values_k',
borrow=config.borrow_numpy)
# ploidy priors
p_ploidy_jk = np.zeros((self.num_contigs, self.ploidy_config.num_ploidy_states), dtype=types.floatX)
for j, contig in enumerate(interval_list_metadata.ordered_contig_list):
p_ploidy_jk[j, :] = ploidy_config.contig_ploidy_prior_map[contig][:]
- log_p_ploidy_jk = np.log(p_ploidy_jk)
- self.log_p_ploidy_jk: types.TensorSharedVariable = th.shared(log_p_ploidy_jk, name='log_p_ploidy_jk',
+ log_p_ploidy_jk = np.log(np.maximum(p_ploidy_jk, _eps))
+ self.log_p_ploidy_jk: types.TensorSharedVariable = pytensor.shared(log_p_ploidy_jk, name='log_p_ploidy_jk',
borrow=config.borrow_numpy)
# ploidy log posteriors (initial value is immaterial)
log_q_ploidy_sjk = np.tile(log_p_ploidy_jk, (self.num_samples, 1, 1))
- self.log_q_ploidy_sjk: types.TensorSharedVariable = th.shared(
+ self.log_q_ploidy_sjk: types.TensorSharedVariable = pytensor.shared(
log_q_ploidy_sjk, name='log_q_ploidy_sjk', borrow=config.borrow_numpy)
# ploidy log emission (initial value is immaterial)
log_ploidy_emission_sjk = np.zeros(
(self.num_samples, self.num_contigs, ploidy_config.num_ploidy_states), dtype=types.floatX)
- self.log_ploidy_emission_sjk: types.TensorSharedVariable = th.shared(
+ self.log_ploidy_emission_sjk: types.TensorSharedVariable = pytensor.shared(
log_ploidy_emission_sjk, name="log_ploidy_emission_sjk", borrow=config.borrow_numpy)
# exclusion mask; mask(j, k) = 1 - delta(j, k)
contig_exclusion_mask_jj = (np.ones((self.num_contigs, self.num_contigs), dtype=types.small_uint)
- np.eye(self.num_contigs, dtype=types.small_uint))
- self.contig_exclusion_mask_jj = th.shared(contig_exclusion_mask_jj, name='contig_exclusion_mask_jj')
+ self.contig_exclusion_mask_jj = pytensor.shared(contig_exclusion_mask_jj, name='contig_exclusion_mask_jj')
class PloidyModel(GeneralizedContinuousModel):
"""Declaration of the germline contig ploidy model (continuous variables only; posterior of discrete
variables are assumed to be known)."""
- PositiveNormal = Bound(Normal, lower=0) # how cool is this?
-
+ @pytensor.config.change_flags(compute_test_value="off")
def __init__(self,
ploidy_config: PloidyModelConfig,
ploidy_workspace: PloidyWorkspace):
@@ -208,17 +207,18 @@ def __init__(self,
n_s = ploidy_workspace.n_s
n_sj = ploidy_workspace.n_sj
ploidy_k = ploidy_workspace.int_ploidy_values_k
- q_ploidy_sjk = tt.exp(ploidy_workspace.log_q_ploidy_sjk)
+ q_ploidy_sjk = pt.exp(ploidy_workspace.log_q_ploidy_sjk)
eps_mapping = ploidy_config.mapping_error_rate
register_as_global = self.register_as_global
register_as_sample_specific = self.register_as_sample_specific
# mean per-contig bias
- mean_bias_j = self.PositiveNormal('mean_bias_j',
- mu=1.0,
- sd=ploidy_config.mean_bias_sd,
- shape=(ploidy_workspace.num_contigs,))
+ mean_bias_j = TruncatedNormal(name='mean_bias_j',
+ mu=1.0,
+ sigma=ploidy_config.mean_bias_sd,
+ lower=0.0,
+ shape=(ploidy_workspace.num_contigs,))
register_as_global(mean_bias_j)
# contig coverage unexplained variance
@@ -234,27 +234,27 @@ def __init__(self,
register_as_sample_specific(psi_s, sample_axis=0)
# convert "unexplained variance" to negative binomial over-dispersion
- alpha_sj = tt.maximum(tt.inv((tt.exp(psi_j.dimshuffle('x', 0) + psi_s.dimshuffle(0, 'x')) - 1.0)),
+ alpha_sj = pt.maximum(pt.reciprocal((pt.exp(psi_j.dimshuffle('x', 0) + psi_s.dimshuffle(0, 'x')) - 1.0)),
_eps)
# mean ploidy per contig per sample
- mean_ploidy_sj = tt.sum(tt.exp(ploidy_workspace.log_q_ploidy_sjk)
+ mean_ploidy_sj = pt.sum(pt.exp(ploidy_workspace.log_q_ploidy_sjk)
* ploidy_workspace.int_ploidy_values_k.dimshuffle('x', 'x', 0), axis=2)
# mean-field amplification coefficient per contig
gamma_sj = mean_ploidy_sj * t_j.dimshuffle('x', 0) * mean_bias_j.dimshuffle('x', 0)
# gamma_rest_sj \equiv sum_{j' \neq j} gamma_sj
- gamma_rest_sj = tt.dot(gamma_sj, contig_exclusion_mask_jj)
+ gamma_rest_sj = pt.dot(gamma_sj, contig_exclusion_mask_jj)
# NB per-contig counts
mu_num_sjk = (t_j.dimshuffle('x', 0, 'x') * mean_bias_j.dimshuffle('x', 0, 'x')
* ploidy_k.dimshuffle('x', 'x', 0))
mu_den_sjk = gamma_rest_sj.dimshuffle(0, 1, 'x') + mu_num_sjk
- eps_mapping_j = eps_mapping * t_j / tt.sum(t_j) # average number of reads erroneously mapped to contig j
+ eps_mapping_j = eps_mapping * t_j / pt.sum(t_j) # average number of reads erroneously mapped to contig j
# the switch is required for a single contig edge case
- mu_ratio_sjk = tt.switch(tt.eq(mu_den_sjk, 0.0), 0.0, mu_num_sjk / mu_den_sjk)
+ mu_ratio_sjk = pt.switch(pt.eq(mu_den_sjk, 0.0), 0.0, mu_num_sjk / mu_den_sjk)
mu_sjk = ((1.0 - eps_mapping) * mu_ratio_sjk
+ eps_mapping_j.dimshuffle('x', 0, 'x')) * n_s.dimshuffle(0, 'x', 'x')
@@ -265,9 +265,11 @@ def _get_logp_sjk(_n_sj):
_n_sj.dimshuffle(0, 1, 'x')) # contig counts
return _logp_sjk
- DensityDist(name='n_sj_obs',
- logp=lambda _n_sj: tt.sum(q_ploidy_sjk * _get_logp_sjk(_n_sj)),
- observed=n_sj)
+
+ # originally DensityDist, but this raised an error about random;
+ # changed in https://github.com/broadinstitute/gatk/pull/8561
+ Potential(name='n_sj_obs',
+ var=pt.sum(q_ploidy_sjk * _get_logp_sjk(n_sj)))
# for log ploidy emission sampling
Deterministic(name='logp_sjk', var=_get_logp_sjk(n_sj))
@@ -284,7 +286,7 @@ def __init__(self, ploidy_model: PloidyModel, samples_per_round: int):
def update_approximation(self, approx: pm.approximations.MeanField):
"""Generates a new compiled sampler based on a given approximation.
Args:
- approx: an instance of PyMC3 mean-field approximation
+ approx: an instance of PyMC mean-field approximation
Returns:
None
@@ -298,13 +300,14 @@ def is_sampler_initialized(self):
def draw(self) -> np.ndarray:
return self._simultaneous_log_ploidy_emission_sampler()
- @th.configparser.change_flags(compute_test_value="off")
+ @pytensor.config.change_flags(compute_test_value="off")
def _get_compiled_simultaneous_log_ploidy_emission_sampler(self, approx: pm.approximations.MeanField):
- """For a given variational approximation, returns a compiled theano function that draws posterior samples
+ """For a given variational approximation, returns a compiled pytensor function that draws posterior samples
from the log ploidy emission."""
log_ploidy_emission_sjk = commons.stochastic_node_mean_symbolic(
approx, self.ploidy_model['logp_sjk'], size=self.samples_per_round)
- return th.function(inputs=[], outputs=log_ploidy_emission_sjk)
+ return pm.pytensorf.compile_pymc(inputs=[], outputs=log_ploidy_emission_sjk,
+ random_seed=approx.rng.randint(2**30, dtype=np.int64))
class PloidyBasicCaller:
@@ -314,21 +317,21 @@ def __init__(self,
ploidy_workspace: PloidyWorkspace):
self.ploidy_workspace = ploidy_workspace
self.inference_params = inference_params
- self._update_log_q_ploidy_sjk_theano_func = self._get_update_log_q_ploidy_sjk_theano_func()
+ self._update_log_q_ploidy_sjk_pytensor_func = self._get_update_log_q_ploidy_sjk_pytensor_func()
- @th.configparser.change_flags(compute_test_value="off")
- def _get_update_log_q_ploidy_sjk_theano_func(self) -> th.compile.function_module.Function:
+ @pytensor.config.change_flags(compute_test_value="off")
+ def _get_update_log_q_ploidy_sjk_pytensor_func(self) -> pytensor.compile.Function:
new_log_q_ploidy_sjk = (self.ploidy_workspace.log_p_ploidy_jk.dimshuffle('x', 0, 1)
+ self.ploidy_workspace.log_ploidy_emission_sjk)
- new_log_q_ploidy_sjk -= pm.logsumexp(new_log_q_ploidy_sjk, axis=2)
+ new_log_q_ploidy_sjk -= commons.logsumexp(new_log_q_ploidy_sjk, axis=2)
old_log_q_ploidy_sjk = self.ploidy_workspace.log_q_ploidy_sjk
admixed_new_log_q_ploidy_sjk = commons.safe_logaddexp(
new_log_q_ploidy_sjk + np.log(self.inference_params.caller_external_admixing_rate),
old_log_q_ploidy_sjk + np.log(1.0 - self.inference_params.caller_external_admixing_rate))
update_norm_sj = commons.get_hellinger_distance(admixed_new_log_q_ploidy_sjk, old_log_q_ploidy_sjk)
- return th.function(inputs=[],
+ return pytensor.function(inputs=[],
outputs=[update_norm_sj],
updates=[(self.ploidy_workspace.log_q_ploidy_sjk, admixed_new_log_q_ploidy_sjk)])
def call(self) -> np.ndarray:
- return self._update_log_q_ploidy_sjk_theano_func()
+ return self._update_log_q_ploidy_sjk_pytensor_func()
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/theano_hmm.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/pytensor_hmm.py
similarity index 76%
rename from src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/theano_hmm.py
rename to src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/pytensor_hmm.py
index 8701e6487dd..d8dbf3c614a 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/theano_hmm.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/models/pytensor_hmm.py
@@ -1,16 +1,16 @@
from typing import Optional, List, Tuple, Union
import numpy as np
-import pymc3 as pm
-import theano as th
-import theano.tensor as tt
+import pytensor
+import pytensor.tensor as pt
-from . import commons
+from ..models import commons
+from ..models.commons import logsumexp
from .. import types
-class TheanoForwardBackward:
- """Implementation of the forward-backward algorithm in theano."""
+class PytensorForwardBackward:
+ """Implementation of the forward-backward algorithm in pytensor."""
def __init__(self,
log_posterior_probs_output_tc: Optional[types.TensorSharedVariable] = None,
resolve_nans: bool = False,
@@ -18,7 +18,7 @@ def __init__(self,
do_admixing: bool = False,
include_update_size_output: bool = False,
include_alpha_beta_output: bool = False):
- """Initializes the forward-backward algorithm by compiling a theano function according to the
+ """Initializes the forward-backward algorithm by compiling a pytensor function according to the
boolean flags.
Args:
@@ -36,7 +36,7 @@ def __init__(self,
self.do_admixing = do_admixing
self.include_update_size_output = include_update_size_output
self.include_alpha_beta_output = include_alpha_beta_output
- self._forward_backward_theano_func = self._get_compiled_forward_backward_theano_func()
+ self._forward_backward_pytensor_func = self._get_compiled_forward_backward_pytensor_func()
def perform_forward_backward(self,
log_prior_c: np.ndarray,
@@ -48,7 +48,7 @@ def perform_forward_backward(self,
"""Runs the forward-backward algorithm.
Notes:
- The inputs args must be compatible with the compiled theano function according to the
+ The inputs args must be compatible with the compiled pytensor function according to the
class initializer flags.
Args:
@@ -82,12 +82,12 @@ class initializer flags.
assert prev_log_posterior_tc is not None,\
"Update size output is enabled but `prev_log_posterior_tc` is not specified."
- return self._decompose_theano_forward_backward_outputs(
- self._forward_backward_theano_func(*self._compose_theano_forward_backward_inputs(
+ return self._decompose_pytensor_forward_backward_outputs(
+ self._forward_backward_pytensor_func(*self._compose_pytensor_forward_backward_inputs(
log_prior_c, log_trans_tcc, log_emission_tc,
prev_log_posterior_tc, admixing_rate, temperature)))
- def _compose_theano_forward_backward_inputs(self,
+ def _compose_pytensor_forward_backward_inputs(self,
log_prior_c: np.ndarray,
log_trans_tcc: np.ndarray,
log_emission_tc: np.ndarray,
@@ -103,7 +103,7 @@ def _compose_theano_forward_backward_inputs(self,
inputs += (temperature,)
return inputs
- def _decompose_theano_forward_backward_outputs(self, outputs: List[Union[np.ndarray, float]])\
+ def _decompose_pytensor_forward_backward_outputs(self, outputs: List[Union[np.ndarray, float]])\
-> 'ForwardBackwardResult':
result = ForwardBackwardResult()
arg_idx = 0
@@ -122,13 +122,13 @@ def _decompose_theano_forward_backward_outputs(self, outputs: List[Union[np.ndar
arg_idx += 1
return result
- @th.configparser.change_flags(compute_test_value="ignore")
- def _get_compiled_forward_backward_theano_func(self) -> th.compile.function_module.Function:
- """Returns a compiled theano function that computes the posterior probabilities of hidden states using
+ @pytensor.config.change_flags(compute_test_value="ignore")
+ def _get_compiled_forward_backward_pytensor_func(self) -> pytensor.compile.Function:
+ """Returns a compiled pytensor function that computes the posterior probabilities of hidden states using
the forward-backward algorithm.
Note:
- The input arguments and the output of the compiled theano function is determined by the initializer flags
+ The input arguments and the output of the compiled pytensor function is determined by the initializer flags
as follows:
There are 3 basic input arguments:
@@ -162,17 +162,17 @@ def _get_compiled_forward_backward_theano_func(self) -> th.compile.function_modu
and `beta_tc` (float vector).
Returns:
- A compiled theano function
+ A compiled pytensor function
"""
# basic inputs
- log_prior_c = tt.vector('log_prior_c')
- log_trans_tcc = tt.tensor3('log_trans_tcc')
- log_emission_tc = tt.matrix('log_emission_tc')
+ log_prior_c = pt.vector('log_prior_c')
+ log_trans_tcc = pt.tensor3('log_trans_tcc')
+ log_emission_tc = pt.matrix('log_emission_tc')
# optional inputs
- prev_log_posterior_tc = tt.matrix('prev_log_posterior_tc')
- admixing_rate = tt.scalar('admixing_rate')
- temperature = tt.scalar('temperature')
+ prev_log_posterior_tc = pt.matrix('prev_log_posterior_tc')
+ admixing_rate = pt.scalar('admixing_rate')
+ temperature = pt.scalar('temperature')
if self.do_thermalization:
processed_log_prior_c, processed_log_trans_tcc, processed_log_emission_tc =\
@@ -187,8 +187,8 @@ def _get_compiled_forward_backward_theano_func(self) -> th.compile.function_modu
if self.do_admixing:
processed_log_posterior_tc = commons.safe_logaddexp(
- new_log_posterior_tc + tt.log(admixing_rate),
- prev_log_posterior_tc + tt.log(1.0 - admixing_rate))
+ new_log_posterior_tc + pt.log(admixing_rate),
+ prev_log_posterior_tc + pt.log(1.0 - admixing_rate))
else:
processed_log_posterior_tc = new_log_posterior_tc
@@ -223,12 +223,12 @@ def _get_compiled_forward_backward_theano_func(self) -> th.compile.function_modu
if self.include_alpha_beta_output:
outputs += [alpha_tc, beta_tc]
- return th.function(inputs=inputs, outputs=outputs, updates=updates)
+ return pytensor.function(inputs=inputs, outputs=outputs, updates=updates)
@staticmethod
- def get_symbolic_log_posterior(log_prior_c: types.TheanoVector,
- log_trans_tcc: types.TheanoTensor3,
- log_emission_tc: types.TheanoMatrix,
+ def get_symbolic_log_posterior(log_prior_c: types.PytensorVector,
+ log_trans_tcc: types.PytensorTensor3,
+ log_emission_tc: types.PytensorMatrix,
resolve_nans: bool):
"""Generates symbolic tensors representing hidden-state log posterior, log data likelihood,
forward table (alpha), and backward table (beta).
@@ -238,9 +238,9 @@ def get_symbolic_log_posterior(log_prior_c: types.TheanoVector,
"""
num_states = log_prior_c.shape[0]
- def calculate_next_alpha(c_log_trans_ab: types.TheanoMatrix,
- c_log_emission_b: types.TheanoVector,
- p_alpha_a: types.TheanoVector):
+ def calculate_next_alpha(c_log_trans_ab: types.PytensorMatrix,
+ c_log_emission_b: types.PytensorVector,
+ p_alpha_a: types.PytensorVector):
"""Calculates the next entry on the forward table, alpha_{t}, from alpha_{t-1}.
Args:
@@ -252,16 +252,16 @@ def calculate_next_alpha(c_log_trans_ab: types.TheanoMatrix,
Returns:
symbolic 1d tensor of alpha_{t}
"""
- mu_ba = tt.tile(p_alpha_a, (num_states, 1)) + c_log_trans_ab.T
- n_alpha_b = c_log_emission_b + pm.math.logsumexp(mu_ba, axis=1).dimshuffle(0)
+ mu_ba = pt.tile(p_alpha_a, (num_states, 1)) + c_log_trans_ab.T
+ n_alpha_b = c_log_emission_b + logsumexp(mu_ba, axis=1).dimshuffle(0)
if resolve_nans:
- return tt.switch(tt.isnan(n_alpha_b), -np.inf, n_alpha_b)
+ return pt.switch(pt.isnan(n_alpha_b), -np.inf, n_alpha_b)
else:
return n_alpha_b
- def calculate_prev_beta(n_log_trans_ab: types.TheanoMatrix,
- n_log_emission_b: types.TheanoVector,
- n_beta_b: types.TheanoVector):
+ def calculate_prev_beta(n_log_trans_ab: types.PytensorMatrix,
+ n_log_emission_b: types.PytensorVector,
+ n_beta_b: types.PytensorVector):
"""Calculates the previous entry on the backward table, beta_{t-1}, from beta_{t}.
Args:
@@ -273,10 +273,10 @@ def calculate_prev_beta(n_log_trans_ab: types.TheanoMatrix,
Returns:
symbolic 1d tensor of beta_{t-1}
"""
- nu_ab = tt.tile(n_beta_b + n_log_emission_b, (num_states, 1)) + n_log_trans_ab
- p_beta_a = pm.math.logsumexp(nu_ab, axis=1).dimshuffle(0)
+ nu_ab = pt.tile(n_beta_b + n_log_emission_b, (num_states, 1)) + n_log_trans_ab
+ p_beta_a = logsumexp(nu_ab, axis=1).dimshuffle(0)
if resolve_nans:
- return tt.switch(tt.isnan(p_beta_a), -np.inf, p_beta_a)
+ return pt.switch(pt.isnan(p_beta_a), -np.inf, p_beta_a)
else:
return p_beta_a
@@ -284,45 +284,45 @@ def calculate_prev_beta(n_log_trans_ab: types.TheanoMatrix,
first_alpha_c = log_prior_c + log_emission_tc[0, :]
# the rest of the forward table
- rest_alpha_tc, alpha_updates = th.scan(
+ rest_alpha_tc, alpha_updates = pytensor.scan(
fn=calculate_next_alpha,
sequences=[log_trans_tcc, log_emission_tc[1:, :]],
outputs_info=[first_alpha_c])
# concatenate with the first alpha
- alpha_tc = tt.concatenate((first_alpha_c.dimshuffle('x', 0), rest_alpha_tc))
+ alpha_tc = pt.concatenate((first_alpha_c.dimshuffle('x', 0), rest_alpha_tc))
# last entry of the backward table (zero for all states)
- last_beta_c = tt.zeros_like(log_prior_c)
+ last_beta_c = pt.zeros_like(log_prior_c)
# the rest of the backward table
- rest_beta_tc, beta_updates = th.scan(
+ rest_beta_tc, beta_updates = pytensor.scan(
fn=calculate_prev_beta,
sequences=[log_trans_tcc, log_emission_tc[1:, :]],
go_backwards=True,
outputs_info=[last_beta_c])
# concatenate with the last beta and reverse
- beta_tc = tt.concatenate((last_beta_c.dimshuffle('x', 0), rest_beta_tc))[::-1, :]
+ beta_tc = pt.concatenate((last_beta_c.dimshuffle('x', 0), rest_beta_tc))[::-1, :]
# calculate normalized log posterior
log_unnormalized_posterior_tc = alpha_tc + beta_tc
- log_data_likelihood_t = pm.math.logsumexp(log_unnormalized_posterior_tc, axis=1)
+ log_data_likelihood_t = logsumexp(log_unnormalized_posterior_tc, axis=1)
log_posterior_probs_tc = log_unnormalized_posterior_tc - log_data_likelihood_t
return log_posterior_probs_tc, log_data_likelihood_t.dimshuffle(0), alpha_tc, beta_tc
@staticmethod
- def get_symbolic_thermal_hmm_params(log_prior_c: types.TheanoVector,
- log_trans_tcc: types.TheanoTensor3,
- log_emission_tc: types.TheanoMatrix,
- temperature: tt.scalar):
- inv_temperature = tt.inv(temperature)
+ def get_symbolic_thermal_hmm_params(log_prior_c: types.PytensorVector,
+ log_trans_tcc: types.PytensorTensor3,
+ log_emission_tc: types.PytensorMatrix,
+ temperature: pt.scalar):
+ inv_temperature = pt.reciprocal(temperature)
thermal_log_prior_c = inv_temperature * log_prior_c
- thermal_log_prior_c -= pm.math.logsumexp(thermal_log_prior_c)
+ thermal_log_prior_c -= logsumexp(thermal_log_prior_c)
thermal_log_trans_tcc = inv_temperature * log_trans_tcc
- thermal_log_trans_tcc -= pm.math.logsumexp(thermal_log_trans_tcc, axis=-1)
+ thermal_log_trans_tcc -= logsumexp(thermal_log_trans_tcc, axis=-1)
thermal_log_emission_tc = inv_temperature * log_emission_tc
return thermal_log_prior_c, thermal_log_trans_tcc, thermal_log_emission_tc
@@ -343,31 +343,31 @@ def __init__(self,
self.update_norm_t = update_norm_t
-class TheanoViterbi:
- """Implementation of the Viterbi algorithm in theano."""
+class PytensorViterbi:
+ """Implementation of the Viterbi algorithm in pytensor."""
def __init__(self):
- self._viterbi_theano_func = self._get_compiled_viterbi_theano_func()
+ self._viterbi_pytensor_func = self._get_compiled_viterbi_pytensor_func()
def get_viterbi_path(self,
log_prior_c: np.ndarray,
log_trans_tcc: np.ndarray,
log_emission_tc: np.ndarray) -> List[int]:
- return self._viterbi_theano_func(log_prior_c, log_trans_tcc, log_emission_tc).tolist()
+ return self._viterbi_pytensor_func(log_prior_c, log_trans_tcc, log_emission_tc).tolist()
- @th.configparser.change_flags(compute_test_value="ignore")
- def _get_compiled_viterbi_theano_func(self) -> th.compile.function_module.Function:
- """Returns a theano function that calculates the Viterbi path."""
- log_prior_c = tt.vector('log_prior_c')
- log_trans_tcc = tt.tensor3('log_trans_tcc')
- log_emission_tc = tt.matrix('log_emission_tc')
+ @pytensor.config.change_flags(compute_test_value="ignore")
+ def _get_compiled_viterbi_pytensor_func(self) -> pytensor.compile.Function:
+ """Returns a pytensor function that calculates the Viterbi path."""
+ log_prior_c = pt.vector('log_prior_c')
+ log_trans_tcc = pt.tensor3('log_trans_tcc')
+ log_emission_tc = pt.matrix('log_emission_tc')
- return th.function(inputs=[log_prior_c, log_trans_tcc, log_emission_tc],
+ return pytensor.function(inputs=[log_prior_c, log_trans_tcc, log_emission_tc],
outputs=self._get_symbolic_viterbi_path(log_prior_c, log_trans_tcc, log_emission_tc))
@staticmethod
- def _get_symbolic_viterbi_path(log_prior_c: types.TheanoVector,
- log_trans_tcc: types.TheanoTensor3,
- log_emission_tc: types.TheanoMatrix):
+ def _get_symbolic_viterbi_path(log_prior_c: types.PytensorVector,
+ log_trans_tcc: types.PytensorTensor3,
+ log_emission_tc: types.PytensorMatrix):
"""Generates a symbolic 1d integer tensor representing the most-likely chain of hidden states
(Viterbi algorithm).
@@ -395,7 +395,7 @@ def calculate_next_omega_psi(p_log_trans_ab, c_log_emission_b, p_omega_a):
next omega, next psi
"""
tau_ab = p_log_trans_ab + p_omega_a.dimshuffle(0, 'x')
- max_tau_b, psi_b = tt.max_and_argmax(tau_ab, axis=0)
+ max_tau_b, psi_b = pt.max_and_argmax(tau_ab, axis=0)
n_omega_b = c_log_emission_b + max_tau_b
return n_omega_b, psi_b
@@ -416,7 +416,7 @@ def calculate_previous_best_state(c_psi_c, c_best_state):
# calculate the log data likelihood of the partial max sum-product paths (omega)
# and the backtracking table (psi)
- omega_psi_list, _ = th.scan(
+ omega_psi_list, _ = pytensor.scan(
fn=calculate_next_omega_psi,
sequences=[log_trans_tcc, log_emission_tc[1:, :]],
outputs_info=[omega_first_a, None])
@@ -424,16 +424,16 @@ def calculate_previous_best_state(c_psi_c, c_best_state):
psi_tc = omega_psi_list[1]
# the best terminal state
- last_best_state = tt.argmax(omega_tc[-1, :])
+ last_best_state = pt.argmax(omega_tc[-1, :])
# backtrack to obtain the previous states of the max sum-product path
- rest_best_states_t, _ = th.scan(
+ rest_best_states_t, _ = pytensor.scan(
fn=calculate_previous_best_state,
sequences=[psi_tc],
outputs_info=[last_best_state],
go_backwards=True)
# concatenate with the terminal state
- viterbi_path_t = tt.concatenate([tt.stack(last_best_state), rest_best_states_t])[::-1]
+ viterbi_path_t = pt.concatenate([last_best_state.dimshuffle('x'), rest_best_states_t])[::-1]
return viterbi_path_t
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/segment_quality_utils.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/segment_quality_utils.py
index 8ee677b909e..58dd81e835d 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/segment_quality_utils.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/segment_quality_utils.py
@@ -2,10 +2,10 @@
from typing import Dict, List
import numpy as np
-import pymc3 as pm
-import theano as th
-import theano.tensor as tt
-from scipy.misc import logsumexp
+import pytensor
+import pytensor.tensor as pt
+from ..models import commons
+from scipy.special import logsumexp
from ..utils.math import logsumexp_double_complement, logp_to_phred
@@ -67,9 +67,9 @@ def __init__(self,
for left_out_state in range(self.num_states)}
@staticmethod
- @th.configparser.change_flags(compute_test_value="ignore")
- def _get_compiled_constrained_path_logp_theano_func() -> th.compile.function_module.Function:
- """Returns a theano function that calculates the log posterior probability of hidden state paths composed
+ @pytensor.config.change_flags(compute_test_value="ignore")
+ def _get_compiled_constrained_path_logp_pytensor_func() -> pytensor.compile.Function:
+ """Returns a pytensor function that calculates the log posterior probability of hidden state paths composed
from a subset X of all hidden states S.
More explicitly, this function calculates the logp of all paths constrained to the hidden-state set
@@ -79,7 +79,7 @@ def _get_compiled_constrained_path_logp_theano_func() -> th.compile.function_mod
t < t_0 | t_0 t_1 ... t_N | t > t_N
c in S | c in X c in X c in X | c in S
- The inputs for the returned theano function are as follows:
+ The inputs for the returned pytensor function are as follows:
alpha_first_c: forward log likelihood (alpha) for t = t_0 and c in X
beta_last_c: backward log likelihood (beta) for t = t_N and c in X
@@ -101,32 +101,32 @@ def _get_compiled_constrained_path_logp_theano_func() -> th.compile.function_mod
are strictly forbidden by the prior and/or the transition matrix)
Returns:
- a theano function
+ a pytensor function
"""
- alpha_first_c = tt.vector('alpha_first_c')
- beta_last_c = tt.vector('beta_last_c')
- log_emission_tc = tt.matrix('log_emission_tc')
- log_trans_tcc = tt.tensor3('log_trans_tcc')
- log_data_likelihood = tt.scalar('log_data_likelihood')
-
- def update_alpha(c_log_emission_c: tt.vector,
- c_log_trans_cc: tt.matrix,
- p_alpha_c: tt.vector):
- return c_log_emission_c + pm.math.logsumexp(
+ alpha_first_c = pt.vector('alpha_first_c')
+ beta_last_c = pt.vector('beta_last_c')
+ log_emission_tc = pt.matrix('log_emission_tc')
+ log_trans_tcc = pt.tensor3('log_trans_tcc')
+ log_data_likelihood = pt.scalar('log_data_likelihood')
+
+ def update_alpha(c_log_emission_c: pt.vector,
+ c_log_trans_cc: pt.matrix,
+ p_alpha_c: pt.vector):
+ return c_log_emission_c + commons.logsumexp(
p_alpha_c.dimshuffle(0, 'x') + c_log_trans_cc, axis=0).dimshuffle(1)
- alpha_seg_iters, _ = th.scan(
+ alpha_seg_iters, _ = pytensor.scan(
fn=update_alpha,
sequences=[log_emission_tc, log_trans_tcc],
outputs_info=[alpha_first_c])
alpha_seg_end_c = alpha_seg_iters[-1, :]
inputs = [alpha_first_c, beta_last_c, log_emission_tc, log_trans_tcc, log_data_likelihood]
- output = pm.math.logsumexp(alpha_seg_end_c + beta_last_c) - log_data_likelihood
- return th.function(inputs=inputs, outputs=output)
+ output = commons.logsumexp(alpha_seg_end_c + beta_last_c) - log_data_likelihood
+ return pytensor.function(inputs=inputs, outputs=output)
# make a private static instance
- _constrained_path_logp_theano_func = _get_compiled_constrained_path_logp_theano_func.__func__()
+ _constrained_path_logp_pytensor_func = _get_compiled_constrained_path_logp_pytensor_func.__func__()
def get_log_constrained_posterior_prob(self,
start_index: int, end_index: int,
@@ -162,11 +162,11 @@ def get_log_constrained_posterior_prob(self,
self.log_emission_tc[(start_index + 1):(end_index + 1), allowed_states]
constrained_log_trans_tcc = \
self.log_trans_tcc[start_index:end_index, allowed_states, :][:, :, allowed_states]
- logp = self._constrained_path_logp_theano_func(
+ logp = self._constrained_path_logp_pytensor_func(
constrained_alpha_first_c, constrained_beta_last_c,
constrained_log_emission_tc, constrained_log_trans_tcc, self.log_data_likelihood)
- return np.asscalar(logp)
+ return logp.item()
def get_segment_quality_some_called(self, start_index: int, end_index: int, call_state: int) -> float:
"""Calculates the phred-scaled posterior probability that one or more ("some") sites in a segment have
@@ -224,7 +224,7 @@ def get_segment_quality_all_called(self, start_index: int, end_index: int, call_
if start_index == end_index:
log_compl_prob = logsumexp(
- self.log_posterior_prob_tc[start_index, self.leave_one_out_state_lists[call_state]])
+ self.log_posterior_prob_tc[start_index, self.leave_one_out_state_lists[call_state]])[0]
return logp_to_phred(log_compl_prob, complement=False)
else:
# calculate the uncorrelated log complementary probability
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/viterbi_segmentation.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/viterbi_segmentation.py
index 9a256a9e50b..d1fb831cb6a 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/viterbi_segmentation.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/postprocess/viterbi_segmentation.py
@@ -13,7 +13,7 @@
from ..io import io_consts, io_commons, io_denoising_calling, io_intervals_and_counts, io_vcf_parsing
from ..models.model_denoising_calling import DenoisingModelConfig, CopyNumberCallingConfig, \
HHMMClassAndCopyNumberBasicCaller
-from ..models.theano_hmm import TheanoForwardBackward, TheanoViterbi
+from ..models.pytensor_hmm import PytensorForwardBackward, PytensorViterbi
from ..structs.interval import Interval
from ..structs.metadata import IntervalListMetadata
from ..structs.metadata import SampleMetadataCollection
@@ -97,8 +97,8 @@ def __init__(self,
self.cnv_stay_prob_t_j[contig] = np.exp(-dist_t / self.calling_config.cnv_coherence_length)
# forward-backward algorithm
- _logger.info("Compiling theano forward-backward function...")
- self.theano_forward_backward = TheanoForwardBackward(
+ _logger.info("Compiling pytensor forward-backward function...")
+ self.pytensor_forward_backward = PytensorForwardBackward(
log_posterior_probs_output_tc=None,
resolve_nans=False,
do_thermalization=False,
@@ -107,13 +107,13 @@ def __init__(self,
include_alpha_beta_output=True)
# viterbi algorithm
- _logger.info("Compiling theano Viterbi function...")
- self.theano_viterbi = TheanoViterbi()
+ _logger.info("Compiling pytensor Viterbi function...")
+ self.pytensor_viterbi = PytensorViterbi()
# copy-number HMM specs generator
- _logger.info("Compiling theano variational HHMM...")
+ _logger.info("Compiling pytensor variational HHMM...")
self.get_copy_number_hmm_specs = HHMMClassAndCopyNumberBasicCaller\
- .get_compiled_copy_number_hmm_specs_theano_func()
+ .get_compiled_copy_number_hmm_specs_pytensor_func()
def _viterbi_segments_generator(self) -> Generator[IntegerCopyNumberSegment, None, None]:
"""Performs Viterbi segmentation and segment quality calculation for a single sample in
@@ -165,7 +165,7 @@ def _viterbi_segments_generator(self) -> Generator[IntegerCopyNumberSegment, Non
log_trans_contig_tcc = hmm_specs[1]
# run forward-back algorithm
- fb_result = self.theano_forward_backward.perform_forward_backward(
+ fb_result = self.pytensor_forward_backward.perform_forward_backward(
log_prior_c, log_trans_contig_tcc, copy_number_log_emission_contig_tc)
log_posterior_prob_tc = fb_result.log_posterior_probs_tc
log_data_likelihood = fb_result.log_data_likelihood
@@ -182,7 +182,7 @@ def _viterbi_segments_generator(self) -> Generator[IntegerCopyNumberSegment, Non
if bool(self.clustered_vcf is None) != bool(self.intervals_vcf is None):
raise Exception("If clustered_vcf is provided, then intervals_vcf must be provided.")
# run viterbi algorithm
- viterbi_path_t_contig = self.theano_viterbi.get_viterbi_path(
+ viterbi_path_t_contig = self.pytensor_viterbi.get_viterbi_path(
log_prior_c, log_trans_contig_tcc, copy_number_log_emission_contig_tc)
# coalesce into piecewise constant copy-number segments
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/inference_task_base.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/inference_task_base.py
index f650b1cfdaa..751b2b4cf63 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/inference_task_base.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/inference_task_base.py
@@ -7,9 +7,9 @@
from typing import List, Callable, Optional, Set, Tuple, Any, Dict
import numpy as np
-import pymc3 as pm
-import theano as th
-import theano.tensor as tt
+import pymc as pm
+import pytensor
+import pytensor.tensor as pt
import tqdm
from .. import types
@@ -40,7 +40,7 @@ def update_approximation(self, approx: pm.approximations.MeanField) -> None:
"""Take a new mean-field approximation and update the sampler routine accordingly.
Args:
- approx: an instance of PyMC3 mean-field posterior approximation
+ approx: an instance of PyMC mean-field posterior approximation
Returns:
None
@@ -198,9 +198,9 @@ class HybridInferenceTask(InferenceTask):
The general implementation motif is:
- (a) to store sufficient statistics from q(DRVs) as a shared theano tensor such that the the
+ (a) to store sufficient statistics from q(DRVs) as a shared pytensor tensor such that the the
model can access it,
- (b) to store log_emission(DRVs) as a shared theano tensor (or ndarray) such that the caller
+ (b) to store log_emission(DRVs) as a shared pytensor tensor (or ndarray) such that the caller
can access it, and:
(c) let the caller directly update the shared sufficient statistics.
"""
@@ -219,7 +219,7 @@ def __init__(self,
Args:
hybrid_inference_params: inference configuration
- continuous_model: a PyMC3 model representing the continuous sector of the PGM
+ continuous_model: a PyMC model representing the continuous sector of the PGM
sampler: log emission probability sampler
caller: discrete RV posterior updater
**kwargs: extra keywords
@@ -262,7 +262,7 @@ def __init__(self,
with self.continuous_model:
if not hasattr(self, 'temperature'):
initial_temperature = self.hybrid_inference_params.initial_temperature
- self.temperature: types.TensorSharedVariable = th.shared(
+ self.temperature: types.TensorSharedVariable = pytensor.shared(
np.asarray([initial_temperature], dtype=types.floatX))
initial_temperature = self.temperature.get_value()[0]
if (np.abs(initial_temperature - 1.0) < self.temperature_tolerance or
@@ -274,7 +274,7 @@ def __init__(self,
temperature_drop_per_iter = ((initial_temperature - 1.0) /
self.hybrid_inference_params.num_thermal_advi_iters)
temperature_update = [(self.temperature,
- tt.maximum(1.0, self.temperature - temperature_drop_per_iter))]
+ pt.maximum(1.0, self.temperature - temperature_drop_per_iter))]
self.continuous_model_advi = ADVIDeterministicAnnealing(
random_seed=self.hybrid_inference_params.random_seed,
@@ -341,7 +341,7 @@ def disengage(self):
def engage(self):
try:
all_converged = False
- while self.i_epoch <= self.hybrid_inference_params.max_training_epochs:
+ while self.i_epoch <= self.hybrid_inference_params.max_training_epochs:
_logger.debug("Starting epoch {0}...".format(self.i_epoch))
converged_continuous = self._update_continuous_posteriors()
all_converged = converged_continuous
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_case_denoising_calling.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_case_denoising_calling.py
index df9ddc38ada..a04d996831b 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_case_denoising_calling.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_case_denoising_calling.py
@@ -2,7 +2,7 @@
from typing import Callable
import numpy as np
-import theano as th
+import pytensor
from .inference_task_base import Caller, CallerUpdateSummary, HybridInferenceTask, HybridInferenceParameters
from .. import types
@@ -104,7 +104,7 @@ def __init__(self,
else:
_logger.info("Instantiating the copy number caller...")
initial_temperature = hybrid_inference_params.initial_temperature
- self.temperature: types.TensorSharedVariable = th.shared(
+ self.temperature: types.TensorSharedVariable = pytensor.shared(
np.asarray([initial_temperature], dtype=types.floatX))
copy_number_caller = HMMCopyNumberCaller(
calling_config, hybrid_inference_params, shared_workspace, self.temperature)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_denoising_calling.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_denoising_calling.py
index 91c5bac7a28..3cd7a4b3c5d 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_denoising_calling.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_denoising_calling.py
@@ -2,9 +2,10 @@
from typing import Callable, Optional
import numpy as np
-import pymc3 as pm
-import theano as th
+import pymc as pm
+import pytensor
+from ..models import commons
from .inference_task_base import Sampler, Caller, CallerUpdateSummary, HybridInferenceTask, HybridInferenceParameters
from .. import config, types
from ..models.model_denoising_calling import DenoisingModel, DenoisingModelConfig, \
@@ -14,6 +15,9 @@
_logger = logging.getLogger(__name__)
+_eps = commons.eps
+
+
class HHMMClassAndCopyNumberCaller(Caller):
"""This class is a wrapper around `HHMMClassAndCopyNumberBasicCaller` to be used in a cohort denoising and
calling task."""
@@ -53,15 +57,15 @@ def finalize(self):
# admix q_c_stc with the snapshot
self.shared_workspace.log_q_c_stc.set_value(
np.logaddexp(
- log_q_c_stc_latest + np.log(self.hybrid_inference_params.caller_external_admixing_rate),
- self.log_q_c_stc_snapshot + np.log(1 - self.hybrid_inference_params.caller_external_admixing_rate)),
+ log_q_c_stc_latest + np.log(np.maximum(self.hybrid_inference_params.caller_external_admixing_rate, _eps)),
+ self.log_q_c_stc_snapshot + np.log(np.maximum(1 - self.hybrid_inference_params.caller_external_admixing_rate, _eps))),
borrow=True)
# admix q_tau_tk with the snapshot
self.shared_workspace.log_q_tau_tk.set_value(
np.logaddexp(
- log_q_tau_tk_latest + np.log(self.hybrid_inference_params.caller_external_admixing_rate),
- self.log_q_tau_tk_snapshot + np.log(1 - self.hybrid_inference_params.caller_external_admixing_rate)),
+ log_q_tau_tk_latest + np.log(np.maximum(self.hybrid_inference_params.caller_external_admixing_rate, _eps)),
+ self.log_q_tau_tk_snapshot + np.log(np.maximum(1 - self.hybrid_inference_params.caller_external_admixing_rate, _eps))),
borrow=True)
def update_auxiliary_vars(self):
@@ -173,7 +177,7 @@ def __init__(self,
else:
_logger.info("Instantiating the copy number caller...")
initial_temperature = hybrid_inference_params.initial_temperature
- self.temperature: types.TensorSharedVariable = th.shared(
+ self.temperature: types.TensorSharedVariable = pytensor.shared(
np.asarray([initial_temperature], dtype=types.floatX))
copy_number_caller = HHMMClassAndCopyNumberCaller(
calling_config, hybrid_inference_params, shared_workspace, self.temperature)
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_ploidy_determination.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_ploidy_determination.py
index 7b949a68267..32630874b5c 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_ploidy_determination.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/tasks/task_cohort_ploidy_determination.py
@@ -1,6 +1,6 @@
import logging
import numpy as np
-import pymc3 as pm
+import pymc as pm
from typing import Callable
from .inference_task_base import Sampler, Caller, CallerUpdateSummary, \
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/types.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/types.py
index cf1ea24b562..1c30911f67b 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/types.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/types.py
@@ -1,9 +1,9 @@
import numpy as np
-import theano
-import theano.tensor as tt
+import pytensor
+import pytensor.tensor as pt
# the following dtype will be used for all float numpy ndarrays
-floatX = theano.config.floatX
+floatX = pytensor.config.floatX
# big uint dtype (used for aggregated counts)
big_uint = np.uint64
@@ -18,8 +18,8 @@
int_dtypes = [np.int8, np.int16, np.int32, np.int64]
uint_dtypes = [np.uint8, np.uint16, np.uint32, np.uint64]
-# theano tensor types
-TheanoVector = tt.TensorType(floatX, (False,))
-TheanoMatrix = tt.TensorType(floatX, (False, False))
-TheanoTensor3 = tt.TensorType(floatX, (False, False, False))
-TensorSharedVariable = theano.tensor.sharedvar.TensorSharedVariable
+# pytensor tensor types
+PytensorVector = pt.TensorType(floatX, (False,))
+PytensorMatrix = pt.TensorType(floatX, (False, False))
+PytensorTensor3 = pt.TensorType(floatX, (False, False, False))
+TensorSharedVariable = pytensor.tensor.sharedvar.TensorSharedVariable
diff --git a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/utils/math.py b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/utils/math.py
index caa97432f7d..33a5e6755ea 100644
--- a/src/main/python/org/broadinstitute/hellbender/gcnvkernel/utils/math.py
+++ b/src/main/python/org/broadinstitute/hellbender/gcnvkernel/utils/math.py
@@ -80,10 +80,10 @@ def logsumexp_double_complement(a: np.ndarray, rel_tol: float = 1e-3) -> float:
"""
try:
assert isinstance(a, np.ndarray)
- a = np.asarray(a.copy(), dtype=np.float)
+ a = np.asarray(a.copy(), dtype=float)
except AssertionError:
try:
- a = np.asarray(a, dtype=np.float)
+ a = np.asarray(a, dtype=float)
except ValueError:
raise ValueError("The input argument must be castable to a float ndarray.")
assert len(a) > 0
@@ -93,7 +93,7 @@ def logsumexp_double_complement(a: np.ndarray, rel_tol: float = 1e-3) -> float:
a[a > 0.] = 0.
if len(a) == 1:
- return np.asscalar(a)
+ return a.item()
else:
a = np.sort(a.flatten())[::-1]
x = a[0]
diff --git a/src/main/python/org/broadinstitute/hellbender/setup.py b/src/main/python/org/broadinstitute/hellbender/setup.py
index d4717d85396..82387193e2a 100644
--- a/src/main/python/org/broadinstitute/hellbender/setup.py
+++ b/src/main/python/org/broadinstitute/hellbender/setup.py
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
setup(name='gatkpythonpackages',
- version='0.1',
+ version='0.2',
description='GATK python packages',
author='GATK Team',
packages=find_packages(),
diff --git a/src/main/python/org/broadinstitute/hellbender/setup_gcnvkernel.py b/src/main/python/org/broadinstitute/hellbender/setup_gcnvkernel.py
index 02e70e47255..665812b3652 100644
--- a/src/main/python/org/broadinstitute/hellbender/setup_gcnvkernel.py
+++ b/src/main/python/org/broadinstitute/hellbender/setup_gcnvkernel.py
@@ -32,9 +32,9 @@ def get_version_string():
description='GATK gCNV computational kernel',
long_description=open('gcnvkernel/README.txt').read(),
install_requires=[
- "theano == 1.0.4",
- "pymc3 == 3.1",
- "numpy >= 1.13.1",
- "scipy >= 0.19.1",
- "tqdm >= 4.15.0"
+ "pymc == 5.10.0",
+ "pytensor == 2.18.1",
+ "numpy == 1.26.2",
+ "scipy == 1.11.4",
+ "tqdm == 4.66.1"
])
diff --git a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_denoising_calling.py b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_denoising_calling.py
index 20c1cc42965..5fa2ba0b752 100644
--- a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_denoising_calling.py
+++ b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_denoising_calling.py
@@ -1,12 +1,12 @@
import os
import sys
-# set theano flags
-user_theano_flags = os.environ.get("THEANO_FLAGS")
-default_theano_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
- "openmp=true,blas.ldflags=-lmkl_rt,openmp_elemwise_minsize=10"
-theano_flags = default_theano_flags + ("" if user_theano_flags is None else "," + user_theano_flags)
-os.environ["THEANO_FLAGS"] = theano_flags
+# set pytensor flags
+user_pytensor_flags = os.environ.get("PYTENSOR_FLAGS")
+default_pytensor_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
+ "openmp=true,blas__ldflags=-lmkl_rt,openmp_elemwise_minsize=10,exception_verbosity=high"
+pytensor_flags = default_pytensor_flags + ("" if user_pytensor_flags is None else "," + user_pytensor_flags)
+os.environ["PYTENSOR_FLAGS"] = pytensor_flags
import logging
import argparse
@@ -148,7 +148,7 @@ def update_args_dict_from_saved_model(input_model_path: str,
args = parser.parse_args()
gcnvkernel.cli_commons.set_logging_config_from_args(args)
- logger.info("THEANO_FLAGS environment variable has been set to: {theano_flags}".format(theano_flags=theano_flags))
+ logger.info("PYTENSOR_FLAGS environment variable has been set to: {pytensor_flags}".format(pytensor_flags=pytensor_flags))
# check gcnvkernel version in the input model path
gcnvkernel.io_commons.check_gcnvkernel_version_from_path(args.input_model_path)
diff --git a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_determine_ploidy_and_depth.py b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_determine_ploidy_and_depth.py
index 880f0dd4180..da3da6a8c37 100644
--- a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_determine_ploidy_and_depth.py
+++ b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/case_determine_ploidy_and_depth.py
@@ -1,11 +1,11 @@
import os
-# set theano flags
-user_theano_flags = os.environ.get("THEANO_FLAGS")
-default_theano_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
- "openmp=true,blas.ldflags=-lmkl_rt,openmp_elemwise_minsize=10"
-theano_flags = default_theano_flags + ("" if user_theano_flags is None else "," + user_theano_flags)
-os.environ["THEANO_FLAGS"] = theano_flags
+# set pytensor flags
+user_pytensor_flags = os.environ.get("PYTENSOR_FLAGS")
+default_pytensor_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
+ "openmp=true,blas__ldflags=-lmkl_rt,openmp_elemwise_minsize=10,exception_verbosity=high"
+pytensor_flags = default_pytensor_flags + ("" if user_pytensor_flags is None else "," + user_pytensor_flags)
+os.environ["PYTENSOR_FLAGS"] = pytensor_flags
import logging
import argparse
@@ -80,7 +80,7 @@
args = parser.parse_args()
gcnvkernel.cli_commons.set_logging_config_from_args(args)
- logger.info("THEANO_FLAGS environment variable has been set to: {theano_flags}".format(theano_flags=theano_flags))
+ logger.info("PYTENSOR_FLAGS environment variable has been set to: {pytensor_flags}".format(pytensor_flags=pytensor_flags))
# check gcnvkernel version in the input model path
gcnvkernel.io_commons.check_gcnvkernel_version_from_path(args.input_model_path)
diff --git a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_denoising_calling.py b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_denoising_calling.py
index bc9de7c9bc7..c9bbf1d398d 100644
--- a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_denoising_calling.py
+++ b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_denoising_calling.py
@@ -1,11 +1,11 @@
import os
-# set theano flags
-user_theano_flags = os.environ.get("THEANO_FLAGS")
-default_theano_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
- "openmp=true,blas.ldflags=-lmkl_rt,openmp_elemwise_minsize=10"
-theano_flags = default_theano_flags + ("" if user_theano_flags is None else "," + user_theano_flags)
-os.environ["THEANO_FLAGS"] = theano_flags
+# set pytensor flags
+user_pytensor_flags = os.environ.get("PYTENSOR_FLAGS")
+default_pytensor_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
+ "openmp=true,blas__ldflags=-lmkl_rt,openmp_elemwise_minsize=10,exception_verbosity=high"
+pytensor_flags = default_pytensor_flags + ("" if user_pytensor_flags is None else "," + user_pytensor_flags)
+os.environ["PYTENSOR_FLAGS"] = pytensor_flags
import logging
import argparse
@@ -100,7 +100,7 @@
args = parser.parse_args()
gcnvkernel.cli_commons.set_logging_config_from_args(args)
- logger.info("THEANO_FLAGS environment variable has been set to: {theano_flags}".format(theano_flags=theano_flags))
+ logger.info("PYTENSOR_FLAGS environment variable has been set to: {pytensor_flags}".format(pytensor_flags=pytensor_flags))
# copy the intervals to the model and calls paths
# (we do this early to avoid inadvertent cleanup of temporary files)
diff --git a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_determine_ploidy_and_depth.py b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_determine_ploidy_and_depth.py
index 913c2ab8f21..57c8b1d4c04 100644
--- a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_determine_ploidy_and_depth.py
+++ b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/cohort_determine_ploidy_and_depth.py
@@ -1,11 +1,11 @@
import os
-# set theano flags
-user_theano_flags = os.environ.get("THEANO_FLAGS")
-default_theano_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
- "openmp=true,blas.ldflags=-lmkl_rt,openmp_elemwise_minsize=10"
-theano_flags = default_theano_flags + ("" if user_theano_flags is None else "," + user_theano_flags)
-os.environ["THEANO_FLAGS"] = theano_flags
+# set pytensor flags
+user_pytensor_flags = os.environ.get("PYTENSOR_FLAGS")
+default_pytensor_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
+ "openmp=true,blas__ldflags=-lmkl_rt,openmp_elemwise_minsize=10,exception_verbosity=high"
+pytensor_flags = default_pytensor_flags + ("" if user_pytensor_flags is None else "," + user_pytensor_flags)
+os.environ["PYTENSOR_FLAGS"] = pytensor_flags
import logging
import argparse
@@ -86,7 +86,7 @@
args = parser.parse_args()
gcnvkernel.cli_commons.set_logging_config_from_args(args)
- logger.info("THEANO_FLAGS environment variable has been set to: {theano_flags}".format(theano_flags=theano_flags))
+ logger.info("PYTENSOR_FLAGS environment variable has been set to: {pytensor_flags}".format(pytensor_flags=pytensor_flags))
# copy the intervals and ploidy priors to the model path
# (we do this early to avoid inadvertent cleanup of temporary files)
diff --git a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/segment_gcnv_calls.py b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/segment_gcnv_calls.py
index 2345ef83d6d..5fbb293b3ea 100644
--- a/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/segment_gcnv_calls.py
+++ b/src/main/resources/org/broadinstitute/hellbender/tools/copynumber/segment_gcnv_calls.py
@@ -1,11 +1,11 @@
import os
-# set theano flags
-user_theano_flags = os.environ.get("THEANO_FLAGS")
-default_theano_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
- "openmp=true,blas.ldflags=-lmkl_rt,openmp_elemwise_minsize=10"
-theano_flags = default_theano_flags + ("" if user_theano_flags is None else "," + user_theano_flags)
-os.environ["THEANO_FLAGS"] = theano_flags
+# set pytensor flags
+user_pytensor_flags = os.environ.get("PYTENSOR_FLAGS")
+default_pytensor_flags = "device=cpu,floatX=float64,optimizer=fast_run,compute_test_value=ignore," + \
+ "openmp=true,blas__ldflags=-lmkl_rt,openmp_elemwise_minsize=10,exception_verbosity=high"
+pytensor_flags = default_pytensor_flags + ("" if user_pytensor_flags is None else "," + user_pytensor_flags)
+os.environ["PYTENSOR_FLAGS"] = pytensor_flags
import logging
import argparse
@@ -73,7 +73,7 @@
args = parser.parse_args()
gcnvkernel.cli_commons.set_logging_config_from_args(args)
- logger.info("THEANO_FLAGS environment variable has been set to: {theano_flags}".format(theano_flags=theano_flags))
+ logger.info("PYTENSOR_FLAGS environment variable has been set to: {pytensor_flags}".format(pytensor_flags=pytensor_flags))
# load read depth and ploidy metadata
logger.info("Loading ploidy calls...")
diff --git a/src/test/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCallerIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCallerIntegrationTest.java
index 056e40a5f9a..174ecb604f1 100644
--- a/src/test/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCallerIntegrationTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/tools/copynumber/GermlineCNVCallerIntegrationTest.java
@@ -46,8 +46,8 @@ public final class GermlineCNVCallerIntegrationTest extends CommandLineProgramTe
private static final File SIM_INTERVAL_LIST_SHARD_0_ANNOTATED_FILE = new File(GCNV_SIM_DATA_DIR + "sim_intervals_shard_0.annotated.tsv");
private static final double ALLOWED_DELTA_FOR_DOUBLE_VALUES = 1E-6;
- final List MODEL_FILES_TO_COMPARE = Arrays.asList("log_q_tau_tk.tsv", "mu_ard_u_log__.tsv", "mu_psi_t_log__.tsv",
- "std_ard_u_log__.tsv", "std_psi_t_log__.tsv", "mu_W_tu.tsv", "mu_log_mean_bias_t.tsv", "std_W_tu.tsv", "std_log_mean_bias_t.tsv");
+ final List MODEL_FILES_TO_COMPARE = Arrays.asList("log_q_tau_tk.tsv", "mu_ard_u_interval__.tsv", "mu_psi_t_log__.tsv",
+ "std_ard_u_interval__.tsv", "std_psi_t_log__.tsv", "mu_W_tu.tsv", "mu_log_mean_bias_t.tsv", "std_W_tu.tsv", "std_log_mean_bias_t.tsv");
final List CALLS_FILES_TO_COMPARE = Arrays.asList("baseline_copy_number_t.tsv", "log_c_emission_tc.tsv",
"log_q_c_tc.tsv", "mu_psi_s_log__.tsv", "mu_read_depth_s_log__.tsv",
"mu_z_su.tsv", "sample_name.txt", "std_psi_s_log__.tsv",
@@ -182,7 +182,7 @@ public void testNumericalAccuracy() {
} catch (final IOException ex) {
throw new GATKException("Could not remove GermlineCNVCaller tracking files.");
}
- IntStream.range(1, 20).forEach(
+ IntStream.range(1, TEST_COUNT_FILES.length).forEach(
s -> {
try {
FileUtils.deleteDirectory(new File(Paths.get(GCNV_TEST_OUTPUT_DIR, outputPrefix + "-calls", "SAMPLE_" + s).toString()));
diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariantsIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariantsIntegrationTest.java
index 9ed10874a40..591a9db98e0 100644
--- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariantsIntegrationTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNScoreVariantsIntegrationTest.java
@@ -52,7 +52,7 @@ public void testRequirePythonEnvironment() throws IOException {
/**
* Run the tool on a small test VCF.
*/
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testAllDefaultArgs() {
final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
final File tempVcf = createTempFile("tester", ".vcf");
@@ -66,7 +66,7 @@ public void testAllDefaultArgs() {
assertInfoFieldsAreClose(tempVcf, expectedVcf, GATKVCFConstants.CNN_1D_KEY);
}
- @Test(groups = {"python"}, expectedExceptions = PythonScriptExecutorException.class)
+ @Test(groups = {"python"}, expectedExceptions = PythonScriptExecutorException.class, enabled = false)
public void testExceptionDuringAsyncBatch() {
final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
final File tempVcf = createTempFile("tester", ".vcf");
@@ -82,7 +82,7 @@ public void testExceptionDuringAsyncBatch() {
runCommandLine(argsBuilder);
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceArchitecture() {
final boolean newExpectations = false;
final String expectedVCFName = largeFileTestDir + "VQSR/expected/cnn_1d_chr20_subset_expected.vcf";
@@ -104,7 +104,7 @@ public void testInferenceArchitecture() {
}
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceWeights() {
final File tempVcf = createTempFile("tester", ".vcf");
final File expectedVcf = new File(largeFileTestDir + "VQSR/expected/cnn_1d_chr20_subset_expected.vcf");
@@ -119,7 +119,7 @@ public void testInferenceWeights() {
assertInfoFieldsAreClose(tempVcf, expectedVcf, GATKVCFConstants.CNN_1D_KEY);
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceArchitectureAndWeights() {
final File tempVcf = createTempFile("tester", ".vcf");
final File expectedVcf = new File(largeFileTestDir + "VQSR/expected/cnn_1d_chr20_subset_expected.vcf");
@@ -135,7 +135,7 @@ public void testInferenceArchitectureAndWeights() {
assertInfoFieldsAreClose(tempVcf, expectedVcf, GATKVCFConstants.CNN_1D_KEY);
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceWithIntervals() {
final boolean newExpectations = false;
final String expectedVCFName = largeFileTestDir + "VQSR/expected/cnn_1d_contig20_1m_10m_expected.vcf";
@@ -157,7 +157,7 @@ public void testInferenceWithIntervals() {
}
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testSmallBatchInference() {
final File tempVcf = createTempFile("tester", ".vcf");
final File expectedVcf = new File(largeFileTestDir + "VQSR/expected/cnn_1d_chr20_subset_expected.vcf");
@@ -172,7 +172,7 @@ public void testSmallBatchInference() {
assertInfoFieldsAreClose(tempVcf, expectedVcf, GATKVCFConstants.CNN_1D_KEY);
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testOnContigEdge() {
final String edgeVcf = toolsTestDir + "walkers/VQSR/variantNearContigEdge.vcf";
final File tempVcf = createTempFile("tester", ".vcf");
@@ -190,7 +190,7 @@ public void testOnContigEdge() {
/**
* Run the 2D Model on a small test VCF with the resource loaded weights and architecture.
*/
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInference2dResourceModel() {
// We reset the random number generator at the beginning of each test so that the random down-sampling of reads
// by the reservoir down-sampler does not cause slightly different scores.
@@ -215,7 +215,7 @@ public void testInference2dResourceModel() {
/**
* Run the 2D Model on a small test VCF.
*/
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceArchitecture2d() {
Utils.resetRandomGenerator();
final boolean newExpectations = false;
@@ -243,7 +243,7 @@ public void testInferenceArchitecture2d() {
}
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceWeights2d() {
Utils.resetRandomGenerator();
TensorType tt = TensorType.read_tensor;
@@ -264,7 +264,7 @@ public void testInferenceWeights2d() {
assertInfoFieldsAreClose(tempVcf, expectedVcf, GATKVCFConstants.CNN_2D_KEY);
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testInferenceArchitectureAndWeights2d() {
Utils.resetRandomGenerator();
TensorType tt = TensorType.read_tensor;
@@ -300,7 +300,4 @@ private void assertInfoFieldsAreClose(File actualVcf, File expectedVcf, String i
}
Assert.assertTrue(!expectedVi.hasNext() && !actualVi.hasNext());
}
-
-
-
}
diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantPipelineTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantPipelineTest.java
index b7b4834d0f1..c5504b9bbc0 100644
--- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantPipelineTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/CNNVariantPipelineTest.java
@@ -17,13 +17,13 @@ public class CNNVariantPipelineTest extends GATKBaseTest {
private static File readTensorDir;
private static File referenceTensorDir;
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public static void makeTempDirectories() {
readTensorDir = createTempDir("readTensorDir");
referenceTensorDir = createTempDir("referenceTensorDir");
}
- @Test(groups = {"python"}, dependsOnMethods = {"makeTempDirectories"})
+ @Test(groups = {"python"}, dependsOnMethods = {"makeTempDirectories"}, enabled = false)
public void testGenerateReferenceTensors() {
final ArgumentsBuilder args = new ArgumentsBuilder();
args.addRaw("CNNVariantWriteTensors")
@@ -37,7 +37,7 @@ public void testGenerateReferenceTensors() {
new Main().instanceMain(args.getArgsArray());
}
- @Test(groups = {"python"}, dependsOnMethods = {"makeTempDirectories"})
+ @Test(groups = {"python"}, dependsOnMethods = {"makeTempDirectories"}, enabled = false)
public void testGenerateReadTensors() {
final String bamFile = largeFileTestDir + "VQSR/g94982_b37_chr20_1m_8m_bamout.bam";
final ArgumentsBuilder args = new ArgumentsBuilder();
@@ -55,7 +55,7 @@ public void testGenerateReadTensors() {
new Main().instanceMain(args.getArgsArray());
}
- @Test(groups = {"python"}, dependsOnMethods = {"testGenerateReferenceTensors"})
+ @Test(groups = {"python"}, dependsOnMethods = {"testGenerateReferenceTensors"}, enabled = false)
public void testTrainingReferenceModel() {
final ArgumentsBuilder args = new ArgumentsBuilder();
args.addRaw("CNNVariantTrain")
@@ -69,7 +69,7 @@ public void testTrainingReferenceModel() {
new Main().instanceMain(args.getArgsArray());
}
- @Test(groups = {"python"}, dependsOnMethods = {"testGenerateReadTensors"})
+ @Test(groups = {"python"}, dependsOnMethods = {"testGenerateReadTensors"}, enabled = false)
public void testTrainingReadModel() {
final ArgumentsBuilder args = new ArgumentsBuilder();
args.addRaw("CNNVariantTrain")
@@ -85,7 +85,7 @@ public void testTrainingReadModel() {
new Main().instanceMain(args.getArgsArray());
}
- @Test(groups = {"python"})
+ @Test(groups = {"python"}, enabled = false)
public void testTranches() {
final String trancheVCF = largeFileTestDir + "VQSR/g94982_b37_chr20_1m_10m.vcf.gz";
final String snpTruthVCF = largeFileTestDir + "VQSR/giab_chr20_1m_10m.vcf.gz";
diff --git a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/FilterVariantTranchesIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/FilterVariantTranchesIntegrationTest.java
index f0f76f11e6e..6587a957dad 100644
--- a/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/FilterVariantTranchesIntegrationTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/tools/walkers/vqsr/FilterVariantTranchesIntegrationTest.java
@@ -97,7 +97,7 @@ public Object[][] getGoodResourceCombos() {
/**
* Run the tool on a small test VCF.
*/
- @Test(dataProvider = "getFilteringArgs")
+ @Test(dataProvider = "getFilteringArgs", enabled = false)
public void runTrancheFiltering(final List resources, final List extraArgs,
final String expectedOutput) throws IOException {
final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
@@ -113,7 +113,7 @@ public void runTrancheFiltering(final List resources, final List
spec.executeTest("testTrancheFiltering", this);
}
- @Test(dataProvider = "getBadResourceCombos", expectedExceptions = UserException.BadInput.class)
+ @Test(dataProvider = "getBadResourceCombos", expectedExceptions = UserException.BadInput.class, enabled = false)
public void runTrancheFilteringOnBadInputs(final String inputVcf, final String resourceVcf) {
final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
argsBuilder.add(StandardArgumentDefinitions.VARIANT_LONG_NAME, inputVcf)
@@ -125,7 +125,7 @@ public void runTrancheFilteringOnBadInputs(final String inputVcf, final String r
runCommandLine(argsBuilder);
}
- @Test(dataProvider = "getGoodResourceCombos")
+ @Test(dataProvider = "getGoodResourceCombos", enabled = false)
public void runTrancheFilteringOnGoodInputs(final String inputVcf, final String resourceVcf) {
final ArgumentsBuilder argsBuilder = new ArgumentsBuilder();
argsBuilder.add(StandardArgumentDefinitions.VARIANT_LONG_NAME, inputVcf)
diff --git a/src/test/java/org/broadinstitute/hellbender/utils/python/PythonEnvironmentIntegrationTest.java b/src/test/java/org/broadinstitute/hellbender/utils/python/PythonEnvironmentIntegrationTest.java
index b055d8461cd..f7f1baf0f38 100644
--- a/src/test/java/org/broadinstitute/hellbender/utils/python/PythonEnvironmentIntegrationTest.java
+++ b/src/test/java/org/broadinstitute/hellbender/utils/python/PythonEnvironmentIntegrationTest.java
@@ -17,17 +17,16 @@ public Object[][] getDataPackagePresent() {
return new Object[][] {
// names of base packages that we should be able to import from within the GATK conda environment
// NOTE: these must be kept in sync with the versions in gatkcondaenv.yml.template
- { "mkl", "2.3.0" },
- { "numpy", "1.17.5" },
- { "theano", "1.0.4" },
- { "tensorflow", "1.15.0" },
- { "scipy", "1.0.0" },
- { "pymc3", "3.1" },
- { "keras", "2.2.4" },
- { "h5py", "2.10.0" },
- { "sklearn", "0.23.1" },
- { "matplotlib", "3.2.1" },
- { "pandas", "1.0.3" },
+ { "mkl", "2.4.0" },
+ { "numpy", "1.26.2" },
+ { "pytensor", "2.18.1" },
+ { "torch", "2.1.0.post100" },
+ { "scipy", "1.11.4" },
+ { "pymc", "5.10.0" },
+ { "h5py", "3.10.0" },
+ { "sklearn", "1.3.2" },
+ { "matplotlib", "3.8.2" },
+ { "pandas", "2.1.3" },
{ "argparse", null },
{ "gcnvkernel", null },
@@ -43,9 +42,9 @@ public Object[][] getDataPackagePresent() {
@DataProvider(name="dataPackageMKLEnabled")
public Object[][] getDataPackageMKLEnabled() {
return new Object[][] {
- { "numpy", "numpy.__config__.get_info('blas_mkl_info') != {} and numpy.__config__.get_info('lapack_mkl_info') != {}" },
- { "theano", "'-lmkl_rt' in theano.config.blas.ldflags" },
- { "tensorflow", "tensorflow.pywrap_tensorflow.IsMklEnabled()" }
+ // { "numpy", "numpy.__config__.get_info('blas_mkl_info') != {} and numpy.__config__.get_info('lapack_mkl_info') != {}" }, TODO this check was removed after the update to conda-forge numpy 1.26.2, see https://github.com/broadinstitute/gatk/pull/8561
+ { "pytensor", "'-lmkl_rt' in pytensor.config.blas__ldflags" },
+ { "torch", "'BLAS_INFO=mkl' in torch.__config__.show() and 'USE_MKL=ON' in torch.__config__.show()" }
};
}
diff --git a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-contig-ploidy-model.tar.gz b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-contig-ploidy-model.tar.gz
index 3a899addca0..9bd909d1365 100644
--- a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-contig-ploidy-model.tar.gz
+++ b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-contig-ploidy-model.tar.gz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a667caea27776a91ae612f57769fd79fde2850fe7d98ce9903c787bccbad1a1e
-size 1221
+oid sha256:6f7ca34ae9404a25deaaab2d52861f2f8d5ac5f3ad9091217eea13617b6e4b05
+size 1220
diff --git a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-0.tar.gz b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-0.tar.gz
deleted file mode 100644
index a2817af5f8f..00000000000
--- a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-0.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dcad7edb5752c9012f3d69b932c09bf6c9b552e3785a8b1c1256aa65ecb38de0
-size 4995
diff --git a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-1.tar.gz b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-1.tar.gz
deleted file mode 100644
index 2307cb16fb8..00000000000
--- a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-1.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:74fdf99dbcc233878045812ebc891ce2923f08a9ab87daec1fa483b8afdb02ea
-size 5164
diff --git a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-0.tar.gz b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-0.tar.gz
new file mode 100644
index 00000000000..fd89db73910
--- /dev/null
+++ b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-0.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dfce6dc17d025d807d70abf175a114152199ee567cce2b961f8a004e5c252abd
+size 5484
diff --git a/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-1.tar.gz b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-1.tar.gz
new file mode 100644
index 00000000000..b4c7ca1232b
--- /dev/null
+++ b/src/test/resources/large/cnv_germline_workflows_test_files/wes-do-gc-gcnv-model-shard-1.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46850623e7c6a29464b395c9a03f23c9882eef80bd4febbfa94ca405a4d743e9
+size 5679
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
index 9f4e9f393ef..4a3832315c2 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:92a91bb19f59cb602656805cd7efb2bb302022686fe21aef03a51e7ea3c0aef0
+oid sha256:37b0fba04da7bd6b31603589cbb3a024a0e8ff015afd3ae9f4224968aadf8947
size 736656
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
index c9eee51c9c5..b6c56f8928e 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5f99391792c228f5f34bb83dc581d521e03e06f442140b8f3af3066dcb9592ce
+oid sha256:ef9dc857ae0f5de4400392510cd29fdfb021b652452107acc8c7de58ca2a995c
size 35136
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
index 4d0b41d5596..02a75b8d1d0 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2eefcac29c9ccf8760a6d3a9e55cb863c9e4ea804a1a78ba38db4c448cb41b20
+oid sha256:3b16c304094874edc697ceb1b1670964b59cd368cac14568f41b27d31c9a13e1
size 119223
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
index 08faea04b52..00abb8653c2 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4510202dd1e097698b2f862fafa8d076d2d8e11cf5908bf3883fe6f618d69fa7
+oid sha256:6d6766cbc14bc46decb4e9988b4673c496eeb36e459518b63803ebf67460947e
size 822288
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
index 3d0cb431766..ee86e9be9ea 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a0bcf784e97396a9b14dc65912d043ad011dbe1c9c8d70e9eea1b45502eb7d7d
+oid sha256:6723bed0b9a12cb2f1a65f24fb935394c3fb9fd61241cb851ba661b46058059f
size 38440
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
index c1a130a9f64..710fe3015b3 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eb24eed9c59f80aae758dc2fb89130c782fbc07e14220da57d46936611d8c390
+oid sha256:ff8b6c63699ba61594253fbf6eb4be3c6bb14cbc8840756c75663ece79702519
size 119228
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
index 711ae0e8e75..7f83d120f00 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.annot.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dcf123ed80e8c503ad4d2d1364be63f22d82379b32eb0c4f563f08cb4abbb2df
+oid sha256:68f65b0e44c244b6c06009410ae980d5621f7d42ef7c2d1a88e8e24fefca826e
size 766368
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
index ca29220bbcc..e97d52d13bf 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.scores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d8467b31a8916052b511adf002a877b36a0b5fb0e64d035022b337beabd437da
+oid sha256:fcc5549758e3614c782a8c5d05a0819a075a0a9dd31e1127934f8f28b05d8dc3
size 34960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
index e19112ffa42..40970b29e77 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snp.vcf.idx
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bdbec4dc5e2c9263da4b217e33fd7fbf4dac34f9f42821d3d8c69136b9131f62
+oid sha256:8fb32c2bc02ae5a7aa49cf2dbbbc5c538f856196424c43bf5a295f1f9b97354c
size 119226
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
index bf62479462f..67c8449519f 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.annot.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6539c887b88be6d4b2ed0b03866d2d20054c0cbb24f777d27cc043bcbcc69055
+oid sha256:8d9f97c92a9834e1681ea33f83f07a73c34e449dfd24a39e9fec2d5215cbfb69
size 829672
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
index a65701f8e94..2af89abdafb 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.scores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b19295ce01f6d6a84b48c88e8a53c23d65036b34f04a1ac7f13760b803813aa4
+oid sha256:c802cfcbd764a97ec9f4b9a6013a6d51170c8cf692991744a71361a77b8fae02
size 37720
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
index 7fbb1578345..bcdc61ba099 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/score/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.score.snpIndel.vcf.idx
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e95e34b18a698a7d4db138297b3f13c427d8b371d1c0e94f289f05ae240f438b
+oid sha256:0f1d92bbf0237c9605ccda22f7424b5b343bf68448ef57ba7c30c7e3fe870799
size 119231
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
index 87a0e1fb673..d238c241641 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a69d8be00a405393e7225de43dec5062960a1479d072147ca5567d147cbfcc0e
+oid sha256:a01e776f02ede2668fc1017f674f9097125056e56919d1712bfddae741b5e51a
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
index 878c70e32cf..3a3f26b4dce 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:53208c713c15b00219ddd4e58bad09760aa69b3dc1f461b5dfc1c00dafcb60f2
-size 506090
+oid sha256:fa8a56dcfe22903092b70b71dd6be0f040ab7c88da2ce0f376c8c23696b483aa
+size 675761
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
index 075fc97dc84..9c13e97802f 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3fe601531fd5550641d7d8f067317974535b6c4b13e9b87395c8358e7c21f727
+oid sha256:da28e1eabfcd2bf4c2e383bf53790c2b225a4b8c778f6189715f7eb82263f01a
size 5984
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
index 508d6e5e8ca..28453b4fa00 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9aba848f3b17a0fdf20b77fd2130ce5e046ee414fafaf6f1932f6942d3bb5154
+oid sha256:df743271a2edca9544a12a52f28ead02b988e6bebdc162eb468d7d8ccfbe058e
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
index 348ebedf945..53a2f5761ae 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:be6d3e97dbe88caeead043c0264b7345589da11bf3e3842693bec9fccac9f802
-size 514532
+oid sha256:ec00bc66c288fec259d85e7f5da18708dd446fbd56505d60714a98a4cd205d46
+size 687359
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
index b5928ae8cc8..ec2891bab13 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:553ceb53a7532b22325d190e1abc5811c4f35ac9cccca045749071387bdbd591
+oid sha256:21727d69c6f64539bc18bf6d57a3ce88d8ce0893f771732215dc16c10554d49c
size 5984
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
index 1b4921f90a7..3123ce04acc 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fda610215d821f1d4e293ccefe6a686a27c93d0e58aadedc707bb67e0a444ae7
+oid sha256:453661295a8dd13c001f16effe8f938e7656cf2d5ef1a57a695794e1d79bcacd
size 2664
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
index 91f3b632ebb..b839ed75aea 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c58bf9278b1a9c70d60a1684dbd69fd6e974721e353fe7013a4001ac5bedd119
-size 235813
+oid sha256:e7e282f17e675ea532825867dd4f92ff309e8937a0075ed9030b0670a00a8d1a
+size 303759
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
index c2f5300398b..437120e1021 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eaf9745f9dd6760f97071f039266cfe92f7b23a6a842b074a0eb792d703c1e95
+oid sha256:5bbc458f53ea3c025bb2de6d27598d0c978a3e9c967b06dbc4e2e4aa9f609f6a
size 2880
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
index 8451c5af1ce..d238c241641 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0aef3eaf4b5c7a7b4d989bf9e301989b09f4166c44720c1e262175e0a1666e57
+oid sha256:a01e776f02ede2668fc1017f674f9097125056e56919d1712bfddae741b5e51a
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
index 3752daac4ea..80e85a87fc4 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ee5b22167a12ed4442b68e4a76c7cf8b7376fdad497477fc8841612ac1c42f0c
-size 506091
+oid sha256:cbfa8556e9d620183ab6f1dfc08d0857674ab9a9079160aeef911146d7164d42
+size 675761
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
index edee01df34a..9c13e97802f 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5bed814a55db262a22feaabcb6f5d146ce6d50c0d185624527c8a93c04a4e5d3
+oid sha256:da28e1eabfcd2bf4c2e383bf53790c2b225a4b8c778f6189715f7eb82263f01a
size 5984
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
index acb8b7665b6..b379907e52d 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b5c0c633bc90d621dea90fcddbc376dacb5158ea4c8d042fa2f032bc298fcea4
+oid sha256:bc812df63183ff595509abd7b22222138183b7d7bce870c8af1064cb019dd959
size 2664
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
index 6b3104e110c..4de03c35470 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e80bc19607efaa536f9dee44ef5cca3ce2554a9d6c9b498694bd9de73f8da40d
-size 240054
+oid sha256:5a8417840107f34dea2a064bb7c82315db1380b246149e4d20ce3d28fd27589a
+size 309621
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
index dc1d7ca0939..ffd315000c2 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b1d33427231297c88a256a360f8ad19f83955fa243df86688eaeff2367117f8a
+oid sha256:243d1e7a111ffe5fe063aadf103377daca4692252580d485fde29f677b72412b
size 2880
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
index 13fed2b64c1..28453b4fa00 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:34f0ea2371ffb2a7d639a264882d8498bc0825a2a93a7a6f9eb97c86b88892d2
+oid sha256:df743271a2edca9544a12a52f28ead02b988e6bebdc162eb468d7d8ccfbe058e
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
index 348ebedf945..53a2f5761ae 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:be6d3e97dbe88caeead043c0264b7345589da11bf3e3842693bec9fccac9f802
-size 514532
+oid sha256:ec00bc66c288fec259d85e7f5da18708dd446fbd56505d60714a98a4cd205d46
+size 687359
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
index afde6beac8f..ec2891bab13 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.AS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ba41d40b3e1297b46bfe0ebb96e54048ba8e4dcdd4f021b496d7903e519bfa4f
+oid sha256:21727d69c6f64539bc18bf6d57a3ce88d8ce0893f771732215dc16c10554d49c
size 5984
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
index b8c18492487..f8b7270d54c 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4f0b956ad8c517d885254ba6f392713e098a92aeeccc699c5a17f53c1504f119
+oid sha256:9b327cce53e5f77a5f13bde8b292ab4dec10c99a687b2ae6dffc9bbaae0bd9ff
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
index a9a9086bb5e..cf07d149b2b 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0cf2f338bb130d899eca8ceab17339f6f166958642101de301fb8458b11131a1
-size 556675
+oid sha256:70a9d18db20e99e59bd558d7ff97e3412b4559c3431f3a4a214b408e4e6d73ad
+size 745026
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
index 486c29310ee..34b5719a3a8 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IF.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:537cb3879bde1388c6eca2035682a0c7b771ce790b523649e65f167a23eed255
+oid sha256:4e62d9033c86235989dbc8620baac10f26ede0de3e55c7db4f775542d052cdd5
size 5992
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
index 8fe0c3fa585..98b043e0465 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:25b24f7a4b85ad16f63043285fb31cd580e3498629bab0ef257a98d7ec318471
+oid sha256:679265d663977578c529d19f08f8115c766a3eab8d364110be1d86f11554b7e7
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
index ac1fe518303..d545e48f71e 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0510d85a2680139fbfb2d3c8f2d5fed8977af834bf82d09d9090a06fa8d454f4
-size 525312
+oid sha256:b1c6222a7428aabca3ed19f2cf910e0d4e62a167e1c28c500fa45ef19d90cc39
+size 701888
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
index 075038efb0f..4e6f027b951 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snp.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:742c4374a393e2f86ad836001576d77210dc62cdf11cf8748abffe4399c02d0f
+oid sha256:75f6f2d806c53feeabafb16ef9670815e55abea6d6027244ca1807e83af11522
size 5992
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
index 9937d988ad3..65319af8841 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9c9b6a3bf6461653330c84b6ed491fbaf065e87c00b707409009a48e55dc3546
+oid sha256:1789f94dac3fe6057ec46566a97fc908edba411c2c7616faf70d0fdba97d56c2
size 2664
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
index 7ab5b7071f4..3cf5358e1c7 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cb95c34fdfa9bb4126d27355e39708de5d273694ce2edf639a02c324608bfdd2
-size 259163
+oid sha256:2051438864088e800965fce0ef1fa08a0cd8d161714a43c9df21dedd69bad2d4
+size 335626
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
index 61cd73704ad..00ba9b4c77d 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.indel.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8b1c27c9bb2587fed510eb347fe53332828c2ee0f1cc6f22f8e259d275c5f877
+oid sha256:1188176ff609cbf239c335cb4bc12fc452d6260dcaf4a4c53e2e5747b8d16906
size 2880
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
index 91c0e50cbd1..f8b7270d54c 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bfb11237cffa3309f53869996111de5be91efacc8b210d43101535d90d6195a4
+oid sha256:9b327cce53e5f77a5f13bde8b292ab4dec10c99a687b2ae6dffc9bbaae0bd9ff
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
index 786b299758d..bd0aed5c37d 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9113bec7467a7b597e6af65108fd19f2260510fc0174fa5bf071ca1b837e0b28
-size 556675
+oid sha256:6698b5ef71faec887d695db160b4e4ec3dc39d8253643bc25b20cec290dae2eb
+size 745026
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
index 7f5f3e9342d..34b5719a3a8 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IF.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:21a219096d12b0122e0e7dc7962d26911289d2e17377d606bb504cb3bf87daa6
+oid sha256:4e62d9033c86235989dbc8620baac10f26ede0de3e55c7db4f775542d052cdd5
size 5992
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
index 8a91db1f5b2..2d1285760f0 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2e3fc94a375bde9284a219c1c2eb2b204731af0c4fce15426f7903f6fed43ecb
+oid sha256:e91d3841214988d91364471b27024a495b662515f5f9c20a94e794f85ffacee0
size 2664
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
index 1142e1f4599..52275e5b82e 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:426cec56e16eec10f47c824797c035772d1ebf3cf4f73972e8a541deca622cd3
-size 248813
+oid sha256:27f65e711318ed5c45cb72eb709476a9837ce0087fb1f3c354819d3eebe6ac19
+size 321415
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
index e0fdf55eb20..8a74a57221f 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.indel.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9ae00383d5302dfb129e6e7c0c61cb115e74fade18b0b62bba6284f876fa8277
+oid sha256:9335e4be88647547f4772bcc25aebe75893680136ad08943cba267dd3f517500
size 2880
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
index 1250aeddd2a..98b043e0465 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.calibrationScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5a2fdb209c8814f63837d30bca8883ed79063d66fe22516f4dc6cb54542d743e
+oid sha256:679265d663977578c529d19f08f8115c766a3eab8d364110be1d86f11554b7e7
size 4960
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
index ac1fe518303..d545e48f71e 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.scorer.pkl
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0510d85a2680139fbfb2d3c8f2d5fed8977af834bf82d09d9090a06fa8d454f4
-size 525312
+oid sha256:b1c6222a7428aabca3ed19f2cf910e0d4e62a167e1c28c500fa45ef19d90cc39
+size 701888
diff --git a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5 b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
index 4f95113bc2e..4e6f027b951 100644
--- a/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
+++ b/src/test/resources/large/org/broadinstitute/hellbender/tools/walkers/vqsr/scalable/train/expected/extract.nonAS.snpIndel.posUn.train.snpIndel.posOnly.IFDifferentSeed.snp.trainingScores.hdf5
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9c063a077702f5979525286ff8bda09d9f6133e251babf27d0ccb9e384578fc0
+oid sha256:75f6f2d806c53feeabafb16ef9670815e55abea6d6027244ca1807e83af11522
size 5992
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_c_emission_tc.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_c_emission_tc.tsv
index 6d0a4b2dbd1..bff50ac67f6 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_c_emission_tc.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_c_emission_tc.tsv
@@ -1,172 +1,172 @@
@RG ID:GATKCopyNumber SM:SAMPLE_000
COPY_NUMBER_0 COPY_NUMBER_1 COPY_NUMBER_2 COPY_NUMBER_3 COPY_NUMBER_4 COPY_NUMBER_5
--1753.5461346310458 -14.002102362911492 -6.661214461620781 -9.22572443891049 -13.018365988253707 -16.799760011613053
--4307.093314452008 -18.93608098865231 -7.683831406995849 -8.9388221425687 -12.041989681475645 -15.38320033136914
--1648.8939586496067 -13.273835774530202 -6.898022545544388 -9.815837323017167 -13.801263765974248 -17.70808467344778
--4.139978030990118 -2.433616450161774 -3.25608871769688 -4.804582837555967 -6.592080385089297 -8.439120323200086
--1264.9424306601022 -17.297505123111158 -6.360731444400441 -7.780346328980739 -11.084469773103503 -14.633550743040626
--715.907545678598 -12.676919191788794 -5.8330384554061325 -8.499262958151792 -12.401915563241724 -16.302184852970115
--399.6157242028812 -10.188142082085019 -5.508060087724646 -8.67532738058543 -12.778896606892422 -16.78297373766895
--2466.0703880412266 -14.010228360904406 -7.072917714005955 -10.068904954259144 -14.205586769651969 -18.266715983433667
--3017.21984464337 -13.471292862388342 -7.6467839072178005 -9.387031254120764 -12.072878021979541 -14.768455652418735
--1374.3081553273744 -13.030200717645247 -6.586492083323854 -9.224587454467231 -12.951536996153758 -16.63396007292994
--11.397650451991801 -4.795590578259655 -3.1121394691904194 -3.053521872434517 -3.693371471390378 -4.6657579944047
--248.85668593582093 -11.578800110272272 -4.914673995218005 -6.641665774188131 -9.75541350988286 -13.031476463952519
--1692.0082989336197 -17.179391246699907 -6.742519178841837 -7.939603046217419 -10.897361346486814 -14.090136947928158
--49.56886336110059 -6.520709508757218 -3.808183609040695 -5.450906631139326 -8.045306715998588 -10.807363003130725
--13.443474615557273 -4.040999831344061 -2.9684466320554384 -3.921105208427074 -5.562747115924273 -7.447735298634611
--7946.272709046384 -16.352296812994148 -8.221793034786229 -10.488220114382147 -14.061721992704769 -17.660342110622373
--34.16690839490821 -5.059165959895135 -3.686579116321217 -5.758652376277507 -8.58055595692797 -11.503868051955092
--429.56424682297234 -13.242410211538164 -5.4303736791213915 -7.057352871494289 -10.162052551823813 -13.43333058851118
--243.19885346695688 -12.044962172351426 -5.074634148311404 -6.350800618085466 -9.048162470979799 -11.956066056740404
--120.89072601494686 -10.134370000882663 -4.7396849008458695 -5.525349633789082 -7.517162419752269 -9.741555084595602
--8183.886776834756 -15.551066031701046 -8.295018354124858 -10.948055054410096 -14.760295778443584 -18.529030520910375
--1280.3053909785176 -14.531313821188784 -6.459833813524116 -8.827779662213374 -12.578686313396735 -16.375029363284334
--718.1806427942174 -14.38109584109433 -5.7815402104086555 -7.610105525022204 -10.980109066318597 -14.494850406288794
--134.67233336663122 -8.763579856016367 -4.37965839650135 -6.6888448079518525 -10.11732991179735 -13.628940833458342
--440.6447699821041 -12.406379275437533 -5.459404401633573 -7.45027877732901 -10.755586816780127 -14.154466555870897
--193.75392750853825 -11.93441363325794 -4.7257729516751645 -6.0633334994180546 -8.974652469923374 -12.149329990152967
--54.5426522920292 -6.880879679048433 -3.988954165436169 -5.384090476180344 -7.678093724782629 -10.124529761112546
--9.791486564931946 -3.383398803339745 -2.9024620993785506 -3.9740890555151216 -5.5855525624031594 -7.3859015745831575
--172.00193154435703 -8.317742487870438 -4.719706495450823 -7.479028964472074 -11.11774971584628 -14.71706239969517
--979.8497695364888 -16.753266110932195 -6.396801447484706 -7.388575920643068 -10.182057893251452 -13.249559940461488
--260.5568338219751 -13.425915568687444 -5.067978119455677 -6.341570903835514 -9.346839738171942 -12.64329020589586
--1377.9455339536257 -12.21993414106339 -6.7204669126708225 -9.820042632823087 -13.847643405955857 -17.751770127792383
--1525.74205295381 -14.08475991629265 -6.6351894931686095 -9.00953631819017 -12.63939710560296 -16.284218031536916
--609.9660766210163 -12.211890593699527 -5.7574413044564015 -8.160648382082897 -11.739139924948212 -15.330206133980777
--56.62064675093941 -7.74277416194751 -3.862043896643735 -5.0451274733565015 -7.424513453202992 -10.081466931462362
--838.7214012710758 -13.089584334561573 -6.063233765909964 -8.621465170728099 -12.424382082160376 -16.232991111265463
--1169.5274359533842 -11.283304379180429 -6.545892462669272 -9.822069406403102 -13.904776948758919 -17.82309754917811
--771.02106988838 -19.331775845071203 -6.208298041667225 -6.509512224067472 -9.157168856680142 -12.273098937598458
--530.1542512354441 -13.200533638556344 -5.6293808157877 -7.597208227193013 -10.967351785883665 -14.4473093672711
--718.4344469464135 -13.282551685479088 -5.870541093833005 -8.07903014515755 -11.615679907095743 -15.213500681315699
--130.16985138764738 -7.401829555661393 -4.703508131337852 -7.686671869361258 -11.444768908849962 -15.133555248165223
--105.07708078770375 -8.058315797328993 -4.339733760976685 -6.544508569968519 -9.77533591684689 -13.089051200070122
--1304.9624603653792 -13.710396482260018 -6.359479054624179 -9.084902395108509 -13.066859202430688 -17.03202848804159
--11194.533547287705 -15.145518491883413 -8.725402733806334 -11.111264279618455 -14.51737914669133 -17.87914456795235
--262.9164614104526 -13.662898887096997 -5.142451661456333 -5.978973830889295 -8.529945104547991 -11.401566197087531
--4409.0900474137925 -17.131681429777643 -7.7245724678823615 -9.19968941077515 -12.211812414759303 -15.377213296235606
--77.58546399184726 -6.268101161029064 -4.362855338229959 -7.082661515115807 -10.507481344361953 -13.897733661774112
--306.03849956965917 -13.172916238322308 -4.9641369444504635 -6.529387847644861 -9.752232943419628 -13.209563997763077
--984.8343406179938 -13.625787069656084 -6.115948399652188 -8.666344945785251 -12.529501782531609 -16.41025324536433
--536.0469495637408 -16.056498062836834 -5.824685390506863 -6.561688281544151 -9.171323549818833 -12.113240663041822
--235.6025735279042 -16.4906810735137 -5.423994641729124 -5.250132250672548 -7.353793200879361 -10.025845291331862
--137.42102230270564 -14.416349894854411 -5.0714281630663915 -4.719006230116817 -6.463009022286589 -8.793391904256415
--451.4617802761611 -9.874102536866951 -5.816187187451439 -8.315203969393275 -11.570045130626697 -14.740452032217659
--2678.8509986574395 -16.39333413762891 -7.041577214880032 -9.060690816031826 -12.62702567126832 -16.29754663949854
--123.19443554269111 -11.758216659370301 -4.493477855390295 -5.137285802205433 -7.502079850671438 -10.272154450826557
--1039.688742534717 -12.609570591763314 -6.254829559278049 -9.22885611273282 -13.30698205226979 -17.315582450266128
--2020.9293966599375 -16.906111710672306 -7.002418061426561 -8.426922599521353 -11.50855076489994 -14.77909544648833
--4158.356979499613 -15.830372526207919 -7.495821941826632 -10.13964266496219 -14.13842121414911 -18.13641447983725
--738.9253275620852 -13.1998431207824 -5.805989897102207 -8.14216078293547 -11.8021194097607 -15.509280831791681
--1264.0126515833967 -15.15232750164302 -6.2806395112730655 -8.468974363437994 -12.182066378473014 -15.988437433349539
--8.14491798600215 -3.2625154073877107 -2.8315818146234237 -3.70121659623704 -5.060858210415789 -6.611450709283604
--84.36288943812188 -6.631808068664919 -4.336630496688006 -6.823227012371399 -10.053900330447817 -13.272858992243897
--1328.1209253465513 -12.999021781382496 -6.438186882151458 -9.24486660746259 -13.165905415717305 -17.03171012436789
--131.0518074484946 -9.398671178807255 -4.343842973812643 -6.244154626722244 -9.399780327513753 -12.713449646955327
--653.2913430139596 -17.712850736630173 -6.11750266902585 -6.6542573870374495 -9.28465163004989 -12.30993837509369
--181.84141070217026 -6.383878314694139 -5.623628487110688 -9.492903147957692 -13.664067627336689 -17.54473546294349
--869.8047667579615 -11.170955118329978 -6.233547354927255 -9.233135956924666 -13.096000219964411 -16.837907878402003
--72.28220421350277 -6.6955756445342445 -4.104976117607016 -6.388132629456705 -9.536616649979784 -12.74120702913778
--499.75099207039136 -7.318046247351366 -6.919144557897504 -11.716335299605333 -16.637962152007287 -21.114796534966562
--534.4296637576581 -11.471111070169858 -5.655880161707344 -7.986166294102026 -11.384087333436826 -14.780284857566205
--7017.244960631247 -12.3110896313297 -8.711017311970242 -12.74354941743862 -17.322651801969446 -21.597165294482746
--82.9711878820225 -7.872487523135751 -4.028241585606157 -5.901851530440168 -8.89296756285534 -12.042556061769183
--21.352252286094476 -4.463999443115149 -3.3520938454035036 -4.904018680879172 -7.158886158256956 -9.574599420022118
--10020.813124110644 -24.170625301581786 -8.988713908962744 -9.027009296555525 -11.550820702895969 -14.558754420767835
--23.807848609232607 -5.009823287350953 -3.270766467034403 -4.5503744311379375 -6.682082268813846 -9.049197513576079
--838.9217293751431 -12.21941353323065 -6.03319634547508 -9.0074891675498 -13.08003024806109 -17.086133898515946
--235.44256005653364 -9.816079697528052 -4.983834467269636 -7.584009248038038 -11.246276002124084 -14.914547029795777
--502.8772018905753 -10.425234768156855 -5.954114296540156 -8.104536364268512 -11.065260302968447 -13.984449412792262
--4406.564629049058 -18.894930841935302 -7.596040672298198 -9.114495621359712 -12.48758833785547 -16.073368767568994
--2.176371827767177 -2.11310898504858 -2.3159876587746573 -2.676871424869477 -3.1371874301716445 -3.661947825805745
--12.263546771076173 -4.055690161827837 -2.981591416602281 -3.7238492756164447 -5.10450595093846 -6.721580262337271
--234.50474033510775 -14.720389000622955 -5.2164795546218174 -5.496931337844537 -7.714822221989547 -10.368163462019634
--15847.202004754616 -14.246340457843386 -9.318703442332247 -11.921399663119661 -15.29539943902423 -18.553630841853998
--514.2375617084374 -10.702107097138404 -5.792948057583671 -8.387878485046851 -11.891735431368298 -15.334260160622524
--97.30065954255383 -10.31428084674791 -4.203249569868775 -5.08542765066426 -7.52119833803655 -10.316969767906878
--371.4385046656121 -12.062872815864193 -5.368559480844241 -6.991938510486377 -9.890496591093893 -12.912413225633724
--242.64208428465332 -9.978914481037387 -4.832178452250084 -7.312514364628845 -10.90451394222635 -14.523474030463898
--691.0178529366492 -15.492983123880883 -5.818751736973745 -7.106743881946003 -10.130541601930926 -13.395031720877522
--1142.95436836196 -13.409132662347533 -6.494986670773244 -8.113224019300628 -10.904230778279313 -13.770665740511491
--73.66113767900721 -7.648047725740031 -3.994686920993554 -5.709494036680216 -8.508328058336787 -11.476856988131514
--344.1563195814525 -10.976513095284492 -5.36891674752618 -7.35322738604134 -10.425018835922023 -13.545418903174271
--1940.0543604551326 -13.150323599641679 -6.9966036060609405 -9.808756785085412 -13.638662435452677 -17.388286023182303
--344.13184925765324 -16.29964425888986 -5.482378088224364 -5.8653442533766835 -8.353184076565375 -11.285343759475026
--208.98662141130964 -8.613489851507182 -5.02615350515519 -8.12414632537582 -12.076774361776078 -15.944748129724351
--169.3804804851158 -10.481242939587663 -4.585652193187547 -6.366361108737171 -9.498113793239291 -12.804756243619877
--284.2749742174457 -8.014038219806883 -5.689893965426835 -9.123694880769637 -13.083114238453712 -16.83123323143309
--59.90154426081305 -6.135042433399541 -4.073291818744977 -6.514277862748699 -9.774802618567545 -13.083263080042395
--122.87244363372167 -9.380452672638432 -4.455532391484643 -6.178914860127898 -9.124995204474136 -12.238458952994362
--1875.5360153871447 -13.65046089509249 -7.11460952144861 -8.862068309612377 -11.690551347628293 -14.558017606865088
--316.6949886159085 -10.953270530127131 -5.053902153873578 -7.646438426276211 -11.453161588664067 -15.289922420328885
--12.20884845632643 -4.346731253595353 -2.9896554691900783 -3.427425344493879 -4.539758385515543 -5.927211743678619
--90.77277107271001 -9.435578110107905 -4.110941456238356 -5.352133295792292 -8.011974226140447 -10.969307699964974
--326.6184061467735 -13.710352986252275 -5.192885010736608 -6.491179643352972 -9.472555013581369 -12.71414801104444
--12.334835043070193 -3.233571875833494 -3.520198496331626 -5.492635203638024 -7.873539009555466 -10.30295086454394
--19429.57313809658 -13.65633651189397 -9.942776251142053 -12.876425486714137 -16.378601486716562 -19.691309920394122
--257.9538892563197 -9.809732366523688 -5.0507320891372895 -7.623730304447864 -11.212398722933074 -14.792384529990734
--251.45282531052663 -10.755644139274356 -4.837928001428074 -7.111392006180326 -10.64677766484092 -14.264722120304048
--214.19216250422303 -12.068840548674476 -5.030620930791031 -6.167946286406088 -8.771967694357118 -11.618201501185968
--525.8956296095307 -12.305724841363846 -5.786502222303226 -7.798016465475729 -11.006610169818739 -14.273698215677408
--1114.121934592827 -14.445849650579945 -6.2334735570929505 -8.298352965407977 -11.779476807045807 -15.344880608602471
--49.81693558503891 -5.542729825848348 -4.0525618368836 -6.3227724464869475 -9.250160220296976 -12.19174869196109
--1776.4911140663764 -17.39753577164879 -7.112164947811112 -7.794281477586456 -10.203020491831921 -12.89000316823492
--145.07099624749645 -10.944084188278133 -4.896929791675676 -5.686472287733936 -7.79372342634916 -10.155100380207895
--197.20614772095507 -9.649339794866313 -4.785562157979213 -7.024488352061436 -10.349431129106303 -13.726435435035935
--203.8660240967774 -13.817192902259091 -4.9482221594182345 -5.551795485470723 -8.039463288475291 -10.933887418443183
--5198.597927576731 -13.730410509388967 -7.895291439589701 -11.294895351541639 -15.621419889915437 -19.784022796691172
--422.75233919696177 -14.326367331573776 -5.39331923502243 -6.797569321111195 -9.90683801314115 -13.258955441489146
--187.82656381211507 -6.319503640187566 -5.941731172151347 -10.206228234952839 -14.717258518009976 -18.8891516150752
--485.79139116426467 -13.982471166829026 -5.510588764354871 -6.985796049596883 -10.037835402242916 -13.288934067232955
--246.8041224647352 -13.861227579510047 -5.106567017006449 -5.741320482712897 -8.14754736448069 -10.910472180499257
--243.63545325335974 -9.934538062909983 -4.900102473841001 -7.405320063412483 -10.998245183537481 -14.609703476379563
--82.8564828153661 -6.563671319138101 -4.444276331640223 -6.975286998667561 -10.21407249677085 -13.427701931741293
--12928.953799897847 -18.51003761641517 -8.924881421893613 -10.496702068947776 -13.614982206031 -16.87526272281241
--2187.2679867478428 -16.983317642604355 -6.964502322402948 -8.720127355026227 -12.149730432365157 -15.738001289065195
--236.1770966193737 -9.960382673282908 -4.925370780805329 -7.288220798084246 -10.733524131094624 -14.209376918254122
--10.667107991492433 -3.5986542812187894 -2.889552921844434 -3.851062399066304 -5.4021990612579485 -7.167612759905536
--249.99053059703843 -11.74426575063568 -4.843662783354202 -6.629682415986936 -9.862956965454858 -13.269591955299157
--18.275675667226235 -3.794742876554688 -3.5049031083426723 -5.504927128538169 -8.052167742713463 -10.678584473462708
--16708.13371873639 -19.696525803428987 -9.112280041226164 -10.640077667066722 -13.876011069751147 -17.289775143009035
--740.1354647813039 -11.09767398036876 -6.061776661618607 -9.242935844067212 -13.328842574209958 -17.288712838217663
--231.49894822465973 -14.369173140100852 -5.00058301831653 -5.666455981700618 -8.29082562642796 -11.327112260128828
--30.07250028489814 -6.371289865391807 -3.4556328152355436 -4.125510791929043 -5.8415543763715245 -7.885751804185476
--73.32191945367308 -9.978133832183874 -4.099742137115732 -4.5796339191300985 -6.637743657256484 -9.12978129678977
--242.27266874270362 -12.904961567133093 -5.094903638850923 -6.120597032681404 -8.742690012305985 -11.64360129309192
--2973.1554417009183 -16.189293015495036 -7.2105388347104356 -9.252354104981979 -12.772577361477556 -16.379810385753352
--606.270627619472 -8.387535819487244 -6.5547722455836555 -11.020529861295243 -15.850080756413785 -20.315745425491563
--363.1779958436837 -13.658627353311658 -5.309772275324214 -6.772695021649968 -9.86136959969194 -13.17551649112935
--143.51617143883595 -8.06659947335809 -4.63997778792537 -7.46859933570458 -11.209352358940503 -14.92699116973547
--11.461164752652293 -3.050697632375164 -3.6644962137218475 -5.84398290406345 -8.371790559164324 -10.91247450326407
--1066.1983541373163 -14.269293938949769 -6.29598040455853 -8.261943138996939 -11.60282238017787 -15.029370465804341
--86.45422040186538 -8.379794472228216 -4.034800757418582 -5.635997430690104 -8.435237793617535 -11.434683523270232
--2896.7888194028833 -16.293970951646617 -7.114384369845254 -9.194228046371236 -12.787911087945137 -16.47220353722315
--691.588414571237 -10.956757245528957 -6.022415855775472 -9.297045213233043 -13.469142560901533 -17.506286382771968
--13.033991492253223 -3.3626024741272618 -3.556321717902367 -5.436012163476973 -7.710270610553185 -10.025075181499068
--9669.612636843998 -19.20498134461997 -8.295375472226345 -10.124310078953037 -13.719406793212745 -17.474343807715478
--2059.222037407667 -16.628661956701702 -6.9512157292686965 -8.600820315326997 -11.868403871043498 -15.29427115348875
--267.9698488687354 -10.928457831836674 -5.125923161311022 -6.97083826844584 -9.994139337977387 -13.111447969486871
--774.5423860107203 -14.980929855157092 -6.065245021762081 -7.366626644150197 -10.240055098996534 -13.312774887226317
--6.656381350932097 -2.7014584150826497 -3.308573674189487 -5.001204367674504 -7.009824019146848 -9.081591647568963
--351.4543590624978 -9.115973501920383 -5.540890842433381 -8.940134193684207 -13.085159987106598 -17.068345797382435
--1424.786098291259 -12.1209467753062 -6.599040210889252 -9.692589323379497 -13.714603121109842 -17.613221185160647
--1693.7707403684797 -12.285557110099042 -6.823474382608406 -10.414614482087284 -14.916873233070483 -19.241066594398717
--1.9575692523242085 -2.4399908630859413 -3.2262724961033795 -4.156484610840382 -5.156298748748816 -6.1866922988369115
--771.2139842088739 -16.821196091363113 -6.043541176588519 -7.1044176257448735 -10.086299818597396 -13.368713935709057
--97.86217395034708 -8.534242555464871 -4.187534088465449 -5.967645475068453 -8.920773022803273 -12.042045680649801
--383.86528650146937 -13.351888939625713 -5.225505662252333 -7.026000466876381 -10.414155814915098 -13.986069996873077
--258.24720334874706 -10.970587878692957 -4.9250197623592396 -6.861070219698626 -10.045821981707157 -13.33613865061266
--3686.3154742462134 -18.16631013187677 -7.486505117808832 -8.878636702001662 -12.028531302663556 -15.38555865540233
--1780.1497076103853 -15.222952109758896 -6.506405913605488 -8.81389042975757 -12.586928906769561 -16.423311333172492
--217.15919772903268 -9.663871455167781 -4.830011260992331 -7.439927074847274 -11.138597838352034 -14.854127686113353
--192.0465361426485 -12.561633464779748 -4.735277826824609 -5.895445691241838 -8.774267223643346 -11.974043211142916
--1068.3961678411747 -12.411371385686577 -6.269101258817063 -9.162890157906917 -13.117350514120819 -17.000150486182925
--721.9497326137399 -15.149262150489236 -5.729446114831586 -7.524174356498129 -11.01646119130816 -14.691819848893353
--1870.1993079915383 -14.914529875506135 -6.899116393426259 -9.178728085134791 -12.79853818245396 -16.457948851813384
--172.15431633665352 -7.828360688047118 -4.880759529948028 -7.946245982115084 -11.76571690776089 -15.485983771020901
--452.5177666203684 -11.694393117791657 -5.720710451595908 -7.486546681623543 -10.353946856908168 -13.284581200428782
--62.824374506104874 -7.826106830151989 -3.9210164878148377 -5.223001849253455 -7.6912923478872335 -10.404063528607097
--456.88619166629616 -10.118020318589398 -5.712387127525634 -9.003071165930432 -13.154067933811806 -17.171594680577275
--3.1583157679296643 -2.3446906006423074 -2.4266685212330548 -2.9349583550067955 -3.66916892939474 -4.528343465503523
--42.66348003790205 -5.776783545441057 -3.8048625973334977 -5.615162146858781 -8.216470094778117 -10.926791378004939
+-2185.2552276315423 -18.370690106053484 -6.544841746631657 -10.957975382143745 -17.402383838515455 -23.820791221208495
+-5384.940969167808 -23.7545919162458 -7.383682741215706 -10.266750419361863 -15.854264666239807 -21.687961007687623
+-2044.8997387365157 -16.486809207795222 -6.704955420273458 -11.782563900685272 -18.544266127960128 -25.14293831906713
+-4.284547872670995 -2.349013867391283 -3.1809381177309746 -4.937277128177892 -7.0661896384319185 -9.34314067487298
+-1585.5523259931304 -21.039734449768797 -6.049598368905738 -9.754065128658702 -16.12844083225704 -22.69670608047019
+-888.8712961463705 -17.511404094378864 -5.69907982724499 -10.035271189318465 -16.639135361925703 -23.320562308550222
+-487.1550898599172 -14.874290615800927 -5.081275837530927 -9.249783945783603 -15.516205610471335 -21.883495181790224
+-3101.4792395729314 -18.914955197906977 -6.882591118616865 -11.950010582316697 -19.041759893167928 -26.032849149504326
+-3574.507436407361 -13.158786989217521 -7.8257863948057045 -11.23905586070986 -15.505907455802308 -19.59463485413655
+-1717.1052983077545 -16.77148005540726 -6.415843906973032 -10.945216232369505 -17.281048316109068 -23.538270797972313
+-12.322027836218174 -4.9796635925335915 -3.025399370743327 -2.9613497310419947 -3.7567345486753854 -4.98667040770909
+-293.8544900514752 -13.420176941636122 -4.7385630717487 -7.726723766532723 -12.694185876828685 -17.878059271094443
+-2098.284230822541 -18.97430783348337 -6.505596267028979 -10.048748025989314 -15.728531391271101 -21.490152525866634
+-56.53803258469202 -7.531715551070107 -3.595245835525768 -5.5999706501817945 -9.124497652961493 -13.028895897882602
+-14.753229871532024 -4.417164490547005 -2.8209233533023514 -3.7192222278577978 -5.607436721590483 -7.9277021922341
+-10021.19533019243 -19.56527725406295 -8.106231344868386 -12.655351203203619 -19.04255514850337 -25.32776850084945
+-38.50479399506964 -5.706467658467137 -3.427856777922785 -5.864607160770461 -9.572155526776163 -13.601312336674916
+-517.285695228939 -14.45963709948563 -5.176583023056214 -8.726559084209995 -14.163234127645817 -19.690943753515587
+-283.5472185320496 -14.775709812541841 -4.949778478501459 -6.662734584079567 -10.497286421830353 -14.692269442057459
+-139.88870482214702 -10.644516385282312 -4.4278261723868155 -5.9903581614242425 -9.060444599304452 -12.388679818949248
+-10316.334236183731 -20.358583598597445 -8.099081461146742 -12.530563700042517 -18.932897647326833 -25.27140457196375
+-1585.1920277421034 -19.077866955108284 -6.176997635771466 -10.219414563069837 -16.54732448862326 -22.951552706783076
+-885.2505977034164 -21.129210277506115 -5.641934801610606 -7.994118361373842 -13.25494865763783 -18.925747912237327
+-159.76541626929736 -11.6168343475977 -4.142737611028586 -7.085250780422544 -12.14431295638924 -17.562173729644094
+-532.9086602075461 -15.151893472517845 -5.25130356252027 -8.648881044506439 -14.046253966099579 -19.574602943458085
+-231.98915784165519 -16.950848215783957 -4.681982129323513 -5.899042793642225 -10.015990231313092 -14.804014781989498
+-62.485131921426735 -7.605037184095803 -3.7911440706379524 -5.682472783118588 -8.897705906131876 -12.391670149907476
+-10.639235177151635 -3.641302494309995 -2.7157573913931325 -3.686809260549781 -5.44387329810422 -7.5554257547148
+-204.30496321545877 -10.993967432977295 -4.5464158443594656 -8.211008328447484 -13.601027186560534 -19.126885732616138
+-1220.9228186945993 -18.67646230947046 -6.020360365467382 -9.202223682743812 -14.656132898737493 -20.275425056839612
+-314.0083778779686 -17.538384169585008 -4.7306496152825215 -6.654190736074874 -11.465962107536463 -16.83906535168568
+-1690.9937889550504 -16.07551591994986 -6.401657380536619 -11.099371354839155 -17.486440584086022 -23.754055234445552
+-1884.5631756676137 -15.868926042628946 -6.5435092057406985 -11.356770158721808 -17.778141960233764 -24.047837037057565
+-743.5004703626928 -16.38207778968733 -5.504439260153244 -9.020137659946442 -14.622094553464706 -20.34259877432045
+-65.97604524376777 -8.842572086362546 -3.599909425689279 -5.338385184989999 -8.948110849665788 -13.082780832124918
+-1048.320649622431 -18.53949706929224 -5.748225119373596 -9.715793662700925 -16.06657346925097 -22.54443870618104
+-1441.5489470793993 -18.979499335242075 -6.121385115531422 -9.53325082982679 -15.222456107392688 -21.049335700926044
+-951.0077338003528 -26.179847898900295 -6.148193243372413 -7.048644640994424 -11.684715743558591 -17.055407569589
+-652.1178845992324 -17.2317439954292 -5.414452596073526 -8.71327349951512 -14.338741299375883 -20.171007867927777
+-878.1609722246994 -21.2948020958038 -5.731358945477062 -7.757251822693082 -12.688111147549476 -18.057315909961222
+-153.13787045661445 -8.983195015520701 -4.489527702593236 -8.659657430514606 -14.278240845295418 -19.947068117614897
+-123.93279488772225 -11.239349756191407 -3.9832707542824797 -6.20083267471639 -10.54003155693508 -15.33595750816685
+-1635.0333672746467 -21.010789915073133 -6.02897070577775 -9.789062389550335 -16.211078815054456 -22.818493112284816
+-13505.61740133602 -17.43188145500909 -8.634251403311819 -12.465531101469454 -17.692276986439605 -22.800926306588643
+-309.6109604634309 -16.636507698312414 -4.948509725395061 -6.3303193796031065 -10.219443617452725 -14.597213780452579
+-5294.57838273949 -21.751802149411446 -7.586481743949738 -9.727341087888343 -14.198082538109473 -18.913468345743997
+-89.82788422024295 -8.037825035041598 -3.914832202046952 -6.953679637289198 -11.478469529306068 -16.223474246551348
+-371.2835743791848 -17.145830145773324 -4.8110131532537075 -7.458804428037632 -12.837412281036679 -18.64994961732961
+-1213.3078868592029 -16.489275064473542 -5.957805763575433 -10.79420679960398 -17.55800706938528 -24.254656487547567
+-644.121099880249 -19.305812241407637 -5.606953341206638 -7.361622068732303 -11.73871025870846 -16.53223148148137
+-281.91585583063363 -20.528401704346535 -5.375839479464112 -5.582887636391725 -9.16649356113434 -13.61097577389356
+-161.3769898355225 -16.50700112207884 -4.814197934449138 -4.943253304552978 -7.9489576685379975 -11.767316778047014
+-534.9425713629514 -10.488728752269973 -5.89550741288922 -10.02853782678957 -15.07838367637367 -19.92685140019201
+-3341.1556530330136 -19.19790148750515 -6.948443978726613 -11.489737978521262 -18.078989089884644 -24.62272865336479
+-144.5956763315575 -13.383618692200239 -4.253604459084087 -5.735159816965161 -9.652920484147593 -14.158579003594165
+-1297.9649481205934 -18.382091732492114 -5.998390689096797 -10.439462364876487 -17.135792723000975 -23.87374257911947
+-2457.9095760995424 -24.571067318085156 -6.9964182242973525 -8.38464306051937 -12.765871947136995 -17.616626661547098
+-5269.154190570642 -21.041329873174412 -7.13849868890912 -11.95295416471305 -19.055422448873703 -26.12650055720611
+-902.4487312383723 -15.996770037910213 -5.761664783659227 -10.09026670367182 -16.35503378307736 -22.617605484088216
+-1573.0086758155107 -21.45661031872983 -5.958707764797068 -9.353707837556652 -15.505139426816646 -21.89905359652542
+-8.737737347921097 -3.4866142034999386 -2.638551390566092 -3.3249278282500976 -4.692292552988255 -6.388858192394433
+-98.60332752316113 -7.43045458617725 -4.260946203971824 -7.934639530425779 -12.835563770634806 -17.8036449389734
+-1651.299482843311 -19.126012279056123 -6.115137635367099 -9.992533490365842 -16.159527244004476 -22.417367389645797
+-156.0171191123752 -11.637503688815181 -4.134141267191632 -6.995340751898885 -11.987806778063721 -17.354139987519375
+-807.4626415094854 -20.762845724675024 -5.628937067115771 -7.917156758931407 -13.075544521288176 -18.64725622056484
+-215.1088379538951 -8.953134196791067 -4.985505441624992 -9.530662484991426 -15.212603478362201 -20.77624577195008
+-1039.3364629551575 -13.848390188904691 -6.169382469543158 -10.558806447070614 -16.34560663335483 -21.99368660141206
+-84.36058505495576 -8.297914295938511 -3.8373055743382323 -6.6524604332168495 -11.085947608247652 -15.819498132907428
+-600.9564355047418 -10.109289327862134 -6.309426786851156 -12.606886525105589 -19.757125496611486 -26.4906853238187
+-653.9838923709244 -15.272792617046408 -5.468512111417367 -8.8907416398533 -14.214350579000568 -19.628148518430752
+-8679.42931474055 -16.70783872513899 -8.216445435832574 -13.871228975710604 -20.86912708939232 -27.55538644712209
+-96.61149784057699 -9.13799587222547 -3.894395788291125 -6.6550514632565 -11.19460165958612 -16.076659201840272
+-23.642865255188575 -4.593938557617869 -3.217881227639909 -5.234232051827611 -8.268724014115357 -11.603206879474781
+-12326.421258682863 -25.480358201980433 -8.264925197238059 -10.655113129227674 -15.845953276953704 -21.343811607986652
+-26.738366015772193 -5.550734934707133 -3.0544511766202573 -4.5019889380407 -7.261347645191518 -10.491214699508053
+-1047.6474321620303 -19.403001404388952 -5.629706110108725 -9.431050832304983 -15.804527687526036 -22.36457824267601
+-282.9919606631869 -12.479333751947667 -4.70311838497578 -8.591524017047735 -14.378242135740662 -20.293963658663216
+-595.6945137322161 -11.472063140402607 -5.973041023642165 -9.408590985845633 -13.88577918357852 -18.25080366200848
+-5567.985486557438 -22.897832933402555 -7.2518846817545635 -11.146610851669989 -17.620709180389696 -24.21387757247775
+-2.1456077622228564 -2.0547951570293472 -2.218326862729037 -2.547349335823051 -2.989506113940172 -3.511486668641179
+-13.384457702015123 -4.465259556547614 -2.8537548982499725 -3.431871238233107 -4.901019907928651 -6.769634856733354
+-276.66321277957917 -17.11622741315646 -5.043339499772243 -6.073832619097365 -9.744113953492764 -13.983980988513766
+-19351.505745250775 -14.586828401123888 -9.603664618578733 -14.383132748547313 -19.918274736510273 -25.111959907030162
+-618.3280362568005 -14.689729356478665 -5.461667534669228 -8.725255468595236 -13.776776770505847 -18.90818015827569
+-113.11925337123276 -13.332495122394299 -4.200495152278503 -4.9346064608230655 -8.200584477511882 -12.19607753330775
+-443.96338922508835 -15.415525058272367 -5.234037644035237 -7.474161732306009 -11.754476214847676 -16.28911414453335
+-294.15964319427314 -12.424811263806884 -4.757577904496275 -8.880473660708118 -14.881974935034233 -20.984175287367144
+-854.6440261434883 -18.93201455572178 -5.493718852611991 -8.458420071808831 -13.95511718803272 -19.717939884013518
+-1378.77051805664 -16.14993101920211 -6.31358434285816 -8.880790313123665 -13.147562138628087 -17.50716681081406
+-86.19810790702738 -9.861948683395525 -3.7511184332648595 -5.586288100783676 -9.384861330722302 -13.677494086221305
+-412.5176588947758 -14.44619021841348 -5.143730750400474 -7.703347635477538 -12.162751748970042 -16.818276738782572
+-2384.7112446382903 -16.709836055056964 -6.769233350705948 -11.226712663726039 -17.365324812660013 -23.396965697837377
+-414.16356441421203 -18.000034335306218 -5.045634392424146 -7.06250409215637 -11.79984406927324 -17.001835590948353
+-250.65829445017496 -12.61880173313644 -4.620299223478439 -8.282396037823101 -13.963212006457454 -19.84441935696014
+-202.30966486666833 -12.251843162540052 -4.3358137582175065 -7.489216360298709 -12.717970429104065 -18.23368349857706
+-339.06001643249306 -9.746726492816698 -5.442409343166177 -10.325940304178312 -16.257314830733137 -21.97916692944861
+-69.00169161511823 -7.333815295457119 -3.714597377577025 -6.688205150195337 -11.185398163557155 -15.974864234053031
+-144.16611042827284 -9.194397613850764 -4.391097888938566 -8.084715844666325 -13.272609872794837 -18.56778176071727
+-2263.2756849766038 -17.78580623236206 -6.897771257609352 -9.0569028838081 -13.043364249142389 -17.18018310096661
+-383.87821053423625 -13.36304958584041 -4.956358235573974 -9.507816869254059 -16.009596713618148 -22.56691969190151
+-13.37109839206905 -4.595768647276892 -2.871495727113245 -3.3141108390186083 -4.655592641373103 -6.409614346276289
+-106.65678079764335 -10.819166071592697 -3.818808222305327 -5.94309156095457 -10.239416793245663 -15.052407463173031
+-396.25305660993365 -18.81184943101196 -5.0327848971110924 -6.744875316869929 -11.379507633199852 -16.566206976331365
+-13.417683792732026 -3.218458269405282 -3.445012772937279 -5.861515691210032 -8.92427880471724 -12.148054480068451
+-23555.32667182418 -17.44255398760447 -9.38103098809635 -12.921043396005047 -17.732128882067542 -22.429243906295394
+-312.90517249761785 -15.614050378923503 -4.722011221632156 -7.199333740427321 -12.128962637029034 -17.446776763448767
+-302.8511840323589 -16.65869387338789 -4.660619068114174 -6.827183469571872 -11.727664566727203 -17.12992077660044
+-250.47350731617135 -15.08112846304831 -4.869709008119926 -6.291830430243947 -9.978257603660538 -14.104780720273713
+-630.9198123174062 -13.774080431093518 -5.634462673916444 -9.285374905523335 -14.513635280245602 -19.734705509364865
+-1368.38522473077 -17.310533924001177 -6.0305521822059776 -10.029432288834222 -16.038549057887735 -22.072535226074326
+-56.896872803265445 -6.756906908573954 -3.758091990423786 -6.228420274173631 -9.951336845398384 -13.907655894338927
+-2131.899891850256 -20.725172344419313 -6.965843775293894 -8.407340068208521 -12.18074067406462 -16.28181997098625
+-167.1728795007606 -11.876703677805633 -4.531383552504867 -5.9546959243068605 -9.088655907205364 -12.537025843159014
+-238.10006535695385 -11.43882009453386 -4.5921256171043945 -8.37662948769909 -13.907216457862186 -19.550170109720117
+-242.4659362582967 -17.35186682353565 -4.777052983702751 -5.785064976999514 -9.699498996261646 -14.29319767518971
+-6551.553080761297 -18.85158655687878 -7.759331691657047 -13.18950315867969 -20.41400561813771 -27.442469670787794
+-513.6780085989657 -17.105589806704245 -5.225429947751227 -8.29146824908231 -13.804457516118426 -19.598090360133064
+-222.4551863642625 -8.054273476958492 -5.393963842798862 -11.018304789869866 -17.57377878965284 -23.864916227563043
+-588.2561757897965 -18.704277931570388 -5.408619838518549 -7.573289157362656 -12.348103168324698 -17.508553394623764
+-295.70752423138924 -15.057315785147603 -4.788771989504468 -6.944934699042311 -11.376630439294663 -16.17515874407739
+-291.909285324716 -13.419793263401669 -4.657538221477083 -7.9830009291810065 -13.36361148060735 -18.958216849534512
+-96.47369759135009 -7.611290416666902 -4.177952649721298 -7.596404833639776 -12.285854473023688 -17.077462894889983
+-16024.536679471423 -23.1377630849507 -8.682106061497105 -11.470790763716828 -16.593039383639862 -21.887979856258045
+-2716.2757070484427 -20.343584692574225 -6.701392592678178 -10.61291262189328 -16.839335264543354 -23.14300599217363
+-279.1928415501458 -14.141528886418563 -4.651438618232152 -7.157037526609695 -11.821338724838391 -16.79839968821173
+-11.585763524801656 -4.01530062769192 -2.7277899223526827 -3.438271624199689 -4.993094519896067 -6.940034117831319
+-301.48005061285824 -15.513846992972585 -4.746013602591784 -7.4166054501410255 -12.570344648460742 -18.113690636880495
+-20.257417468303025 -4.163197049627177 -3.2128725488309566 -5.354727964216201 -8.454606716840834 -11.845661705713608
+-20828.353523412494 -23.102276569344614 -8.789517191344167 -12.319313040308447 -18.14703128526398 -24.06398678563312
+-901.0373385566536 -15.761845673369898 -5.627220640381971 -9.888283358973634 -16.05967523605223 -22.22854000435125
+-280.9877880448697 -16.127256111416063 -4.583031023669188 -6.979129433503619 -12.09286312791182 -17.700481026150648
+-33.83592375113097 -6.914056098835166 -3.36082894384782 -4.30854095840929 -6.698697051871037 -9.597558106629208
+-85.23580802579454 -12.286799184351095 -4.052204067008427 -4.4925248585672595 -7.37189958260815 -11.033587059658846
+-292.0847328438301 -17.809646798550347 -5.079141925238983 -6.12698298225465 -9.962700998415942 -14.405638662397381
+-3744.429669035431 -22.873503680759782 -7.003787891214376 -10.256134669023245 -16.16496776787628 -22.2797820876848
+-737.6066866696278 -12.653252714908808 -5.936784170041383 -11.69084607757388 -18.80773389519382 -25.668610213077216
+-440.03476477816474 -14.700149554539152 -5.083928647257601 -8.781174692207255 -14.542605256280144 -20.44518696528754
+-171.16783434706085 -9.452111765621025 -4.5526395313553465 -9.099254944588996 -15.2151175840564 -21.380718907899446
+-12.454030357138626 -3.260425242533261 -3.2148015444853604 -5.292904717416074 -8.058225505437644 -11.034677430703411
+-1322.0767467644444 -19.16548762663805 -6.141285675699774 -9.313319227871322 -14.808429019150246 -20.47798880362104
+-101.41326787118524 -9.532171998709698 -3.9483811031125255 -6.5914624917745375 -11.06007707242131 -15.886584583025483
+-3598.042056606231 -20.28975400602165 -7.051589478791211 -11.130233481518673 -17.41915576667602 -23.740877694427006
+-852.7944307611741 -16.977796317728163 -5.5947368728759415 -9.732152730797786 -16.050108044100565 -22.44492623019342
+-14.210338694024108 -3.4520561730982964 -3.309023550211033 -5.392714359746842 -8.141806640539222 -11.067914520430977
+-12299.413850181418 -26.617150537847216 -7.929197335185689 -11.21080763345682 -17.532591253583096 -24.11874938590858
+-2537.949358067294 -21.60510783319679 -6.6826113103229074 -9.541655035095356 -14.937615480864146 -20.562154039658004
+-328.2120368860889 -12.031650351925851 -5.044500485919286 -8.91958195043702 -14.398165092850684 -19.905334695779167
+-933.0927715582189 -17.68912603640583 -5.881101436341307 -8.482391819836002 -13.238569085962443 -18.200147580249787
+-7.073646111977132 -2.7023886211633013 -3.025894591958046 -4.735277481167335 -6.969500277890043 -9.403574920188529
+-427.76384362607894 -13.407486833375513 -5.132985935682052 -9.54826171826003 -15.798549406452402 -22.071261402073542
+-1734.0019178699506 -17.47770504323774 -6.4240322695999 -10.461987116389855 -16.42246506651856 -22.376669573182244
+-2117.0718180862596 -18.31206754966759 -6.446926093482806 -11.638256619644125 -18.888946048768634 -26.045331435094653
+-1.921072891251165 -2.3889473946078414 -3.1780056541917197 -4.140215885484446 -5.2015120038513265 -6.320185970983537
+-941.2193802587549 -19.38871757674994 -5.704808682323895 -8.642857707619434 -14.127248002892749 -19.877503602778944
+-115.04300877041673 -11.350700471180478 -4.002190335740001 -5.9029092114080335 -9.954910076680786 -14.51007506736656
+-467.9916697869285 -17.157321028425457 -4.966950373957899 -8.142164747123221 -13.905420973206242 -19.988425653794295
+-313.78053632060164 -13.4120409511335 -4.782652032236552 -8.165135541805332 -13.528844656480658 -19.071967643147477
+-4508.439774690743 -23.056709908436606 -7.36914611969083 -9.96757912903446 -15.168325494250455 -20.625503066722327
+-2225.1551215371946 -20.52656003195333 -6.39995119074082 -10.465197094181077 -16.968312927762142 -23.5657122063683
+-260.34058830472617 -12.45911998962919 -4.602738809274243 -8.426812106497055 -14.22311987110401 -20.187130173695955
+-229.05118201634377 -17.302294108167814 -4.750501098765506 -5.957351628444052 -10.173321265009065 -15.102681470797332
+-1303.6497013539379 -18.200972983172118 -6.007271833369749 -9.714321273549581 -15.608557592316288 -21.597082917868807
+-884.8158626018844 -18.47609457225194 -5.489302744761852 -9.27368398372376 -15.534884033931807 -21.973329632115483
+-2318.4266214667673 -19.517627353620654 -6.45876298264187 -10.225392889247727 -16.2232810781857 -22.29877461608632
+-206.34606705866494 -9.58686967325501 -4.7833693224036224 -9.442718648664906 -15.520556101684662 -21.56408604045769
+-532.5811286298341 -14.900436512554768 -5.498516011582883 -7.618857611043745 -11.531544969263662 -15.63441955345807
+-72.62473190035494 -8.709468820253601 -3.727158831992258 -5.743351520107442 -9.49595301331109 -13.6741988296913
+-557.9750620694115 -15.238636580176573 -5.212085187864309 -9.345738771006506 -15.552188306194427 -21.84204175732344
+-3.207715477926142 -2.331089549796207 -2.296871899737615 -2.7127204106362135 -3.394461029009361 -4.242068400152276
+-48.768400075836304 -7.31357113712197 -3.5252078194799745 -5.185809867056279 -8.31428575119178 -11.845229281663563
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_q_c_tc.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_q_c_tc.tsv
index e8559378893..75af53e84fa 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_q_c_tc.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/log_q_c_tc.tsv
@@ -1,172 +1,172 @@
@RG ID:GATKCopyNumber SM:SAMPLE_000
COPY_NUMBER_0 COPY_NUMBER_1 COPY_NUMBER_2 COPY_NUMBER_3 COPY_NUMBER_4 COPY_NUMBER_5
--24.86211804807404 -15.125369683116356 -5.078746523456967e-05 -9.922055105499389 -13.481480315792737 -17.046253780508803
--24.86211804807404 -17.99919386507203 -0.0001376835249015662 -8.935502351074806 -12.054117433599739 -15.392945368094926
--24.86211804807404 -13.347125820262878 -2.7209497007851802e-05 -10.590934861179658 -14.593033110536917 -18.49839777202122
--12.275482655700245 -10.560963715932463 -4.216209592877718e-05 -11.414568007635859 -14.539387390546906 -16.472271047884128
--24.86211804807404 -18.112669307775036 -9.54329529734288e-06 -11.57024687499926 -16.274708650685184 -20.5260379063378
--24.86211804807404 -18.103921393489408 -1.4863304416135037e-06 -13.444787070592293 -17.57587272430869 -21.36015438046596
--24.86211804807404 -16.008013657423668 -1.2690412310445431e-06 -13.684904430620449 -17.863382594343413 -21.616937065715106
--24.86211804807404 -16.244196866762156 -2.668158695540157e-06 -12.88323291337772 -17.05948429369628 -21.094948798741108
--24.86211804807404 -17.81691002982478 -1.2449264916170044e-06 -13.65391845368679 -16.851423088049355 -19.557550815179173
--24.86211804807404 -19.140341055948394 -7.334045591389504e-07 -14.141351172610142 -18.859275775522182 -22.623778233027554
--20.052228918737146 -13.466334383553761 -1.6590340507660617e-05 -11.614077323245292 -12.326973916443928 -13.283834198631064
--24.86211804807404 -19.825265701559246 -8.704282061788859e-07 -13.977171078497934 -17.903532904285854 -21.51093415279635
--24.86211804807404 -23.90024184282872 -4.972121955826303e-07 -14.529567160387478 -18.747339399414834 -21.970518255814984
--24.86211804807404 -16.355915438021757 -4.639959739760613e-07 -14.812573370389694 -17.999423102251146 -20.779693856146075
--23.88634033849482 -14.91802036320467 -9.555331728083871e-07 -14.437903575122444 -16.402825277774692 -18.274563031481236
--24.86211804807404 -20.75302585675179 -2.2718295339396732e-07 -15.31927057157807 -19.39029375723609 -22.919300403517205
--24.862118040293083 -14.470300518175 -9.089345945900718e-07 -14.811035363749548 -17.791359852716848 -20.651631523643307
--24.86211804807404 -19.96641023794023 -4.646271749009223e-07 -14.61524165323656 -18.192933823711073 -21.473878680675234
--24.86211804807404 -20.13528330788216 -6.463529935163415e-07 -14.299282722449208 -17.440819422509065 -20.35721492248631
--24.86211804807404 -19.210096221890986 -7.107709811271512e-07 -14.246604143626092 -16.790603411241058 -19.0418972805277
--24.86211804807404 -20.275002884069607 -3.5586358132499996e-07 -14.865857766829912 -19.252870852612702 -22.888318053682532
--24.86211804807404 -20.45429834448533 -3.310869232109326e-07 -14.94341546305561 -18.947913778002704 -22.625485086491846
--24.86211804807404 -21.81819000130157 -3.4261408832225726e-07 -14.917023242531108 -18.464570261536362 -21.847103918503016
--24.86211804807404 -11.680728883073355 -6.290750712190096e-05 -9.847932155189438 -13.378924862025768 -16.88341510878126
--24.86211804807404 -15.697560959949927 -2.935275434512441e-05 -10.461031072357192 -14.410788680142097 -17.837168295312573
--24.86211804807404 -16.53585449177086 -4.735788683452036e-05 -9.996491082019194 -13.310680770472347 -16.41005686960067
--24.86211804807404 -11.290165932253185 -7.311209960275677e-05 -9.77036015256061 -12.645373521627151 -15.117465026021017
--16.98089617104946 -9.572779701798963 -0.00014538876449832205 -9.539520293349867 -12.628140357269197 -14.491719303092026
--24.86211804807404 -9.571076803622212 -0.0001686575371478427 -9.235088514489156 -13.524302595079202 -17.21393428151507
--24.86211804807404 -21.473458600249547 -8.938352335174926e-06 -11.631525145005348 -16.735700035604612 -19.90440925219114
--24.86211804807404 -22.243497654044972 -4.480197449530099e-06 -12.319637666857265 -17.941254443578533 -21.28444780625601
--24.86211804807404 -19.378594732102876 -1.9920281246754712e-07 -15.453959718552797 -20.692883263622097 -23.99538936420359
--24.86211804807404 -19.23834918115884 -2.685716762318435e-07 -15.16627607960801 -19.1227051251336 -22.665523867441085
--24.86211804807404 -19.047820393977176 -5.104989573290197e-07 -14.511593724587643 -18.8623572086281 -22.44911316864753
--24.86211804807404 -17.042627716255932 -9.71039805841567e-07 -13.948693281618269 -16.764098886440113 -19.43322426068553
--24.86211804807404 -19.18488132996265 -4.0516876159690796e-07 -14.751440942449104 -18.634729216030667 -22.323790282497363
--24.86211804807404 -18.808234751352593 -1.2092713375100317e-07 -15.997374103299661 -20.502008587055165 -23.81672680266293
--24.86211804807404 -24.812359384057736 -4.526215793276833e-07 -14.661855046272105 -17.606954323613387 -20.67874558398436
--24.86211804807404 -21.581638010219606 -1.7537754498642144e-07 -15.57651588281438 -19.637002055961446 -23.000526776861648
--24.86211804807404 -21.473947152052677 -1.4178130502973119e-07 -15.80160702217819 -19.356714074283524 -22.678941435653773
--24.86211804807404 -17.06278641908044 -9.211704660172515e-08 -16.77091607679756 -20.613315772514905 -23.773862118444743
--24.86211804807404 -18.26202698173831 -8.592856859390707e-08 -16.45369570878922 -19.773660967643927 -22.862478886346373
--24.86211804807404 -21.361802056672257 -5.8569791405727045e-08 -16.678642504468456 -20.82564191218106 -24.12250239802983
--24.86211804807404 -20.405570053519153 -1.1080744921621033e-07 -16.045271200986956 -20.142871741800818 -23.29194845089016
--24.86211804807404 -23.105756609324104 -3.300863112287722e-07 -14.960057650611818 -18.32559644821942 -21.213585337202858
--24.86211804807404 -22.95890822492554 -6.138781213360645e-07 -14.351474764421777 -17.421220607110552 -20.32982368756952
--24.86211804807404 -14.153511276650613 -1.1224280273558485e-06 -14.73717117765384 -18.32873022536808 -21.650300488735834
--24.86211804807404 -21.610313098184772 -6.371152219686316e-07 -14.28939237191617 -18.11044845903303 -21.48046208148179
--24.86211804807404 -19.241110848014497 -5.921314415457957e-07 -14.357061232158456 -18.976171930496836 -22.766037186384104
--24.86211804807404 -21.77553264594269 -5.529072371945887e-06 -12.12892587149559 -15.918928724689426 -18.991546537990526
--24.86211804807404 -24.656746293780937 -4.672232729818759e-06 -12.286107257695663 -16.722798100614654 -19.962156263631524
--24.86211804807404 -24.267562260495104 -3.497083491399433e-06 -12.587068225232441 -16.414097474430424 -18.813809309056275
--24.86211804807404 -19.222753396712175 -3.802345148740116e-07 -14.797043183582627 -20.772268171483883 -23.801747284280808
--24.86211804807404 -23.124351175861346 -1.6574468142405152e-07 -15.620065611839136 -20.67460825841702 -23.92795811513065
--24.86211804807404 -20.92314600799028 -5.203785597429622e-07 -14.542403658358781 -17.196112339713725 -19.97746724285553
--24.86211804807404 -20.04247597475224 -9.473718909358553e-08 -16.20324440632215 -20.85462475569476 -24.186559140059273
--24.86211804807404 -23.776290803180636 -2.881300006363219e-07 -15.111355137942388 -18.106638580283853 -21.06475589080763
--24.86211804807404 -22.30992419683465 -1.0699725511154057e-07 -16.071255718099362 -20.06934506978784 -23.567430335091796
--24.86211804807404 -21.51356118532352 -6.65629161233916e-08 -16.551547399585015 -20.523695270881536 -23.809892901429905
--24.86211804807404 -22.523103586449036 -1.0684447460107549e-07 -16.071438846801907 -20.117646471262987 -23.631300911047155
--19.567508977692434 -14.575799111465727 -9.065673465258328e-07 -14.877251818407666 -16.41900167941448 -17.95122693767291
--24.86211804807404 -15.803066929571314 -2.5730528729894786e-07 -15.961096396366957 -19.583224615531094 -22.740440547523573
--24.86211804807404 -19.6313792360365 -1.938244864052585e-07 -15.490363537854279 -19.500447767813046 -23.064548692530813
--24.86211804807404 -17.41023058721047 -8.925786628699584e-07 -13.988042260779986 -17.59893879375838 -20.9244248565337
--24.86211804807404 -23.122160441310783 -2.8191564303003958e-06 -12.84189844864696 -15.62527298137487 -18.6611626767275
--24.86211804807404 -8.554822878486776 -0.000207148506336019 -11.155070613921552 -15.396782198991634 -19.14616959195691
--24.86211804807404 -10.664904913204618 -0.00014200217763910006 -9.044629018641146 -14.316187461809548 -18.196004345628094
--24.86211804807404 -8.469281454316848 -0.0006563621157411048 -7.753082671938935 -11.030708951631057 -14.147104740722261
--24.86211804807404 -11.455880617161275 -1.0805644884814836e-05 -15.342241687199973 -20.491025278165733 -24.1771689136913
--24.86211804807404 -16.923683876052472 -2.0535180750291815e-07 -15.666800637395506 -19.478278797378152 -22.647356520921083
--24.86211804807404 -14.81083554726888 -7.223771698594561e-07 -14.868101012901912 -19.42868498356393 -23.30390974877057
--24.86211804807404 -13.26107151648944 -1.3358461256218757e-05 -11.38574427340821 -15.198246264300307 -18.393733725902248
--24.846300482395737 -11.89539427942797 -1.901567298900897e-05 -11.348776466787182 -14.785614708574819 -17.29633643212256
--24.86211804807404 -22.997260796791338 -7.894155043652873e-05 -9.493228985781256 -12.586139504253268 -15.655211305671617
--24.856976710537218 -11.348257594271345 -7.031411127006448e-05 -9.79793559265781 -12.813409993503411 -15.279038235373283
--24.86211804807404 -15.282277940760105 -1.0724059764766203e-05 -11.486103846114164 -15.345665203875457 -19.12011552165666
--24.86211804807404 -16.691475655464888 -7.560733440992173e-07 -14.198793091711858 -17.85769068241251 -21.384947943110692
--24.86211804807404 -17.356722577804 -4.342040468841013e-07 -14.744715874848225 -18.439492310607445 -21.36046508619436
--24.86211804807404 -19.389080246406714 -3.4839242840811746e-05 -10.288630165874435 -14.03902730836154 -17.864412513840573
--8.586421307369799 -8.444097985473917 -0.0006851526323486956 -8.722535129844202 -9.48159565472179 -10.031032942865929
--17.981419026773928 -9.799927074302545 -0.00021341005408809233 -8.91750169458852 -10.813203298784934 -12.49068334659005
--24.86211804807404 -18.94734144962478 -8.249803780630005e-05 -9.45136917939078 -12.501793389671311 -15.493021027182303
--24.86211804807404 -15.394849231013843 -7.946064330299762e-06 -11.777807770995528 -16.553957805236212 -19.90247796002224
--24.86211804807404 -15.923393107593373 -4.931571381261435e-06 -12.255826097106224 -16.78828960673053 -20.273806397545147
--24.86211804807404 -15.964137707375736 -2.916736132652087e-05 -10.524774582710828 -13.09468662489759 -15.84408687783929
--24.86211804807404 -16.1956891533746 -1.592276463102671e-05 -11.098746557392799 -14.22136172013858 -17.24509370378272
--24.86211804807404 -15.629474322450026 -4.286146918552891e-06 -12.41339718251721 -16.66608799390453 -20.301323970920155
--24.86211804807404 -19.85454635280283 -7.879300307711556e-06 -11.786360927253371 -15.164464164228628 -18.446667039753418
--24.86211804807404 -18.217659095634136 -6.579239857695818e-06 -11.976901360886513 -15.1524129719774 -17.919534498654958
--24.86211804807404 -14.51506799806104 -6.451009322283596e-06 -12.07150379716196 -15.318096929690835 -18.289956888946058
--24.86211804807404 -15.94182385328826 -6.732009836807329e-06 -11.964737695081563 -15.254190584170797 -18.35138018054136
--24.86211804807404 -15.889507055345558 -5.344659331996127e-06 -12.175598274752094 -16.58336190461282 -20.36385942705753
--24.86211804807404 -19.945876638567476 -4.113645494852047e-05 -10.171493005412335 -12.807668296011128 -15.722320394028712
--24.86211804807404 -15.765854778398209 -4.225857484718709e-06 -12.412949896659974 -17.852613715519553 -21.740090706435232
--24.86211804807404 -17.516587449800745 -2.087667947792138e-06 -13.10922730231059 -17.162074054949873 -20.45914181026708
--24.86211804807404 -13.970935963176139 -1.3368396761248569e-06 -14.55987777608789 -19.00310983211512 -22.60882060667695
--24.86211804807404 -14.798832703661258 -6.659195727065637e-07 -15.077974612028143 -18.577953791560567 -21.81262629503015
--24.86211804807404 -18.443444123230886 -2.904026338845789e-07 -15.124249013036668 -18.422004733597667 -21.490499316956257
--24.86211804807404 -19.628335211386645 -2.524125209957262e-07 -15.23447192362014 -18.772234966472464 -21.62365055912053
--24.86211804807404 -19.71687167676544 -5.025324001928233e-07 -14.51193510854496 -20.40281824637418 -23.970545531984474
--23.508050758858584 -15.76413176472797 -5.117094377948828e-06 -12.258989293309492 -15.406650783972756 -17.37123775060848
--24.86211804807404 -15.890208208136452 -1.1085714417991e-05 -11.473111434655628 -14.451431290347564 -17.527760220927615
--24.86211804807404 -15.994338098787816 -8.268895383045649e-05 -9.451473147215983 -12.471112801855254 -15.631111249108708
--17.21460728226448 -8.07345884768273 -0.0003555652044558433 -10.10650411960129 -12.814800767973576 -15.277101103691809
--24.86211804807404 -12.183436397407693 -2.07382827409619e-05 -11.100301494454039 -14.517560044904465 -17.715458795567702
--24.86211804807404 -14.211205065306014 -1.0765784356492336e-05 -11.535635213457004 -14.996660124066947 -18.409671840493846
--24.86211804807404 -18.265020957771412 -8.516075747921903e-07 -14.006898764356242 -18.104865875145485 -21.68747597911524
--24.86211804807404 -14.483399026850735 -0.0002612543380661747 -8.312937783386158 -11.140797262620847 -13.9468291853513
--24.86211804807404 -13.64578892973977 -0.0004907639508441308 -7.631348107919959 -12.35649876895693 -15.710816156560584
--24.86211804807404 -12.423593384546997 -0.0016785258132180902 -6.417074822601708 -10.163191612270879 -13.716572472235095
--24.862118048074027 -12.583486734106174 -4.426218790770653e-05 -10.109298911520924 -15.865205624748947 -19.12851997224232
--24.86211804807404 -19.893660157772953 -5.7106866408529466e-05 -9.804382182616507 -13.242625575685452 -15.932283527451286
--24.86211804807404 -16.36596739893918 -2.9586502762635192e-05 -10.504735629645081 -13.161680070244353 -15.537246446435775
--24.86211804807404 -15.144890256204409 -8.227175439190493e-06 -11.755636228474652 -15.987686319692195 -19.450437883750848
--24.86211804807404 -18.971013261811983 -2.6259681531415335e-05 -10.622737563797592 -13.230323466750484 -16.09483022145339
--24.86211804807404 -15.099442840052932 -3.930881487423932e-06 -12.529405613111644 -17.176929667387896 -21.300367484808643
--24.86211804807404 -19.50669537031458 -5.243748217309552e-06 -12.205065591743775 -15.298839883552322 -18.592169676801465
--24.86211804807404 -14.468640523929503 -7.019828061061162e-07 -15.522825361964793 -22.426160276312277 -24.740685276106152
--24.86211804807404 -18.635468446100504 -1.3377984416917954e-06 -13.57113658100211 -16.79350052854507 -20.031252844756093
--24.86211804807404 -20.17194731887188 -8.470685598782612e-06 -11.745346067384867 -14.489341766764467 -17.226165921287244
--24.86211804807404 -16.47843986283172 -2.975014138484333e-06 -12.754517569331806 -17.9681928093985 -21.963085918464884
--24.86211804807404 -12.916053525207403 -4.664538559184805e-06 -13.060057705723898 -16.41282144638052 -19.561694910533333
--24.86211804807404 -21.546402074132093 -2.403270242423705e-06 -12.97314457898242 -16.372614493089742 -19.49087140438929
--24.86211804807404 -20.560205280821645 -1.9309906467146476e-06 -13.176343603927394 -17.197614059106606 -20.80864967725633
--24.86211804807404 -15.434298858646006 -4.240099972241396e-06 -12.449260923224243 -15.960193956211093 -19.285331090234237
--17.917622916197875 -10.85571312706075 -3.992020049670142e-05 -11.003488102815957 -12.599143505080207 -14.342544495073941
--24.86211804807404 -17.5401965264477 -1.1727081949408635e-06 -13.694790022561847 -17.74469402885453 -21.231420172976687
--24.83214790719818 -13.871343774094877 -1.7039752450709322e-06 -14.115686145795623 -17.92535629071007 -20.573116776503632
--24.86211804807404 -22.647102385456666 -1.083580806415796e-06 -13.74717844860535 -18.21386560777276 -21.639940820269594
--24.86211804807404 -13.403834294010617 -1.7742779102547512e-05 -11.048349264581526 -14.977819728797712 -18.763090111303562
--24.86211804807404 -18.855168565448505 -7.144940594538962e-05 -9.577800352769273 -13.070486065825227 -16.28338788339348
--24.86211584147249 -14.154168365056814 -5.792311695140828e-05 -9.800172233076502 -13.336887729501782 -15.694154246426441
--24.86211804807404 -16.254852611668635 -4.919148911924909e-05 -9.98313432485559 -12.818534638465806 -15.325793763108402
--24.86211804807404 -18.635361565598593 -2.398956561466825e-05 -10.663782751638992 -14.368290939534706 -17.341372557381703
--24.86211804807404 -18.122647140951113 -2.1303510776449208e-05 -10.776352689636143 -14.75681738907153 -18.235657313160214
--24.86211804807404 -9.624778278013869 -7.335926697249473e-05 -11.839606191737614 -16.457021795882916 -20.712397962613572
--24.86211804807404 -14.822786696763867 -7.995048774322999e-05 -9.482902247051726 -12.61537286120847 -15.945337333254257
--24.86211804807404 -10.694846261659762 -2.5978956742611636e-05 -12.621610022449296 -17.89377168108424 -21.89356532315618
--19.353971084434953 -10.131215129683016 -4.395760390801806e-05 -12.424712834266238 -16.03321537876084 -18.556058267464344
--24.86211804807404 -19.014702111586033 -1.54882628322639e-05 -11.081468741494456 -16.271582165435447 -20.108324131879055
--24.86211804807404 -15.9830521392258 -1.6221948342276526e-05 -11.046323928122092 -15.67758040414084 -18.877591038877
--24.86211804807404 -16.46994104760694 -3.090474189332282e-05 -10.413349630358116 -14.05725298300849 -17.741085684588136
--24.86211804807404 -13.096145648024804 -1.3414620304685876e-05 -11.400448119136103 -15.6010229981559 -19.55844632342542
--17.130009928774367 -7.457776154043734 -0.0006592198784829972 -9.517644396480712 -11.773553821425741 -14.063777662855557
--24.86211804807404 -19.95389442151674 -2.0536844905050256e-05 -10.811336717980138 -14.84698651901136 -18.591079499125318
--24.86211804807404 -19.721372157515166 -1.7859762262595336e-05 -10.955412739244473 -14.781626164478967 -18.152949826944436
--24.86211804807404 -13.634170428270798 -3.177683260502384e-05 -10.4373579719817 -13.625941779375202 -16.768194853561027
--24.86211804807404 -16.64094953711701 -7.225264346927274e-05 -9.589758178447818 -12.537400139521583 -15.558947190517666
--11.597265725601474 -7.638828124553495 -0.0005607855580819221 -9.69416726990985 -11.809252691469489 -13.848572305941472
--24.86211804807404 -11.940191474852577 -1.8168904477700032e-05 -11.380018132021252 -15.333436725490108 -19.071556643790412
--24.86211804807404 -13.727306768379693 -1.5122842823844795e-05 -11.193559941143775 -15.15473759368466 -18.94648138976588
--24.86211804807404 -13.173514530508116 -1.72818424466481e-05 -11.094767366345135 -15.491985085693871 -19.705654190656624
--8.770109825618345 -9.242416092327597 -0.0003200945868364058 -9.755384734050304 -11.806560789031314 -12.91680365525736
--24.86211804807404 -18.11871309349248 -5.1368573819987606e-05 -9.901323977318656 -13.619881280498216 -17.344262522450478
--24.86211804807404 -12.983457206307495 -4.2587543794547766e-05 -10.168651533955012 -13.200936286880236 -16.272278502119455
--24.86211804807404 -16.82610274443795 -1.7978976273314018e-05 -10.952881370367011 -14.705803254841733 -18.280600922161277
--24.86211804807404 -15.040849745904628 -1.9921754739471442e-05 -10.870020616283426 -14.349826960303155 -17.639811945545166
--24.86211804807404 -20.215457929119605 -3.977961282952691e-05 -10.174435594529783 -13.360187379298912 -16.50884237912533
--24.86211804807404 -17.76338133539573 -1.8951183920590253e-05 -10.887248853388522 -15.277886657493912 -19.133438998800386
--24.86211804807404 -13.319659099745103 -2.3161961254902774e-05 -10.772697544525013 -14.43058836676795 -18.011895973247302
--24.86211804807404 -17.395879097802062 -2.8772984233427223e-05 -10.509398409090185 -13.475683557586713 -16.61040198417909
--24.86211804807404 -16.007440459656404 -6.817098222589024e-06 -11.928937531398088 -16.06047359594193 -19.728710099915734
--24.86211804807404 -18.273210472258288 -7.098712784647798e-06 -11.88513574832885 -15.475165090758216 -19.157768990257964
--24.86211804807404 -19.806836288132242 -1.1601653053250338e-06 -13.685237741545075 -17.832459391254215 -21.413666832603592
--24.86211804807404 -13.986260897070721 -1.9942506806480687e-06 -13.688712789902556 -17.97480833916802 -21.65264913523865
--24.86211804807404 -14.42986106370028 -3.8885177394198944e-05 -10.225697504839138 -13.12088434874192 -15.994548459982342
--24.86211804807404 -11.659270140985143 -0.00010290619369940357 -9.351542819910575 -11.873927914915555 -14.589519432562895
--24.86211804807404 -12.159225943502713 -1.880621077332556e-05 -11.218810681669122 -15.747250574725388 -20.06259037604334
--10.083385899163089 -9.221837769460846 -0.00024050271530823286 -9.671316737991155 -10.565459391643595 -11.418453964484574
--24.862118047658797 -9.74531102906823 -0.00017375926548041098 -9.167218439570531 -11.519116743761803 -14.000986285312656
+-27.634706355513906 -19.613148075937477 -7.798154027149724e-06 -11.764081780726226 -17.93962117222687 -24.05580200087539
+-27.634706355513906 -22.60239273474568 -2.7728783729521368e-05 -10.49715460864289 -15.995094256962423 -21.697739407386475
+-27.634706355513906 -17.32148069056237 -3.3559441387622853e-06 -12.615005030178382 -19.2763865839997 -25.603498275923535
+-12.439795560368774 -10.50820401344044 -3.4271122231662e-05 -12.804679598682586 -15.284800125425427 -17.57368655574011
+-27.634706355513906 -22.564789378417235 -8.970284568229729e-07 -13.924673387446266 -21.600544717688482 -27.26375856679973
+-27.634706355513906 -22.478449318779827 -1.8733633900387842e-07 -15.49186848446313 -22.14858386738271 -27.35785006649398
+-27.634706355513906 -20.993087241328265 -2.819198414352921e-07 -15.08602448501051 -21.235712236705584 -26.826821773286767
+-27.634706355513906 -21.149236830278383 -3.225327742715528e-07 -14.94954947318069 -21.99799077804529 -27.387351560673885
+-27.634706355513906 -17.715563920537562 -1.9504196703638586e-07 -15.574461422314656 -19.747387043873974 -23.632481728723803
+-27.634706355513906 -22.352315949521067 -5.294925859700419e-08 -16.756329185593128 -23.50521585601327 -27.528243905815643
+-21.075025102125345 -13.718586153821407 -1.3988497545583254e-05 -11.709266272521326 -12.529386473858226 -13.766722581923972
+-27.634706355513906 -21.874124581976798 -1.657531882392746e-07 -15.61830610541271 -21.04115430053987 -26.232027088847467
+-27.634706355513906 -26.678531447534027 -3.633198676396703e-08 -17.130127734577393 -22.910558344506946 -27.198052873069383
+-27.634706355513906 -17.603592839601486 -1.997448337371673e-07 -15.568467459377171 -19.362272736089643 -23.284251309922322
+-25.64643544000207 -15.42720187384475 -6.840742882217723e-07 -14.67482474661532 -16.7018470389174 -19.033586180484036
+-27.634706355513906 -24.139876428598846 -2.371096325717692e-08 -17.5545526160146 -24.148421241971107 -27.5643500196997
+-27.63470635419038 -15.34991203414103 -4.289621630769957e-07 -15.384897909464142 -19.06750042736857 -23.026581371611822
+-27.634706355513906 -22.144030610886496 -6.078019682751326e-08 -16.621219537926162 -22.306491970227796 -27.020185929820734
+-27.634706355513906 -22.88036059271166 -2.8414824149514273e-07 -15.092458638516757 -19.074810783030482 -23.2643399361896
+-27.634706355513906 -20.2119133184782 -2.4845581832299607e-07 -15.257595312348649 -18.41310719602524 -21.614301230593234
+-27.634706355513906 -24.933704297280812 -4.914746000209702e-08 -16.82752620025343 -23.36273877653973 -27.477034502742136
+-27.634706355513906 -24.874860396446724 -5.3082623360059315e-08 -16.750871764962785 -23.170548038274056 -27.491534589436842
+-27.634706355513906 -27.235618792508234 -1.4643327273676938e-07 -15.74081275521605 -21.0396012307404 -26.344690408207473
+-27.634706355513906 -14.944827156920557 -2.898733202536941e-05 -10.4664628449777 -15.490660471332333 -20.821737226492008
+-27.634706355513906 -19.063306711603214 -7.820932579993431e-06 -11.762524476627682 -17.52379514439458 -22.808039475221694
+-27.634706355513906 -21.354002925062392 -3.515374530425467e-05 -10.269214419080601 -14.583203284119636 -19.328826753692812
+-27.634706355513906 -12.672545549779196 -3.4874481146144965e-05 -10.386444352763702 -13.962915945171826 -17.42061742497902
+-17.998467905126017 -10.895564192600386 -5.9657532124471244e-05 -10.17320450374618 -12.855356841732265 -14.991667949929097
+-27.634706355513906 -12.861008877537953 -4.013349943396066e-05 -10.192842949923781 -16.14050826684333 -21.733671919057425
+-27.634706355513906 -25.162483281073918 -4.0068162822142075e-07 -14.730952329127676 -21.50100716234884 -26.551955297613056
+-27.634706355513906 -26.151163223681944 -2.442692229119612e-07 -15.228777585624998 -20.680074948006574 -25.83705394651624
+-27.634706355513906 -23.442261725247 -1.1221115656241785e-08 -18.301317821293317 -24.700998449369116 -27.59850461948437
+-27.634706355513906 -22.427162859453073 -2.3344719555748873e-08 -17.577029298235548 -23.811136791076446 -27.533672979589234
+-27.634706355513906 -23.28926161483978 -1.1865474081754534e-07 -15.948704550751666 -22.109471507308566 -27.020844164257333
+-27.634706355513906 -18.42883040460778 -4.1567240872794135e-07 -14.741968745786693 -18.444693477774774 -22.498381839765507
+-27.634706355513906 -24.514830578661503 -9.241842414497665e-08 -16.197630920293797 -22.48145035241052 -27.361708653396324
+-27.634706355513906 -26.264838042600502 -4.6605635858753395e-08 -16.881342180266522 -22.863376909620122 -27.326462096492573
+-27.634706355513906 -27.63288554516299 -1.7198544638802068e-07 -15.58355999385929 -20.35634079660546 -25.567272689701493
+-27.634706355513906 -25.500725981463628 -3.358583900647376e-08 -17.207950259621445 -23.224968172064113 -27.4128461431947
+-27.634706355513906 -26.279449989362863 -9.621088614876241e-08 -16.16210368953429 -21.168386159785513 -26.25575808270424
+-27.634706355513906 -18.92359347742364 -2.1924988555763432e-08 -17.95429568630259 -23.438845781569757 -27.370838322106604
+-27.634706355513906 -21.445487643945945 -5.451607366269701e-08 -16.74360161165641 -21.143171092630535 -25.757204817417517
+-27.634706355513906 -27.04975673460833 -1.6766665563737044e-08 -17.897691303749603 -24.3912584559557 -27.60012795400438
+-27.634706355513906 -22.76432440817883 -1.6563592783409478e-08 -17.91990058269234 -23.463209894118073 -27.295830845818976
+-27.634706355513906 -26.022165561577523 -1.183698140717005e-07 -15.963145997258863 -20.18457691715509 -24.473959564036882
+-27.634706355513906 -27.042790376640333 -2.018932619008846e-07 -15.425027733998729 -20.020816946505192 -24.589439724516676
+-27.634706355513906 -16.20989975492068 -3.249559115771362e-07 -15.278574250987258 -19.884740242686572 -24.587240004833294
+-27.634706355513906 -25.63441123273475 -1.298280512122027e-07 -15.861343896444877 -21.113711806662064 -26.291092136718945
+-27.634706355513906 -22.989873887168656 -4.460892534112648e-08 -16.925624347102435 -23.924763657776964 -27.581063999500426
+-27.634706355513906 -26.01405597182375 -1.3229479972192996e-06 -13.54267124103941 -18.49367232266216 -23.14007035356714
+-27.634706355513906 -27.519025860952585 -9.609214507296457e-07 -13.85957871515657 -19.307851061017423 -23.81829332582913
+-27.634706355513906 -26.735291481227183 -6.654580645468041e-07 -14.237210938725712 -18.48051883500083 -22.158786124554354
+-27.634706355513906 -20.1036608110672 -2.0491586270354e-08 -17.79328644952281 -24.01566958825681 -27.34645640410586
+-27.634706355513906 -26.91479272554984 -6.415356255040113e-09 -18.84585214007175 -25.543441999577972 -27.620277349947727
+-27.634706355513906 -23.119134111944902 -1.913484436558173e-07 -15.489490872428913 -19.376653046315425 -23.802892492109045
+-27.634706355513906 -25.420161088171273 -1.6994829274260172e-08 -17.884087415300918 -24.901621371052745 -27.615853400054522
+-27.634706355513906 -27.603001128363452 -1.8876443425762615e-07 -15.494750063975433 -19.865121680575733 -24.578796789539634
+-27.634706355513906 -27.066694555269564 -9.65327857419099e-09 -18.443693051145612 -25.298054258969984 -27.623191094157363
+-27.634706355513906 -24.82793736363043 -8.513278091209627e-09 -18.570442490429684 -24.688368150441853 -27.594660147291954
+-27.634706355513906 -27.420583249488175 -3.155267276142014e-08 -17.269305608399282 -23.582562176024553 -27.540085113182013
+-20.327067818990262 -15.033802588927632 -7.433188679659643e-07 -14.870748581398338 -16.30540981373116 -18.001767505648388
+-27.634706355513906 -16.870540762764232 -8.296979221196086e-08 -17.14626359136578 -22.27347883582746 -26.71284773219186
+-27.634706355513906 -25.203279285389296 -5.341605714307435e-08 -16.74551531974841 -22.697040377517844 -27.314913381976492
+-27.634706355513906 -19.991486352405655 -2.417619842215701e-07 -15.249889617450181 -20.289266270309437 -25.452417338903214
+-27.634706355513906 -26.726405102642676 -4.84449134210989e-07 -14.546055823931555 -19.652186931290608 -24.989221093780515
+-27.634706355513906 -11.613015725958112 -1.4556675073084577e-05 -12.112618962222108 -17.765065343063185 -23.22462913481279
+-27.634706355513906 -14.906876079733404 -2.3237696805288885e-05 -10.685407728325636 -17.48963675868405 -23.045403614577353
+-27.634706355513906 -10.28609913483247 -0.00024052386218227807 -8.497457064178825 -12.94748115304602 -17.608163985745016
+-27.634706355513906 -14.904980277998357 -3.748654826022407e-07 -17.070783877097906 -24.178816931980222 -27.59248668008637
+-27.634706355513906 -23.564954010527558 -3.1734097914646465e-08 -17.268615643377238 -22.561852764425918 -27.025216031099934
+-27.634706355513906 -19.790742903003206 -6.712415929812021e-08 -16.554353385904207 -23.392065957789537 -27.537361423497416
+-27.634706355513906 -14.874808882186953 -3.5629366383938575e-06 -12.654076442183047 -17.646937656031444 -22.47384779436268
+-27.610983232178075 -12.250925111839383 -8.384108740286838e-06 -12.561513820340156 -16.16054939596201 -19.514638727589553
+-27.634706355513906 -26.690872677341854 -8.629371250762525e-06 -11.664446581630846 -17.15960371857011 -22.470441144714187
+-27.63094128645542 -12.094748304157484 -2.7078785063699495e-05 -10.802173694502548 -13.729588032418258 -16.920327688652463
+-27.634706355513906 -22.069193249268352 -3.122095371989287e-06 -12.678788653719215 -19.03355068532212 -25.40190687713811
+-27.634706355513906 -19.558304768261248 -1.8613756088027617e-07 -15.517212512297442 -21.097588999843932 -26.37925185759018
+-27.634706355513906 -18.855762293117493 -8.168985744612048e-08 -16.411894199361114 -20.9529005383825 -25.09932138506332
+-27.634706355513906 -24.124480172997828 -5.741831552087679e-06 -12.069702359955075 -18.293014216082753 -24.572135299150425
+-8.645978277951247 -8.508331866025225 -0.0006435600954790239 -8.856952983585364 -9.45743691422503 -10.00340339966432
+-19.24104272297214 -10.29866847337443 -0.00016424813065918543 -9.11492345041162 -10.928544218964676 -12.859262488008111
+-27.634706355513906 -21.77301562228316 -3.625239390440715e-05 -10.235786741488024 -14.772592051691444 -19.36933533435595
+-27.634706355513906 -16.008573837655153 -8.075153402106802e-07 -14.17991075534088 -20.353252830912997 -25.146202330741712
+-27.634706355513906 -20.011978552750698 -1.778885482752625e-06 -13.243428175512161 -19.114695848153296 -24.202525943253292
+-27.634706355513906 -18.634826180997905 -2.514490381896555e-05 -10.62489707472655 -14.01570316046882 -18.03255948715396
+-27.634706355513906 -19.49613041131711 -7.732940033191982e-06 -11.782955932400524 -16.169269952622688 -20.667521565654212
+-27.634706355513906 -18.0762576854475 -5.73423271154886e-07 -14.398221095067981 -20.66757879872652 -26.353903950688267
+-27.634706355513906 -23.7186941869144 -1.2071743159603132e-06 -13.63099176950722 -19.197237966184716 -24.831631027956167
+-27.634706355513906 -21.128958299662663 -1.7341191955424832e-06 -13.278332218654064 -17.62910129999723 -21.79326756461269
+-27.634706355513906 -16.6930621225231 -3.4504547676675646e-06 -12.611631102912046 -16.621160347101416 -20.922838913519122
+-27.634706355513906 -18.832982304693836 -2.7111794324360224e-06 -12.830678811404736 -17.424901412999542 -22.08148140841198
+-27.634706355513906 -19.413578867176184 -6.310552027611632e-07 -14.283376583918196 -20.591344683955636 -26.28701146121851
+-27.634706355513906 -22.729870031902074 -7.529636520634117e-06 -11.805507108599926 -16.535571094115 -21.65916212572832
+-27.634706355513906 -19.792839055459616 -4.783649404648727e-07 -14.559533209257689 -20.998539118118607 -26.31333884870287
+-27.634706355513906 -20.110805310450502 -2.833899973742618e-07 -15.087336321702805 -20.422522805706972 -25.675210419986694
+-27.634706355513906 -15.8998931645093 -1.9158430360179858e-07 -16.51607315178985 -22.534384703507772 -27.192009962949925
+-27.634706355513906 -16.474500351350358 -2.026157501876244e-07 -15.84594346676554 -20.36069378168823 -25.0337789882842
+-27.634706355513906 -18.766600265545918 -4.724326114718252e-08 -17.033044286492956 -22.13558610411142 -26.671261791040532
+-27.634706355513906 -24.528482954617893 -9.820910224789583e-08 -16.152461668919457 -20.210973712643227 -24.289572267704475
+-27.634706355513906 -22.664146741083048 -4.0831592173606166e-08 -17.01449847445192 -24.865838866642072 -27.611970248039416
+-24.966839696386433 -16.278744999596285 -2.228451096655744e-06 -13.10394204149385 -16.21289015777947 -17.997479320469505
+-27.634706355513906 -17.65121605434761 -4.346250548939128e-06 -12.361468134511027 -16.937569202896146 -21.80725942487557
+-27.634706355513906 -19.854456815483797 -3.832572518397e-05 -10.177955625920593 -14.948264866331671 -20.14615647764407
+-18.38509529489511 -8.18986031637416 -0.0003020119893150412 -10.656752302512851 -13.89329305127907 -17.11204583128278
+-27.634706355513906 -16.38240097854621 -7.537885685082243e-06 -11.81420183473916 -16.598104438398757 -21.22535438429385
+-27.634706355513906 -19.61996461652936 -7.792093981263607e-06 -11.769773430464022 -16.733331204386154 -22.02344356294426
+-27.634706355513906 -23.586503844441054 -6.369126577077487e-07 -14.271347820077281 -19.60607077647167 -24.959505097854485
+-27.634706355513906 -17.449736566945727 -0.00013532628004473944 -8.932484375442602 -12.649513518346387 -16.7696151539443
+-27.634706355513906 -15.373108730961489 -3.329227624469225e-05 -10.319533922501002 -16.13655893863941 -21.306140593563487
+-27.634706355513906 -16.040820606905136 -0.00024707219880890443 -8.30940405967209 -14.115653436582845 -19.868671763276755
+-27.634706355513906 -14.06374428340803 -6.1404323300566765e-06 -12.142504727939372 -17.269588434258356 -21.246662338898197
+-27.634706355513906 -23.62332337478999 -1.2876445309083016e-05 -11.2760797871664 -15.421893756908071 -19.50761461075436
+-27.634706355513906 -17.549978766783052 -9.441611668026538e-06 -11.60984065134375 -14.920907155777043 -18.3810572326124
+-27.634706355513906 -17.23847871254643 -1.1719737064397855e-06 -13.687614144153526 -19.610974231189722 -25.043296664774832
+-27.634706355513906 -22.627884612777628 -1.4412821165891387e-05 -11.167128102345949 -15.093312645030732 -19.662254820122502
+-27.634706355513906 -20.63854364330464 -4.811682991211707e-07 -14.549741299096649 -21.813204008943487 -27.31712448344168
+-27.634706355513906 -22.72126721613879 -9.876476205002941e-07 -13.832550488702037 -19.21430404018065 -24.772607295269257
+-27.634706355513906 -16.690261061814166 -7.22375393496406e-08 -17.954873352548145 -25.903704396697556 -27.625193869907385
+-27.634706355513906 -25.09833328598298 -7.175299172420971e-07 -14.156998758417657 -18.793188287315633 -23.770844579431348
+-27.634706355513906 -21.730123696616452 -1.526934926651319e-06 -13.403866931247554 -17.876673868818845 -22.464565959767963
+-27.634706355513906 -20.53055859652326 -4.3539636824420675e-07 -14.651369379340556 -20.93395374209885 -26.236132764832334
+-27.634706355513906 -14.146445312685913 -1.4595487502184756e-06 -14.124123409694242 -18.791747872629735 -23.489170296770318
+-27.634706355513906 -25.749611408267395 -4.3396902745028105e-07 -14.656197892265082 -19.74367716295995 -24.771509792440117
+-27.634706355513906 -25.514712237323163 -1.948175503837553e-07 -15.452271595378155 -21.830303867644716 -27.122111312039873
+-27.634706355513906 -19.62027922376916 -2.7634172692119e-06 -12.807745223236878 -17.682640290440485 -22.675460187503965
+-18.974112529424627 -11.366802206602868 -3.532022993347857e-05 -10.849664567105622 -12.480381913232758 -14.452279761600437
+-27.634706355513906 -21.91881206299253 -4.412539594865041e-07 -14.636785740927328 -20.534438908545237 -25.931490794860288
+-27.582882144031895 -14.487887883974413 -8.504993859825996e-07 -14.915134304833265 -18.790753854587287 -22.173053994084093
+-27.634706355513906 -26.85393244371248 -8.5745515920146e-08 -16.272182953543652 -22.591007528873973 -27.258737477529685
+-27.634706355513906 -18.403789949182386 -4.516191960748787e-06 -12.312297178518625 -18.420002075064875 -24.480775294460802
+-27.634706355513906 -21.469467898889267 -1.2906466001560505e-05 -11.261390308552837 -16.897905556805153 -22.281908781714694
+-27.634705569668107 -14.805066428764205 -1.576025104428306e-05 -11.114803361781982 -14.564982234010701 -17.47899931297508
+-27.634706355513906 -18.43115360792506 -2.8931770995849383e-05 -10.489085613888266 -13.76068011921345 -17.442782172296816
+-27.634706355513906 -22.876378866371432 -1.27200682083047e-05 -11.283772537443676 -15.760377118891768 -20.220140511623885
+-27.634706355513906 -24.62110197612663 -5.325774533415181e-06 -12.14470896586184 -18.48030156928781 -24.475005304327514
+-27.634706355513906 -14.184968538086268 -2.3073365932738313e-06 -13.336190984334657 -20.40136235625679 -26.693319452590067
+-27.634706355513906 -17.428245855796433 -1.0307206688985064e-05 -11.488719512590547 -17.162552831827654 -22.961047698970646
+-27.634706355513906 -12.971343196215566 -3.0434364893220225e-06 -14.148018519257116 -21.64156268377497 -27.046885455295207
+-20.72874684243498 -11.335915772006901 -1.389223338174337e-05 -13.189292210098438 -16.33907116308681 -19.29968822966416
+-27.634706355513906 -23.922757278005164 -2.136112003852327e-06 -13.057818876519182 -19.679578857969947 -24.888825915173737
+-27.634706355513906 -17.16898033423633 -2.3707758007854402e-06 -12.970530162697363 -18.650993659434043 -23.419070456812314
+-27.634706355513906 -20.65935037474518 -4.036022123057352e-06 -12.422365370619668 -18.69940905010691 -24.8897724722249
+-27.634706355513906 -19.29806720408521 -4.3168928919173535e-06 -12.355844645618173 -18.604688831263402 -24.81603328275084
+-18.549533905230287 -7.79659144696031 -0.0004747128450585854 -9.730782577235306 -12.473912871488936 -15.39227258660424
+-27.634706355513906 -26.58269124315031 -3.4344752208715543e-06 -12.583258389273242 -18.992444642358727 -25.313785015485966
+-27.634706355513906 -24.95658918677501 -3.4871973325916846e-06 -12.570809006656917 -17.99250351062 -23.440124929676326
+-27.634706355513906 -15.701993527001129 -4.8314779739025135e-06 -12.277032799369563 -17.614701050088275 -22.924863171532834
+-27.634706355513906 -19.268676480959794 -1.5872550793159508e-05 -11.058803381844733 -15.939684786589957 -20.89714634700185
+-12.239799973748793 -7.867175829400516 -0.00044429726266233277 -9.890795152853658 -12.174261928410584 -14.615257262268548
+-27.634706355513906 -16.550789779561992 -3.775570521417127e-06 -12.506451430611731 -18.629837136373183 -24.69449274205416
+-27.634706355513906 -18.918026427148554 -4.85479609543227e-06 -12.23948615713846 -18.150319568281535 -23.990197324808683
+-27.634706355513906 -19.403036733862873 -2.9612616093845533e-06 -12.73191946700875 -19.860810129567344 -26.47509684993198
+-8.778656117712885 -9.23881871655205 -0.0002833370245948875 -10.639695502075982 -12.001568006901202 -13.103105703864957
+-27.634706355513906 -21.049390305676326 -8.28966482370394e-06 -11.702925977043979 -17.7577909553584 -23.718099022492627
+-27.634706355513906 -15.736209811875186 -2.8091071246228968e-05 -10.502244065882762 -14.582056235500952 -19.121001344892147
+-27.634706355513906 -20.99025528105765 -3.665044622990466e-06 -12.519620814541234 -18.407362785848104 -24.42530847821395
+-27.634706355513906 -17.856651929330518 -4.203455162026607e-06 -12.388823710968072 -17.67763853749703 -23.019961648052075
+-27.634706355513906 -24.705371946732892 -7.0024511530989254e-06 -11.874575783691286 -17.10929665267182 -22.504853731468888
+-27.634706355513906 -22.743915208778404 -2.3198881571813397e-06 -12.975456460069951 -19.503494645761734 -25.750387294407094
+-27.634706355513906 -16.332963432522405 -7.010638260765508e-06 -11.883826145067696 -17.361622894974538 -22.844325111186357
+-27.634706355513906 -21.93631966334108 -2.2013185621450706e-05 -10.737877164971682 -15.007615374248546 -19.922571225253094
+-27.634706355513906 -21.957936330220356 -2.3431464411021974e-06 -12.966207052083103 -19.123286674519996 -24.970147038178013
+-27.634706355513906 -22.47297110749053 -9.71555351108101e-07 -13.846339348991126 -20.098603186912282 -26.189412019039292
+-27.634706355513906 -24.229036673485215 -1.4009194482897594e-07 -15.782497026093727 -21.87930452063891 -27.066700066389156
+-27.634706355513906 -15.856394211985313 -3.025056369416302e-07 -15.573732992885875 -21.714524679614144 -26.948419235835605
+-27.634706355513906 -17.77287218732689 -2.4053500930239754e-05 -10.655716170075255 -14.590718344259706 -18.65989813730751
+-27.634706355513906 -13.003402286472586 -4.97604183959563e-05 -9.978751227402249 -13.707912229484558 -17.826505156850207
+-27.634706355513906 -17.263829382043458 -5.399286049124166e-06 -12.136501137155525 -18.728566680506226 -25.220801853795436
+-10.251008840967385 -9.373710826596529 -0.00022324955798698224 -9.694748445747802 -10.44845692394033 -11.299741692673031
+-27.63470635550078 -11.363290831614716 -0.00011238542933979739 -9.247986600234787 -12.350269939972646 -15.846500430180493
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_denoised_copy_ratio_t.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_denoised_copy_ratio_t.tsv
index d9245516214..48c7ca4faac 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_denoised_copy_ratio_t.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_denoised_copy_ratio_t.tsv
@@ -2,173 +2,173 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-1.938195794952936
-2.1048836194514284
-1.8405429122613182
-2.0997240647283677
-2.1553921704485353
-1.9228466416210988
-1.75524666077193
-1.8632760147242609
-1.9383100443355137
-1.8842552763179274
-3.6873758488813704
-2.077332105054551
-2.1401929818507304
-2.0978615092588044
-2.643543316661906
-1.9679395845549577
-2.010179145014825
-2.0515452094222013
-2.1702927404430086
-2.2799067031004703
-1.8576431291730509
-1.9835948825690852
-2.060690323518157
-1.9660848835375424
-2.0349035588961715
-2.313769952688598
-2.1225579035377447
-2.5063674346553118
-1.8261568856861363
-2.140991588503257
-2.183841901014578
-1.7528631020071177
-1.898190394128626
-1.948877605957697
-2.2871350383752915
-1.9172191739045679
-1.7617606206674592
-2.36603209649312
-2.0073916403181236
-1.9559702063329611
-1.7537707595764132
-2.036636094207308
-1.8788860999149484
-1.8485970450031164
-2.2653938292476963
-2.1497506284514207
-1.7815059831855382
-2.1227215396406782
-1.936982029285266
-2.2725527817983364
-2.6110224534347286
-2.6861166169995307
-1.7606626369881275
-2.0539846686155823
-2.3988949822322803
-1.877433291896725
-2.1940688306997758
-1.9547989975232922
-1.9577789577669353
-2.0034574768180184
-2.806441012536024
-1.8509824790669434
-1.857068155821777
-2.044192366643752
-2.3176397948963476
-1.58105333021275
-1.8102271088904975
-1.9531214043578693
-1.4684116645346
-1.8974066372349925
-1.6618957523108016
-2.0695247756209856
-2.1455524391649505
-2.4153099954206145
-2.309511518493685
-1.8673223081876726
-1.882331027791159
-1.7833049379113428
-2.1102861672434807
-4.547358743762208
-2.769273935062612
-2.4660788073233406
-1.7413515843439835
-1.841257825927285
-2.3888579164873476
-2.056316433768696
-1.912692288203774
-2.158965730037924
-2.0379716633228826
-2.1187019500550006
-1.9750391875321163
-1.7833380362460496
-2.384005451913788
-1.810998085632998
-2.0459913553342317
-1.6125154322108735
-1.911784551164123
-2.0613793859455605
-1.873657204427385
-1.8996257503129212
-2.899225723893377
-2.2266464263300714
-2.185420340030971
-1.8914411319929485
-1.7041995881621244
-1.8919621260306418
-1.9413275561436034
-2.2392323236066445
-2.001738501530395
-2.024794201603635
-1.842637676221146
-2.294972689722007
-2.3044795561675895
-1.9404240280532141
-2.3550259494410373
-1.7293950162185296
-2.169944555787839
-1.519004866765095
-2.130051165047805
-2.3436507462325884
-1.8410844357201308
-1.803373245089201
-2.152922453262299
-2.0268988801841514
-1.993606436607462
-2.6811973536266933
-2.086209952708284
-1.9737805672188165
-2.103099512405728
-1.8043928025594647
-2.411680045899616
-2.581995128034028
-2.522017102707722
-2.2847707478570425
-2.012644421747139
-1.5910493789374043
-2.1581934946153036
-1.8736951246597187
-1.8074371559981197
-2.0217145108805354
-2.1882123102015334
-1.9860289488676648
-1.7588707536198533
-2.0367725073004825
-2.0538184667021957
-2.1008372441369243
-2.003412861181724
-2.1764014045607616
-2.11666844414845
-1.698329700200312
-1.7727145550595413
-1.7575231136810097
-2.4993232858068355
-2.2314709430453923
-2.0625819294825596
-2.1100241529984842
-1.981287318210443
-2.1383104161101385
-1.9508669654778847
-1.9082438028984545
-2.2971967412573315
-1.8714019757892923
-2.0462140053096025
-1.9555580557487917
-1.7802021738665559
-2.0676133663400735
-2.253483181744958
-1.7630219987670266
-3.810781678930246
-2.130822086610058
+1.9076902939421871
+2.0695859296307817
+1.8284488023615117
+2.087377530729715
+2.0087296833839337
+1.9381062815039214
+1.9590449109179227
+1.8537280873297053
+1.733140777030525
+1.8428751574463014
+3.608984820395773
+2.0350865977302903
+1.9682865099681248
+2.1373031857487503
+2.723647795608313
+1.9150308142703982
+2.1338037289623086
+1.9903504812824842
+2.189267855650742
+2.1424508184250626
+1.9184950267311864
+1.9318064353304016
+2.0944122065569153
+2.0888306261368603
+1.990572412646708
+2.381673296662146
+2.1351446439513313
+2.645167344202378
+1.9095475999653877
+2.0221075618487707
+2.1959830379601732
+1.8108288352913997
+1.9025825972911738
+1.937315736971844
+2.303716606231353
+1.9469175387909132
+2.023654663337774
+2.341172391468572
+2.0394111505543755
+2.1617766706487394
+1.893890888430507
+2.1518741419707847
+2.002347376355717
+1.8424924764149149
+2.263452864264712
+2.0929091803053614
+1.9658098555089896
+2.1558039497609482
+1.8353497041776534
+2.2291478758487058
+2.4476101879116423
+2.5340825292577605
+1.6837436424320606
+1.9054456142554448
+2.2893858106530627
+1.9025376228418445
+2.2298426209790065
+1.9307662837355326
+1.8864255750305559
+2.094026593269264
+2.9676499792640936
+1.849024953841818
+1.990145761102567
+2.096477937414472
+2.171226525558227
+1.7278677862287104
+1.7951646364807239
+2.053868217772014
+1.6374049426182784
+1.9366421182442293
+1.7580156681122987
+2.0646844271760805
+2.1424682043676175
+2.1525101570428187
+2.358891137071942
+2.019440515509572
+1.901618313965771
+1.8130356478125593
+2.0141657234514634
+5.139077976120409
+2.925722422327345
+2.3481082696257713
+1.6345531694831104
+2.010557433460744
+2.448469511050623
+2.068205018785313
+1.8784841099710654
+2.090784785807955
+2.03560714065855
+2.227283834298111
+2.041277068190012
+1.8389798374884792
+2.181381723689309
+1.9676119776773502
+2.0648122269564966
+1.7276280873302527
+2.0357540543194172
+1.919092374154494
+2.0475746134882344
+1.9165396351135366
+3.0599067242569564
+2.2573296824016196
+2.149845658414068
+1.937182207642075
+1.8797498281573284
+2.145190989298151
+2.199852419019603
+2.208550799464938
+1.8635919091103315
+1.913948383805254
+2.086994976738677
+2.1860350119190852
+2.2138284917307365
+1.9449418421854703
+2.3515989385225726
+1.8261442729784558
+2.0773397075474884
+1.6546158082305926
+2.197374149641466
+2.1133710507210877
+1.9928096834920297
+1.9276996341230017
+2.082823762729177
+1.9753841572667874
+2.0922047080703945
+2.9097505201202014
+2.1080368092425004
+2.14728185449248
+1.969185583809893
+1.9082185177100077
+2.1493290933404237
+2.549810888830192
+2.5611451275918786
+2.3146247866415854
+2.071231635326651
+1.7419542561927643
+1.9544452005575403
+1.8334903390291024
+2.1250294054000722
+2.0300215174522407
+2.070944370318852
+1.935056964773027
+1.9435033531801533
+2.0686306639690515
+2.070833210556204
+2.050610876342862
+1.8505913829634248
+1.9977854773213095
+2.2046446511172046
+1.8718952160127031
+1.885633441553047
+1.8604041613925042
+2.660499783384358
+2.0792549894789283
+2.222475526081344
+2.027587792699614
+1.9898954280581176
+2.1318091812679807
+1.9289443073072094
+1.931382538897172
+2.3837851136927912
+1.9540033677665218
+2.0024750195304826
+1.9444549679978715
+1.7789938347962577
+2.0712689768608197
+2.1731286040778595
+1.9044086600458157
+4.015986547461121
+2.2926936320638256
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_psi_s_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_psi_s_log__.tsv
index bcda9980403..72787e6d1c2 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_psi_s_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_psi_s_log__.tsv
@@ -2,4 +2,4 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
--3.538641261098718
+-4.115896030605331
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_read_depth_s_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_read_depth_s_log__.tsv
index c96a77a10a3..ccc7fb7cf62 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_read_depth_s_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_read_depth_s_log__.tsv
@@ -2,4 +2,4 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-6.046959920320962
+6.040779074567946
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_z_su.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_z_su.tsv
index 3d86b49fe40..37c432d9947 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_z_su.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/mu_z_su.tsv
@@ -2,9 +2,9 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
--0.012115853878657032
--1.0135477723806217
-0.8780923681315713
-1.750551551168998
--0.6475298304403772
-0.13033304429958514
+-2.053186822108883
+-0.27155276025900343
+-0.33779550124699503
+0.0020682680646162436
+0.5308094576020672
+-0.7951313743446329
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_denoised_copy_ratio_t.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_denoised_copy_ratio_t.tsv
index 702e2774363..276934a687e 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_denoised_copy_ratio_t.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_denoised_copy_ratio_t.tsv
@@ -2,173 +2,173 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-0.35676082648741175
-0.34402859005051317
-0.3470647885008761
-0.404464047463586
-0.35673302506773813
-0.28819109468380133
-0.2768214842534659
-0.3218643171948218
-0.4566132252978298
-0.34157224618667303
-0.8502589001099329
-0.4037841365683954
-0.3970514119661808
-0.4050291550657542
-0.538959929522929
-0.3680256355553797
-0.4136036913002147
-0.35355656254854007
-0.417033125743629
-0.5437461540813695
-0.3391853613789528
-0.3436576302845641
-0.3410974487522541
-0.32044325331915396
-0.3847855267195515
-0.3954725677222862
-0.4953617663689878
-0.5293913477072131
-0.3359441657159409
-0.41096958399195166
-0.3003456693770497
-0.31821982450184005
-0.32751119949842367
-0.3311164031538617
-0.4111851522061698
-0.3187210967825235
-0.31466552053247376
-0.3745349907731219
-0.35456121832537324
-0.34527824983333666
-0.30568012639332565
-0.35106466542407455
-0.2918829371798508
-0.4087026734557547
-0.43783671003967223
-0.4242013452705209
-0.3567821916014614
-0.29620463553269566
-0.35486528747922036
-0.40032206424476335
-0.40987741313587356
-0.49193253332154846
-0.3552084515190098
-0.34438273668400343
-0.39428564809598377
-0.30812991584767657
-0.4378304720583256
-0.325367247236691
-0.36585549807398976
-0.30968204514359937
-0.6391334929226637
-0.30801711176163743
-0.31246363259144044
-0.32193701245845147
-0.4191880371486062
-0.27504816822700767
-0.3088269262093584
-0.3799598873900701
-0.27526309738241816
-0.3345403430222332
-0.3054056357833949
-0.3550361630221116
-0.3997273634253811
-0.46031584942439246
-0.40628874774638196
-0.29605966015768564
-0.35580746946027597
-0.3909936246241103
-0.3600356948987248
-1.003447612661871
-0.5448200362033521
-0.4487633650164724
-0.38569477300316724
-0.3751151883236858
-0.40359589021281606
-0.3723873657574889
-0.2928966778728621
-0.35615462500873946
-0.4205334464582104
-0.4020700838199034
-0.3619025397607522
-0.34384118959570004
-0.38945076828267483
-0.3210971973367387
-0.3915215733775214
-0.3038608919358574
-0.35593459250897286
-0.38867003362936753
-0.36421168828476763
-0.30685781220158975
-0.6452793865930938
-0.33357333854743587
-0.32329243364263344
-0.4017456510726739
-0.3861266315590922
-0.3247519896949844
-0.2956805565269558
-0.40925540212850203
-0.400778343711791
-0.3531636446508765
-0.3816728837227612
-0.4697388445092258
-0.48905669025936155
-0.3574598215874083
-0.38501457274889633
-0.29457343514471507
-0.34406000532038894
-0.23974374248072616
-0.3621724595640263
-0.4151102336101641
-0.3115355509602344
-0.3199729023054563
-0.4775746669171998
-0.34904691333933996
-0.35615198487135113
-0.4713550691419516
-0.32302540400402735
-0.3799585969885941
-0.3864166580665233
-0.2925324664825991
-0.4266296048807575
-0.554965752590992
-0.43342667300469223
-0.4189919754400696
-0.37177727614934347
-0.2655273120830455
-0.348733473929505
-0.33349648657491243
-0.3368164905302528
-0.343697192814395
-0.37853417968162456
-0.3499336722235412
-0.267099305633804
-0.45633115889514014
-0.33864943478745224
-0.4073825760662966
-0.34616725711867247
-0.39836532740628827
-0.43763453594094875
-0.290547608395029
-0.33623313911479347
-0.2926574817880619
-0.45834923284415485
-0.37157886569999166
-0.4060164144072639
-0.3407431814127573
-0.3309776469248096
-0.40963457117902596
-0.3052492016232938
-0.3127583254631216
-0.42505881440779614
-0.32243617098315414
-0.32509974113587703
-0.3672111799944095
-0.28228502081883744
-0.4376204997686252
-0.42962384412595517
-0.2946300879024689
-0.7478480214622951
-0.39331656941159554
+0.2705990727306969
+0.31126506958012357
+0.2461697551374856
+0.321491075463354
+0.24840601839398205
+0.2912047347141038
+0.2555397118614057
+0.25794382810838984
+0.33695962851553335
+0.2901225341854762
+0.6294083446271215
+0.27635224333407143
+0.2877682095749016
+0.3222270810667817
+0.3555084712724123
+0.30488939582098123
+0.2982885755090191
+0.24916703323558062
+0.3498005101002937
+0.37221509581676987
+0.2801253397415932
+0.2883260623599203
+0.2800849420639678
+0.2597564096980997
+0.29008801703322146
+0.32918486432315397
+0.36614654157168164
+0.3967461532917127
+0.266639107663662
+0.3208808997450624
+0.30014354111621927
+0.2654015729796243
+0.276687589243671
+0.2773087959148437
+0.32945101071176547
+0.24256223310831074
+0.25518779577551276
+0.27620696799186273
+0.3063347717186895
+0.3288646586029316
+0.26609753871429886
+0.28652027585689993
+0.27679941128064556
+0.32143313648842536
+0.3529669154491846
+0.3352284474143061
+0.2915947117805453
+0.2474767263699245
+0.24818190769248227
+0.35152413915636727
+0.32061125730546675
+0.33812425686368053
+0.2709326414040283
+0.29934281885234104
+0.2959768095350867
+0.26259570412891803
+0.333622405326206
+0.21747783473634882
+0.26205317199956824
+0.2881952190629078
+0.4714267224987967
+0.2668749302944371
+0.27206621187614477
+0.25771253049091075
+0.30697873318790564
+0.24844247680065287
+0.27168319422171583
+0.268149783360935
+0.20569073228847198
+0.2984957398105385
+0.23083103128117363
+0.30145429138808316
+0.3325664713252511
+0.32220653405303185
+0.33788044022243696
+0.27646313955817303
+0.2500224594150817
+0.31668997706480123
+0.28350878038028116
+0.9470233050373078
+0.48547831125037055
+0.37263747788801066
+0.29453857405150624
+0.3175478437289625
+0.3318113377926021
+0.3178413435614627
+0.21277420705034392
+0.26904965027099015
+0.32911647884565315
+0.31666651493995335
+0.32439889010349243
+0.2772795646319556
+0.2957419531606033
+0.24839676190786542
+0.26219483610148137
+0.26829061705042484
+0.273047238882626
+0.3085241834698721
+0.33503796835603933
+0.22709741135479794
+0.5082235623660091
+0.27699133896890804
+0.278047755593756
+0.3089038572133171
+0.3485451758204834
+0.30025675990048784
+0.2825341011027448
+0.35320432319596096
+0.29790334194223317
+0.24158189591706553
+0.36460156258225396
+0.38648953138631265
+0.4286329488124064
+0.26163191551292886
+0.2989410672029241
+0.21792801655034957
+0.2507488664936705
+0.229283681602582
+0.28748854662713846
+0.31712774913988284
+0.24624769982529815
+0.27529652941463173
+0.34159476307944864
+0.2855263363129453
+0.3041593549428853
+0.4710033193628414
+0.2827995443535734
+0.331648638359557
+0.3032092964101451
+0.25670790362389584
+0.28100980551931576
+0.39038257465912746
+0.37264588195126447
+0.38744890228767903
+0.29026110065450117
+0.24291467701039615
+0.2906127525123466
+0.23557634427299473
+0.32871953244459856
+0.29851864822644264
+0.2921502390292671
+0.2643240052044306
+0.25973006587944575
+0.35716966405447775
+0.2690896237272922
+0.3101609100198319
+0.25210101772252
+0.31555800089777025
+0.33767907177649886
+0.24696819846452356
+0.24648591139891013
+0.2540669176573066
+0.4052443013522526
+0.2742808588564273
+0.3344883982781669
+0.2787913700146262
+0.2746187280605595
+0.3090697830503116
+0.25334489152548734
+0.25184011088245944
+0.34353619482192504
+0.2610800052925577
+0.22839912434367227
+0.23620921717484936
+0.23473000517846238
+0.3393417023786324
+0.3356630037770536
+0.2583396418721628
+0.6325770467065485
+0.36243332284044205
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_psi_s_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_psi_s_log__.tsv
index 0a3c37391d5..1cad5dc6bcf 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_psi_s_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_psi_s_log__.tsv
@@ -2,4 +2,4 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-0.13269916055190087
+0.15238544640390225
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_read_depth_s_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_read_depth_s_log__.tsv
index 609a876003f..fc490df2b21 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_read_depth_s_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_read_depth_s_log__.tsv
@@ -2,4 +2,4 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-0.00886525733916229
+0.007974686289217315
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_z_su.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_z_su.tsv
index 9adbd00547b..c765eb30454 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_z_su.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/SAMPLE_0/std_z_su.tsv
@@ -2,9 +2,9 @@
@CO dtype:float64
@RG ID:GATKCopyNumber SM:SAMPLE_000
VALUE_0
-0.08666609905783836
-0.019104038538349806
-0.019352207566272466
-0.024772482294391822
-0.0199147773041517
-0.029881461734426608
+0.016402742030811372
+0.014263295035367513
+0.023064620931183673
+0.06592055351603773
+0.01586964248482667
+0.015457815474999846
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/gcnvkernel_version.json b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/gcnvkernel_version.json
index ee711a11f0d..50d31529539 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/gcnvkernel_version.json
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-calls/gcnvkernel_version.json
@@ -1,3 +1,3 @@
{
- "version": "0.8"
+ "version": "0.9"
}
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/gcnvkernel_version.json b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/gcnvkernel_version.json
index ee711a11f0d..50d31529539 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/gcnvkernel_version.json
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/gcnvkernel_version.json
@@ -1,3 +1,3 @@
{
- "version": "0.8"
+ "version": "0.9"
}
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/log_q_tau_tk.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/log_q_tau_tk.tsv
index 92faf78e653..0756b14aa1a 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/log_q_tau_tk.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/log_q_tau_tk.tsv
@@ -1,173 +1,173 @@
@CO shape:(170, 2)
@CO dtype:float64
VALUE_0 VALUE_1
--9.313222415485711e-11 -23.097000166001383
--9.313222415485711e-11 -23.097000166052595
--9.313222415485711e-11 -23.097000160963137
--9.313222415485711e-11 -23.097000428866302
--0.0005098506463667163 -7.581647639882051
--6.457488015809698e-06 -11.950273395233049
--0.0007316526827102487 -7.220570437808737
--5.3404393589029375e-06 -12.140205302403109
--1.8355094547783946e-05 -10.905612567747532
--0.00030351743841222634 -8.100223246265807
--8.874950082932154e-05 -9.329737128513111
--0.00014621621019650366 -8.830497247161098
--0.00022113797789918843 -8.416834283814076
--0.000272022189643395 -8.209762923449361
--0.0002982189970393567 -8.117831557755276
--0.00035376024641137205 -7.9470680191806276
--0.00037050422601914157 -7.900830953380472
--0.0004946810970354321 -7.611844581804981
--0.0009389611239424833 -6.9712059250125495
--0.002131371356011602 -6.152055173708385
--0.003812896220307449 -5.571272058168099
--0.019040882328376252 -3.9706722446590605
--0.07987831027955472 -2.5669242371491183
--2.8104838988720227 -0.06206251304331489
--6.371716321357171 -0.0017106855189274461
--6.234490649471628 -0.001962552152999897
--8.242548304939511 -0.00026324729453780504
--5.4976344494620415 -0.00410486378372199
--5.426872977935238 -0.004406517746340155
--0.01002182655940237 -4.6079966369883865
--0.0033488038150431554 -5.70082600168449
--0.0013687954955753368 -6.59450844584951
--0.00134369828924491 -6.61300132317786
--0.00013684479293396556 -8.896731594342942
--0.0003274630192600103 -8.024299154565657
--0.0001239984324645227 -8.995303632449993
--0.00017564098585476362 -8.647156318604436
--0.00023103734678031618 -8.373046702601421
--0.0002731038841221056 -8.20579485612574
--0.0002711243446222311 -8.21306856516213
--0.0002790128580662521 -8.184392194121656
--0.00029759867546741425 -8.11991350133498
--0.0003289837906014226 -8.01966656443378
--0.0003173308690033183 -8.055724238849436
--0.0003750504096738938 -7.88863763463569
--0.0004525912616781813 -7.700747418946821
--0.0003697854762149677 -7.902772401495417
--0.00039776216223180727 -7.829855188143611
--0.0008082965274312515 -7.120985698396291
--7.163591804582037e-06 -11.846502634575032
--0.0001094735534429847 -9.119882295105329
--0.00017343168016686894 -8.659813525025527
--0.0002321034183424553 -8.36844356635092
--0.0002875217262497398 -8.154355888438873
--0.0003449620123829322 -7.972248732067052
--0.0002639455970475657 -8.239899517691569
--0.00033693134488410603 -7.995799833652691
--0.0003805347725939767 -7.87412325957907
--0.0005298294534094583 -7.54322029225222
--0.0007645602825134268 -7.176591939280853
--0.0012049805028286897 -6.7218943221527105
--0.002034167453702107 -6.198685568775535
--0.004005915950393124 -5.521985312226641
--0.013211094647170518 -4.333296573966276
--0.05572840857555733 -2.915000039105821
--1.7272444961639701 -0.19573948572367106
--5.960661487746058 -0.0025815352527924773
--1.418375667315289 -0.2772130113752697
--9.528983158091364e-11 -23.074086712303483
--0.0008027925192143903 -7.127815628855798
--0.0021906483539849697 -6.12465285113768
--1.583316255882039e-10 -22.566496244177664
--0.0008980754136189151 -7.015705517763543
--7.804271687228415e-07 -14.063424810606147
--0.00045118512476421957 -7.70385841052193
--8.275629111431648e-07 -14.004781128618468
--0.07607995025589015 -2.6137693280601724
--0.5473580856098877 -0.8638787478313273
--5.551082972421855 -0.003890808903046661
--9.519837612499652 -7.338427221598165e-05
--11.647797845684035 -8.738312389067193e-06
--14.528468349378803 -4.90192271385137e-07
--12.056556006897472 -5.8063808390795835e-06
--6.865994582631404 -0.001043188872530798
--6.484345440039179 -0.001528327354898329
--6.457855301289336 -0.0015693861696216005
--9.562361568097048 -7.03289945729324e-05
--7.2607730999774445 -0.0007028115870686968
--7.086647462982928 -0.0008365458567960449
--7.233920863713012 -0.0007219462178756353
--8.699480357778453 -0.00016668628991339807
--5.268629377826836 -0.005163975754764516
--4.812154103774813 -0.00816355860686313
--1.2209695992672163 -0.349478118612349
--0.7748049366959329 -0.6176569541826005
--0.42774341974344965 -1.0554915315331368
--0.14659526194180428 -1.9924821771737065
--0.11130311400389215 -2.250633470267956
--0.09390278609996905 -2.4120792367741415
--0.0857691989416679 -2.4986734270801336
--0.08235512888812874 -2.537609524496991
--0.08110638336965531 -2.552272724247453
--9.313222415485711e-11 -23.097000367651468
--5.129039617524089e-06 -12.180594693434317
--9.313222415485711e-11 -23.09700035069096
--9.78062325740492e-07 -13.837692909713196
--0.0010599039366044338 -6.850106905974499
--3.254062148093526 -0.03938242778977685
--5.300609193539934 -0.005001038358264653
--5.195268297436974 -0.005558146935942032
--0.010197568610397778 -4.590700410009549
--0.22081545053204538 -1.6188048976353555
--0.0003069225875234616 -8.089068457415971
--3.0325792373608884e-05 -10.403527137070926
--3.761169372312745e-05 -10.18821435806231
--8.136990038781766e-05 -9.416545812231861
--6.054561191293217e-08 -16.61986867613431
--0.0007315118573726909 -7.220762861591745
--0.001387700351318355 -6.58080109535661
--1.844602318112898e-07 -15.50583209467419
--0.00047459576800962244 -7.653284419469466
--4.061673839245161e-05 -10.111350609102317
--9.961342241820992e-05 -9.214263445632964
--0.00044764896585741676 -7.711725007206962
--0.00046576653025504067 -7.672058931646477
--0.015685261591767863 -4.162866139322184
--0.0009549180176692262 -6.954362487556239
--0.003412762747151632 -5.6819390220210595
--0.025781920499282074 -3.6709450528016925
--0.5738856581510796 -0.8285827023562873
--9.313222415485711e-11 -23.097000465277006
--0.0004342885429332033 -7.74201853569479
--4.847236117783149e-05 -9.934541031002048
--5.7355824858940085e-05 -9.766264830422731
--0.0009001033163573702 -7.013451023156293
--9.313222415485711e-11 -23.097000166516363
--9.313222415485711e-11 -23.09700025183503
--1.4413693960602103e-08 -18.05508675296669
--0.00024135413620002266 -8.3293659328401
--9.313222415485711e-11 -23.096998995714003
--0.0012920331104457894 -6.652184193674961
--9.824813185232983e-11 -23.043316325306645
--0.0002703324872500579 -8.21599308555929
--9.313222415485711e-11 -23.096996814893863
--9.313222415485711e-11 -23.09699989642252
--0.0004447690580382524 -7.718177757527272
--3.0726816296899884e-07 -14.995545137213904
--8.821203155151558e-07 -13.940937802646815
--0.00015431487578426717 -8.776592551441663
--9.313222415485711e-11 -23.096999731864887
--3.6685723941998205e-07 -14.818293244985929
--9.313222415485711e-11 -23.096999901126843
--9.313222415485711e-11 -23.097000338881738
--0.001054584928357638 -6.855135268404066
--7.794733120070063e-08 -16.367232685641707
--3.101095769064699e-09 -19.591509049349778
--0.000217800925874867 -8.432037994996142
--9.466699646409893e-11 -23.080475145274544
--0.00037162637520038455 -7.8978073836333
--9.330275441143954e-11 -23.09517787334063
--1.5822521232111697e-07 -15.659246516869326
--7.008633912292117e-05 -9.565817702737778
--7.036824939965491e-07 -14.166938930918326
--0.00013269917013936094 -8.92749221901212
--0.0011768094302827548 -6.7455367222364915
--0.00012900814040350816 -8.955699555085205
--3.943321780219833e-10 -21.653826796016787
--9.313222415485711e-11 -23.09687322116433
--0.0007759442750869261 -7.161817797876291
--9.313222415485711e-11 -23.097000162153737
+1.2751249228764086e-10 -25.869583314438515
+1.2751249228764086e-10 -25.86958331968553
+1.2751249228764086e-10 -25.86958322478665
+1.2751249228764086e-10 -25.869587522527272
+-0.0005098325692569155 -7.581682825544091
+-6.457268415035966e-06 -11.950286752912493
+-0.0007316493830229004 -7.220574763788338
+-5.3402220434122795e-06 -12.14022102567656
+-1.835408753387554e-05 -10.905660166266198
+-0.000303518396117594 -8.100219652090445
+-8.874655987207425e-05 -9.32976876280535
+-0.00014621344175897724 -8.83051526777507
+-0.00022113469257185327 -8.416848535799678
+-0.0002720184334810777 -8.209776239777586
+-0.0002982147139893393 -8.117845470714588
+-0.0003537551030664083 -7.947082178889844
+-0.00037049735441858374 -7.900849136785219
+-0.0004946685288397902 -7.611869712866595
+-0.0009389346269596077 -6.971233989518316
+-0.0021313050866809255 -6.15208617079077
+-0.003812778672970157 -5.571302793743919
+-0.01904033222889506 -3.970700854272298
+-0.07987621665907184 -2.566949413004938
+-2.810100648811629 -0.06208705696936387
+-6.3638534162330425 -0.0017242010124537501
+-6.224587134049416 -0.0019821041173095732
+-8.238322971551375 -0.0002643619693377389
+-5.474967740106805 -0.00419916777242648
+-5.407255320857472 -0.004494013121055126
+-0.010023347261040072 -4.607845655242552
+-0.003349284165177933 -5.700682772813398
+-0.0013689604641816727 -6.594387917126954
+-0.001343826767706119 -6.61290567712612
+-0.0001368456663340483 -8.896724237905557
+-0.0003274622656968623 -8.024301048185189
+-0.00012399584528850202 -8.995323420495964
+-0.00017563862582043726 -8.64716899493878
+-0.0002310341687316669 -8.37305987956743
+-0.00027310069473846784 -8.205806044470537
+-0.00027112127395618465 -8.213079397585432
+-0.0002790098330141627 -8.184402556699132
+-0.00029759574185268253 -8.119922909501236
+-0.00032898097687845404 -8.019674710570824
+-0.0003173283604381377 -8.05573172261243
+-0.00037504814415829365 -7.88864331840161
+-0.000452588453865152 -7.700753326790055
+-0.00036978058085363765 -7.90278527686205
+-0.00039775766786193936 -7.829866149777475
+-0.000808291263007474 -7.120992043742005
+-7.160642269196655e-06 -11.846895841178645
+-0.00010946867553669194 -9.11992563371661
+-0.00017342676880234 -8.659841072821777
+-0.0002321000935042256 -8.368457315158837
+-0.00028751969631119763 -8.154362483774404
+-0.00034496178706373295 -7.972248998504997
+-0.00026395431419041533 -8.239865991191406
+-0.00033695005072554646 -7.995743930527681
+-0.0003805890776513822 -7.873980239340738
+-0.0005299367651259274 -7.543017574659269
+-0.0007647592386855341 -7.176331675158233
+-0.0012053641751710513 -6.7215760485024845
+-0.002034901174726187 -6.198325236511284
+-0.004007504840937594 -5.521589515418745
+-0.013216862881122024 -4.332862916428582
+-0.05575377945687921 -2.914557448452038
+-1.7293742141266186 -0.19527961493034593
+-5.980721868478928 -0.0025301995946313918
+-1.4371772488578756 -0.27128063631461075
+1.253531085047453e-10 -25.552948742698888
+-0.0008028029631013758 -7.127802458557007
+-0.002190657941185511 -6.124648418589055
+6.236993427315488e-11 -23.368528180857545
+-0.0008980283089992743 -7.015757797678286
+-7.799128116186571e-07 -14.063913140168914
+-0.0004511148386111085 -7.704013873136082
+-8.273216230508246e-07 -14.004911568486191
+-0.07608072855051025 -2.6137594805483007
+-0.5473592385944049 -0.8638771652251216
+-5.5509485905518785 -0.0038913326772018622
+-9.519520340319499 -7.34074261824004e-05
+-11.647827684454276 -8.737918341947566e-06
+-14.529867702742758 -4.893734986771291e-07
+-12.05669135382964 -5.80546164325729e-06
+-6.865987772864012 -0.0010431958466540878
+-6.484333432323714 -0.0015283455872217712
+-6.4578752180536245 -0.0015693547547757194
+-9.562259718012822 -7.033602484780286e-05
+-7.26065423716716 -0.0007028950261615051
+-7.0865124902317165 -0.0008366586891170929
+-7.233768508374481 -0.0007220561249114486
+-8.699295696000647 -0.0001667169425345733
+-5.268546885868381 -0.005164402726709429
+-4.8120996242643335 -0.008164005051699081
+-1.2211289168630026 -0.34941147907548786
+-0.7749528060552658 -0.6175306054197223
+-0.4278826019976933 -1.0552308410281421
+-0.1466205126179822 -1.9923222604216462
+-0.11132077511224168 -2.2504834725745506
+-0.09391674437259802 -2.4119374702604293
+-0.08578130971802025 -2.498538202328578
+-0.08236629196216533 -2.5374794889128656
+-0.081116971524255 -2.5521474070719568
+1.2751249228764086e-10 -25.869586543958018
+-5.136137303026421e-06 -12.17918587141472
+1.2751249228764086e-10 -25.86958630310926
+-9.799135216120297e-07 -13.835665964285305
+-0.0010596424873707323 -6.850353352382206
+-3.2480118898330717 -0.03962622200703001
+-5.251115302328984 -0.00525545470020316
+-5.126834241687191 -0.00595300444264449
+-0.010204928294442932 -4.589982621087674
+-0.2208378880419034 -1.6187140962680018
+-0.00031873576252318295 -8.051307074366477
+-3.040086773203942e-05 -10.401050221280808
+-3.760934551972619e-05 -10.188273246921614
+-8.137015216753415e-05 -9.416541079237957
+-6.032357553192832e-08 -16.6213346140552
+-0.0007315127617965682 -7.220761443320822
+-0.0013876998847022841 -6.580801335224843
+-1.842326681849579e-07 -15.506343020559388
+-0.0004745978932048728 -7.653279661600486
+-4.061604971168084e-05 -10.1113642813564
+-9.961190639935212e-05 -9.214277325137296
+-0.0004476489044262868 -7.711724846457619
+-0.0004657498083364202 -7.672094539478206
+-0.01568447640349747 -4.162915799423139
+-0.0009543790191161746 -6.954926682522086
+-0.0034109063952564313 -5.682482147218125
+-0.025767069370408593 -3.671513848666593
+-0.5734485788616481 -0.8291468475921676
+1.2751249228764086e-10 -25.869588105311255
+-0.00043422749053829426 -7.742158788208813
+-4.8468263243958496e-05 -9.934622823589734
+-5.735186251349661e-05 -9.766331589752166
+-0.0009000389904560508 -7.013522310387293
+1.2751249228764086e-10 -25.869583327160303
+1.2751249228764086e-10 -25.869584695070646
+-1.422067003869977e-08 -18.059238150202393
+-0.0002419028656172638 -8.327094691798997
+1.2751249228764086e-10 -25.869564596995254
+-0.0012919537730138968 -6.652245457743921
+1.2239658459016814e-10 -25.23766195583235
+-0.0002080617246462713 -8.477779157371332
+1.2751249228764086e-10 -25.86952946069207
+1.2751249228764086e-10 -25.86957900435307
+-0.0004447531644075712 -7.71821318492832
+-3.069717037867406e-07 -14.996076103661743
+-8.550904375215669e-07 -13.971903098109497
+-0.00015506382946866055 -8.771750393795038
+1.2751249228764086e-10 -25.869576371460735
+-3.6666158993164616e-07 -14.818463078969772
+1.2751249228764086e-10 -25.86957907936496
+1.2751249228764086e-10 -25.869586083721394
+-0.001054383018537397 -6.855326518329722
+-7.772668715039155e-08 -16.368353151180436
+-2.8803394752082206e-09 -19.620106335769012
+-0.00021778871748885144 -8.432093431169864
+1.2597771997839905e-10 -25.633413017707156
+-0.0003716518275159809 -7.897738550789723
+1.2734196203105844e-10 -25.840821513162556
+-1.5799879078121022e-07 -15.659835058998237
+-7.008505236034406e-05 -9.565834159835104
+-7.034393744803069e-07 -14.167094957198131
+-0.00013277718431819907 -8.92690352418895
+-0.0011762612843955738 -6.746002233144952
+-5.742017236910619e-05 -9.765141269244648
+-2.0992025612008613e-10 -21.79255228942064
+1.2751249228764086e-10 -25.86755425146118
+-0.0007759459651548528 -7.161815448738218
+1.2751249228764086e-10 -25.869583254817012
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_W_tu.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_W_tu.tsv
index e00baf31de2..31b343fc1d4 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_W_tu.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_W_tu.tsv
@@ -1,173 +1,173 @@
@CO shape:(170, 6)
@CO dtype:float64
VALUE_0 VALUE_1 VALUE_2 VALUE_3 VALUE_4 VALUE_5
-0.026753700256980092 -0.4006105617803221 1.5199961373482915 -0.779905267815817 -0.5153844356567848 -0.9451118147201304
-0.015150016011497324 -1.8268418099390387 0.07982225054380333 -0.045688588920964224 1.2604554764051241 0.30051602599626903
-0.027967928165796515 -2.090194777388886 -0.9994619077127309 0.28307251584941956 2.0761753596131234 -0.4084505317477433
--0.03959736621107168 0.9912404466926816 -1.5069239392940539 -1.0684408035600959 0.08540542245674006 0.23667850300092294
--0.024994664209567526 -1.0327974353927525 0.5272267793742328 -0.759711638864002 0.2854513598629829 0.48249713225011875
-0.003910301242450976 -1.0449264516399535 -0.31349582903932816 -0.41215350825330743 0.6758833658908996 -0.3041000101356333
--0.011371707224425851 0.19067369755332939 0.7028809078994872 -1.0257124771944075 -0.757460915369234 0.28005807304290337
-0.025732658322893218 -1.250548241990817 0.3745099593042352 -0.43744338258856513 0.18108572326610067 -0.9002777748059813
-0.010668761832253945 -1.1726824857719576 0.9355728100051601 -0.49657824304655707 0.1709968645499755 -0.27993638428803586
--0.02340506179498668 -1.4370320290325507 -0.5474824131782388 -0.3337691020901357 0.6050842677595059 -0.11311327242848151
-0.008534194326201741 0.4360517676463493 -1.842313312762507 -1.328827716830119 -0.3058771177949731 0.7126429505875407
-0.02596388629114279 -0.6165054392223774 -0.2178391169141423 -0.522843859555233 1.424985112095589 0.6589892184304249
-0.01740342065753548 -0.8695364888676202 0.7854800849216205 -0.6872630132393175 0.03870058911834731 -0.029979982707752924
-0.023195744183327368 0.33640319262728596 -0.6914064150476807 -0.954287835876579 0.2342972824233673 0.7568859112803732
-0.012788180340664108 1.497768251140486 -0.16592216929456166 -1.319894633466204 -0.2936157428851247 -0.12751290044539196
-0.0016152572332325688 -1.3936254575454115 1.9708001381198899 -0.29218382781305 1.1097719274794189 0.3062027150841188
--0.024285006180545864 0.7345094880043173 -0.40306489423275565 -1.0913004447767836 -0.19264064403633924 0.6859732218513295
-0.005802861672393502 0.027891101883611567 -0.02801789551898314 -0.8001067242518007 -0.7749083498776281 -0.9707607674195272
--0.028691579668699455 -0.554778119223812 -0.7320332366135228 -0.4923207041837447 0.7474866082525973 -0.13518802873691452
--0.02920003209154516 -0.22503961062872926 -1.0037913596380441 -0.47972978792798976 1.231960262207522 0.7958754058909727
-0.01583200401011452 -1.03519342135131 2.672308698777601 -0.8882094520778225 0.0024071762380124553 0.08954673157759245
-0.04612055823130312 -1.2127337548504813 0.3943802293806212 -0.03976689415542913 2.150734077553866 0.09306724051559292
-0.018601928295253208 -0.47605218153700646 0.22207820487291008 -0.6578313280492257 0.06076685843103863 -0.4154950563953184
--0.023368187157214677 0.3153034878249749 -0.0855097655153734 -0.9084344734214321 0.3013222082654958 0.5445604272980298
-0.0012223924027207134 -0.14558909450361535 0.42506055280530075 -0.8169492007995112 -0.3212817252620202 -1.0057199632482832
--0.003949059302756057 0.3790709554296831 0.2703255100390743 -0.9635656266896477 -0.08808403462307794 0.07917288793015746
--0.024297334158769158 0.6761984419189312 -0.3668666898006106 -0.9388432425166415 -0.031761633621767135 -0.2673836224329936
--0.044351684563040776 1.3823187321053156 -0.021955132536272487 -1.2602629039391726 -0.11897429042852216 -1.1136764992589008
-0.04654162276625952 -0.545864350757026 -0.693544033159301 -0.4998940129691221 1.236472138999917 0.6447387989254104
--0.0044663124907237135 -0.42918120885652256 0.722749828700787 -0.749776827210772 -0.10885201528305946 0.6790158364399139
--0.01775704108719317 -0.27675426038379575 -0.6549102651017946 -0.7931925402700282 -0.29093458631050856 -0.5716896154383041
-0.017724462287051695 -1.2956439401023994 -0.1156502266519123 -0.37137946012476925 0.5912834563834996 0.46182995461251697
-4.930343735844774e-05 -1.2516056415692822 0.29362202662608833 -0.05713265891171447 1.724082052920697 -1.1243940607379144
--0.02045836652833092 -0.7092473129664872 -0.06861927179921826 -0.2966166053267137 1.186573451482453 -0.12810628571487498
--0.004872593715880992 0.18056477419905495 -1.1679109933312084 -0.6897204134971244 0.629230179437354 0.5080861830407665
-0.02254919561463852 -1.00439536618399 -0.5947868420463689 -0.2967618696579276 0.2225941363860847 -0.08914578389311877
-0.008701706147245924 -0.6671251254265262 0.4400306084983819 -0.210730230715777 0.815659201645687 -0.541545899463841
--0.021462628303898064 -0.7181200867768908 0.14620721423673003 -0.6133197800312418 0.9552974757075766 0.03507846336625482
-0.04385400668150693 -0.8096668205956216 0.14154872705099686 -0.27906676861651775 1.6595555480329383 -0.29358845408273077
-0.022239688884997694 -0.040668173421865864 1.636499345367346 -0.6671429412342347 1.1298680353107138 -0.4052894026274609
-0.010540474474311303 0.23484678604451498 -0.18478039642910907 -1.0547597981125243 -0.37927270034016364 1.527606128653393
--0.0012162339898316218 0.2682754374098282 -0.7052275151362731 -0.6264319175641397 0.2380638797177147 0.04249101721098223
-0.012305302417607602 -1.1001309442868 0.1209124119401737 -0.3281283217644202 0.5793448973408725 -0.6796758568833985
-0.0011894689850160392 -1.4401337044223097 1.7774127396842168 -0.327327244391132 0.5008361581178077 1.2774652448580817
--0.05179387455067763 0.13966453857248012 -0.5828471601930424 -0.9613968674448705 -1.494996202614827 -0.2659062728821351
-0.013355831942981051 -1.3138389843779945 0.19547580361731637 -0.7175747790021143 -1.4671665031239585 0.22366145456450431
--0.012096915344310729 0.2377247873205017 -0.2542246037726871 -0.5377267970706773 1.4333591752757875 0.32511412691303293
-0.0010390321323940008 0.2885315383481183 0.7667911478846198 -0.6920779041979401 0.9901280631224597 0.005484387682308609
--0.016793263833979485 -0.6046996440676736 0.12104885189629483 -0.5229209753527183 0.019635495472152147 -0.28681858226342
-0.008247051127706866 -0.4637792013170968 -0.5330384390333334 -0.6917557455554554 -0.4869796991137779 0.5563667064191263
-0.022160844811041188 -0.890056058946846 -1.6622426920136149 -0.16710998765149387 1.3774977571768163 -0.7962383823446929
--0.03285717119375604 1.0274396389466434 1.0382112328846786 -1.4256254372298685 -0.8697540647094422 -0.28366076374152926
-0.009503072609475484 -0.28838005303366615 0.017210288482122072 -0.868857654630679 -0.5586540942450632 0.5771571897739561
-0.0015856462871335368 -1.7832603713221296 -0.9650289194600377 -0.28955421763337624 -0.08610406776716525 0.9850463404457542
-0.007922619320809622 0.0034864529287420972 -0.41365828712144653 -0.4177480428725776 1.7408831547279848 0.5433682925980342
-0.03795151623755009 -0.9042568814483353 0.010271172035055254 -0.2877425858712864 0.5694941786002957 -0.7247880380793905
--0.02557370214286206 -0.32505584635655094 2.1755648697369048 -0.6044408794120602 1.0957981379107469 0.3447115203121149
--0.008829651326455426 -1.286820736555247 0.7350717062556769 -0.4944855278582051 0.057451434457274575 0.27436649272570357
--0.004290739752119065 -1.046590801468024 -1.3087654325151465 -0.33683700168152353 -0.3125966171113399 0.24982614313794363
--0.02131805503272101 -0.7706043841553267 0.24370064673900885 -0.664695168643017 -0.15588463700673397 -0.303907200912855
--0.01554526959734061 1.245392015907558 -0.19239625261355042 -0.9781393020159416 1.1643108438048806 -0.810153763842363
-0.005507376504340596 0.535568309373293 -0.12952539784948447 -0.8958962645149026 -0.24300134336961945 -0.5600810412415683
-0.034101813206498875 -0.6968825390182346 0.7462628513845975 -0.6690385283434362 0.016108312366978083 -0.8069372931887059
-0.010452369472329867 0.5797403531435787 0.6495289215050596 -0.9349355081901618 0.7776040024250966 0.5478156325994848
-0.026059412418358175 -0.49393881943135004 0.38359037934716556 -0.4825212809947784 0.9694701262578805 0.07193328838903215
-0.044971125899512646 0.5071507786841045 0.5996311500399403 -0.8268694322635529 -0.027224103824168778 0.03624176274519619
-0.01955947177433326 -0.6398847145720701 0.08217616158025426 -0.48317902476366736 0.29418088963262484 0.3323217422052211
-0.02542006436818302 0.36980529063355105 -0.5251023447702432 -1.0451250983020053 -0.5076665733065697 0.6269609144076002
--0.029642767190799165 -0.8505226902857906 -0.7508454402870723 -0.29797162063847643 0.289981811663562 -0.24119698525224703
--0.05881143099768337 -0.33592222821305534 0.6574142759861997 -0.6172486269726275 0.8423620692155073 -0.20729128089960286
--0.026078256613598607 -1.4775892030009523 0.6459202970256052 -0.4194063350282252 -0.9037775199773072 -0.7956205332112513
-0.034718643763110776 0.18774829595543024 -1.2025875405725033 -0.9088029149692111 -0.902709655941707 -0.21320804772690152
-0.004423147111860051 0.3533395924372084 -1.1868785821907124 -0.7087869855917958 0.7977956682386174 -0.05785386483587305
--0.0032020280644774433 -1.9952375978200119 1.30866577575199 -0.510881443594158 0.756387171206066 0.2567453087355629
--0.011522930410230316 0.6737898577797283 -0.6828644016456495 -0.9592410038978455 0.5724786079464227 0.22071866736756934
--0.004512560335619483 -0.07806774327317716 0.999961064308756 -1.0281223185803914 -0.7496759311557629 0.06447932367166165
-0.03737907978298213 0.0910028879177456 -0.07856963387668618 -0.6912292782882816 0.17886382992979266 0.13278294759087614
-0.025980271582523966 -0.6765942905060939 -0.15901423538248546 -0.42371696606540016 0.5168824439102908 -0.20262750832152193
--0.03409604560422914 -1.8272377823115848 0.1583948023750323 -0.4281403172266551 0.030971553144649482 -0.335381474530645
--0.03911882084943501 1.5082656999498443 -1.0538086026725417 -1.1942193908561238 1.304630785588326 0.06405100685886278
--0.006957456295157331 0.9438222993247025 -1.1052026488761377 -1.1956144027130595 -0.20170273149351534 0.15222721285252197
-0.0024526286649378575 -0.08856169938940943 -0.7305420375029981 -0.7743905743917773 -0.6300236912694905 -1.0965264156344436
-0.021896620759697845 -1.5368062898006725 1.4964097140239603 -0.8937818871169649 -2.097422240134917 0.13152320077243757
-0.028252227885197486 -0.22924574451345767 0.9852041972436226 -0.8866333498803479 0.2709231170045204 -0.5380176013835762
--0.009340784108577948 0.19947202229088154 -0.6459191046910253 -0.6639258181700095 0.6044654740521138 -1.087369589607723
--0.03789582776214342 -0.27057964954183616 0.4911739570693723 -0.7163324951505652 0.7927455618731979 -0.4806681467943822
-0.010193311765506405 -0.08195143722437945 -0.2931976551221875 -0.8709278578481352 -0.42752074738434565 0.16795584599178073
--0.003294443063408792 -0.7420629530802351 -0.7492166515368013 -0.5184429546726429 -0.21147945147821676 0.34612785281987185
-0.007392963829829754 -0.6708939366047579 0.06874476950665023 -0.7752305052580146 -0.8580970520963426 0.16024004361932248
--0.010088316475904191 0.25221078729418983 -0.8591011059723092 -0.8308062606406001 0.06303862757629865 -0.12215549642156645
--0.0014011437725162021 -0.4309710911351091 -0.30842114274711185 -0.5169249258035963 0.9100953183606164 -0.11426230669430726
--0.06125173077393254 -1.3438992732442436 -0.10878372348051077 -0.028550676091180567 0.8420219510285183 -0.047983206060190554
--0.023043985025317605 -0.6753144448950118 -0.06524305887478678 -0.4921536023714202 1.8178099529975922 0.6095320504241295
-0.006625718056898442 0.7107898061873362 0.4793418773549776 -1.5278582393304743 -2.4423895556888917 -0.07988401478325205
--0.014279854612245355 -0.13928583046706267 -1.2974022922640864 -0.7528600020434162 -0.8913606488142597 -0.574622938069377
--0.004002301480093295 0.07855413510132404 -0.2528201218743838 -0.8614647347902096 -1.2498459163252458 -1.2434321514558364
--0.028710786590508776 0.43936650901875546 -0.5879135682027202 -0.7359026604238127 0.27726558537000656 0.0253481940240642
-0.009984647299747908 -0.7996992823882692 -2.007163801863585 -0.3615453348789573 0.46696593570459316 0.2535579094319536
--0.029273661723227155 -1.0382851085131748 0.8397783127251761 -0.35079791669777516 0.8567879406948136 -0.2592520149816342
--0.006390024416091591 -0.17384865114936238 -0.3276574743379218 -0.755952822587785 -0.519017717559351 0.33236582432209955
--0.06416363759535634 1.8424109374487012 -0.19644160418704038 -1.548513044348537 -1.1864253633731763 -0.25766613749226436
--0.0058218018784100805 0.2090397521855066 -0.7492068041812717 -0.6595484416576376 0.40860655652174865 -0.30705689288567745
--0.02216554189084169 -0.24441608348747199 -0.6374800064394317 -0.41009024774226743 0.6384349911491862 -0.29210333330227123
--0.009587017763373597 0.5943991255719202 -1.5027438795738088 -1.0437510014813818 -0.6395407280466187 -0.31918036363683505
--0.008236720004600948 -0.5975408045209218 3.7887104132239475 -0.6995559758661818 -0.23118622374747316 -0.25186149073935965
--0.04649172592010069 0.5175012090289105 1.1086186064232049 -0.8948161092606062 0.22770670189982195 -0.24190381071352748
-0.007784980018597887 0.10911091168609933 -0.00800067473904541 -0.6138208972895922 0.8575504993744705 -0.023605198021705725
--0.034437679761443483 -0.4181642544811655 -0.7664479503190501 -0.6474826799049069 0.2972139376116613 -0.9248431299345121
--0.004706553015804478 -1.1952637153032695 -1.2292287493846885 -0.425688495611988 0.21159687808321198 0.7353168781030185
--0.03315556396389777 -0.7010882230811443 0.5207913991984094 -0.7276040261139717 0.09965498102872712 0.12481769684735389
--0.0252125810509109 0.24465397951882156 -0.2933506875368588 -0.5323397467540225 1.8061362642079017 -0.34725905004724994
--0.05574612578447523 -1.015069061009826 0.700101246718754 -0.6888523672653538 0.2290945404636127 0.5082988143651793
--0.03599864519198463 -0.36068686165521485 -1.036533373857442 -0.8211052382297988 -0.1215316012140086 0.36135384408429155
-0.0033665865292005154 0.4619488448948921 0.7560598620033602 -1.0469413612807223 -0.18479550047327892 -0.02045435287066791
-0.0009691638415316943 -0.06222306671962504 -0.08861761516179904 -0.7590472167701725 0.515824041108507 -0.2857550992014572
-0.020456872398204425 -1.697564293359001 0.34701389634684915 -0.2436586909113275 0.3118702620320515 0.9527205257804913
--0.013260392980549674 -0.559499051258093 -0.38259835063634506 -0.5361674199026177 0.7364079226841777 0.9916270931766842
-0.00911411789242821 0.019524422579151223 -0.11390782101806964 -0.6882885622220307 0.16078471060873795 0.08669822570907067
-0.04094156457812076 -0.9313653173165575 -0.6237023830203858 -0.4556539120353516 0.6017825274388063 -0.2582351591110469
--0.027896813590075474 0.7867583584757945 1.4359923173563613 -1.432811000223674 -0.602188993344219 -0.1691689789446827
--0.019058491362837084 -0.04425059681655663 -0.540172718944697 -0.6258937880598937 -0.008452380663249742 -0.8542806238013886
-0.04427402479929212 0.38700286632271613 -0.035702456741276284 -0.7683267588919837 0.6969698896483144 0.6791569346121356
-0.0031936410968111013 -1.9929051014178598 1.2295418524502757 -0.19812931674687212 0.5449678349214241 -0.8455121794366236
--0.012412453855227656 -1.4223621074835877 -0.463415667296258 -0.19161285400299355 0.11561648318657605 -0.45462673397963066
--0.0036532282054161495 -0.29771254627931637 -0.8374442331747002 -0.25452215728754624 0.9952916029922431 -1.087508910400695
--0.052493285716898465 0.8009945464892924 -0.809709291345753 -0.5961820594402163 1.8444919790738517 -1.2246634748651237
-0.014668566155842867 -0.2447596221105707 -0.04170847313128007 -0.7211252751359224 0.4771917596535696 -0.12743359558881065
-0.017704505754751163 0.45491545698720603 -0.3589529514531823 -0.7594643644968736 1.7211713156641002 -0.47296122738118174
--0.005744887502124738 -2.349103488642888 0.4743698805922842 -0.2105932796322486 -0.04430000782071748 0.5225682310547644
-0.02568693412329801 -0.3221680190818847 0.2972249995176607 -0.7652621045141796 -0.47299764457903204 -0.19958530746462663
--0.0007188922297379748 -0.5900128084711409 -1.1630484075349719 -0.6703658925069972 -0.03723639792813903 -0.3391495238413743
--0.02673120414196187 0.4317909306461856 -1.1803432472064712 -0.8240187553982585 0.626064632923658 -0.42640864185268706
--0.013227391028009272 0.5265538019584988 0.04475530211989561 -1.0573054759041125 0.19888618103153582 0.10191902341847522
--0.03115476616492279 -1.089533600744733 -1.4894512434532565 -0.1053715063762271 1.691249266908882 -0.8336317276228944
--0.025827249574635027 -0.9160291037142718 1.8369523710203683 -0.8205002574608231 0.1214854056384573 -0.5775313589294423
--0.0008715346494108434 0.2587265738819841 1.8187801761196252 -1.0020348087365594 0.09993887702344467 0.04069686931236929
-0.013127781701609704 -1.0956254887151793 -1.229317015674165 -0.03046957363333546 1.8142190519305825 0.6088627791221242
-0.004528875419847335 0.1470824420128037 0.04382355734807188 -0.6382223842577358 1.0045460700230846 0.34616363775463216
--0.027049860596718045 0.6879492417169751 -0.5183564719958792 -0.790776102213431 1.4064699753123548 -0.6485177987241116
--0.04915516005877334 -1.175752550904923 0.3408457230215758 -0.10073126331796219 2.011874689899209 -0.9621394257445414
--0.02505538070305185 0.23225659828912984 -0.7019850215129749 -1.0266674587252915 -0.34463652608245293 0.7471580424124179
--0.008000137771742378 -1.2310571662547662 0.5027937278926277 -0.35911183582533185 0.11669402784180843 -1.014471755620189
-0.012885972394972656 -0.8217410501787431 -0.29859773442227194 -0.4564398117177724 0.07829578269262003 -1.1288683413450136
-0.035611165019571706 1.1487340588272004 -0.07448015492713597 -1.5024149768471753 -1.0231433067207187 -0.7910820845613443
-0.0005800817095141201 -1.1698669517097227 0.796552588255163 -0.28064658883322907 -0.8152310892007082 -0.6377426519585597
--0.019457942254010756 -0.9472980729431253 -0.681231192537987 -0.3297855728205843 -1.1220570735107938 -0.27150381162309856
--0.04464487978602369 -0.10573341918284873 -0.008131732306481143 -0.9470200586236843 -0.6938356216629911 0.07961773030384509
-0.0011705548795352939 -1.097148913179477 -1.459091142995268 -0.1420190829765706 -0.21401596899539715 -0.895577640892523
-0.0004032732999135135 0.622806202449348 -1.4120783783082635 -0.9312873983997402 0.46085756103016645 -0.532272079339961
-0.025389216978070533 -0.5977192715156262 -0.10307977009400339 -0.3295884742570383 1.5340507701629924 1.0524615807729036
-0.032480423513633 -0.32463791349966575 1.348659682214172 -0.8967336113039177 -0.29864457163972497 0.025315784024453572
-0.028932927108841044 -0.6095215559319653 0.6181312689223732 -0.6663252404759925 -0.7660353249448146 -0.18909194020415251
-0.0323991155058047 1.4522518500190131 -1.8944178748984617 -1.4900885699366848 -1.007423471230897 0.1889125673029926
--0.02614639540990353 -0.4441061742138652 0.34262636338888436 -0.6873706323361163 -0.01132909855950055 -0.7127201124090637
-0.022323693991489865 0.3631810856064047 -0.2538414507839534 -0.9845625089617736 -0.17087331327023744 -0.5031704675162457
--0.0044211096255604284 -1.1450755626526974 -1.354992202818453 -0.422870075483987 0.44712643987820005 -0.11338315793103243
-0.030136761757701212 0.03305659705237415 -0.0792668658182913 -0.9272273481922592 -0.7021561628345551 -0.2637815372887488
-0.02588257975224513 -1.29396079367642 0.9636184165919122 -0.5695331817939125 0.3682237750930406 0.552184401097385
--0.001184561796378392 -0.7661047138432957 0.7966645075968654 -0.6749190746978185 -0.1579255866323968 0.2768339914502809
--0.03947656264959251 -0.1830577754123669 -0.020725637880595404 -0.6313070845539408 1.0410782909696434 0.7347762154121182
-0.0066197970604291115 0.033363884874441446 -0.36206707336186117 -0.9586247728154921 -0.42433318093311834 0.8755257194483231
-0.008689993824283806 -0.8456900379928615 0.9085279276675827 -0.7048860569068734 0.7012103063563153 -0.4642942950794623
--0.004885082088938884 -0.9722125603302089 -0.5472758583554714 -0.1309683983363537 1.6388761349729848 0.23835259222765892
-0.028216494369000613 -1.2699239375689895 0.4683879140425819 -0.29037962983510096 1.3240545617582127 -0.26043016182750967
-0.03034881653577132 0.2789825065701919 0.005679890007351864 -0.9873452640737178 -0.6661110469094242 -0.08510543291071983
--0.01434037325251535 0.1989548961453768 1.0665071239804649 -0.9123318299700505 -0.11671599958332289 -0.5683928578384413
--0.008806549521966647 0.20316754511996943 -1.0100919693616799 -0.7444159648779674 0.10004705168704005 -0.8736317880888732
-0.03008270295496954 -0.22702766907093913 0.952822911835572 -0.7961820825472807 0.6948613084406476 0.06967573460841953
--0.016353376907481162 1.1328465914839132 -1.9609155277635324 -1.0666497590597805 0.31544310813779547 -0.26646803944366493
--0.0013676608084782242 0.7128246086342888 -0.4345101518554384 -0.9694061860132615 0.0207846963560304 -0.2509329020460124
+-1.0155035307494031 0.9691761244658629 -0.43490945911486145 0.0005797411320551968 -1.0647792555437565 1.0142310729685005
+-0.7774230083170882 -1.887718063559031 0.44121444035059565 -0.025766855934566377 -0.2711051088106013 0.8816866532268554
+-0.09949498863969976 -3.093946334691374 -0.3177243959073827 0.01594587643611437 -0.4837366069203027 0.6644187476957406
+2.0251410983073 0.04220160498956681 0.5883748301858082 -0.0008384954768386701 -0.3049478078381903 -0.3628739735555511
+-0.5881999388460519 -0.44679787030874024 0.8290053626789338 0.009192345431319488 -0.5214267084550475 0.7824971070566432
+-0.03813310596975128 -1.104330278571614 0.027023167741691174 -0.004752271983095248 -0.7369884261658728 0.5024989939142529
+-0.12070654949644175 1.101594168521662 0.7186085782687479 0.023392891282422227 -0.591910630460487 0.3856484433278572
+-0.7111392929317657 -0.6153349140093617 -0.3871107432004416 0.011055300503897459 -1.2385488763919021 0.6422457629762864
+-1.0766327833411289 -0.26936837378168144 0.08895185319915959 -0.003593486330090755 -0.8236565589235237 0.9141410133847915
+-0.17191882626568306 -1.4928128137659462 0.2765046837235094 -0.01636941922568725 -0.8478626680529991 0.23629025131330703
+1.912863455331337 -0.21420877849540843 1.228715256985055 -0.03367847653661244 -0.6973808562313821 -0.7687609493106753
+0.3662471703984293 -1.2386140953454126 0.6966588136656844 0.0059546510594683565 0.2645814749307801 0.9761902755654145
+-0.756390661556982 -0.05697263778633681 0.363895725337445 0.0005269799049048028 -0.6910718637033273 0.8299079788766636
+1.0921612052134848 -0.09452002015900157 1.0328037245591395 0.008538287638736656 -0.07213884815281742 0.11490696899677179
+1.4452300971839198 1.3145622280315346 0.2560307233217614 0.008520622731510715 -0.2903830262919052 0.3571544313605263
+-1.7106117023662413 -0.5164225430403325 0.37942509790124573 0.0010379584496233267 0.14080296901245734 2.037501527509461
+1.0759421875735515 0.5675767544200996 0.9879163242603349 -0.005182835984129797 -0.09989258775887365 0.08918626081460572
+0.17763531883979497 0.6427866071498715 -0.4143431967605115 0.00018101982051774916 -1.3083055138657629 -0.08334241108853706
+0.5613510855512307 -1.0418705678255527 0.1304176744292145 -0.006360873236653412 -0.4831945550602296 0.34301986189376
+1.0238648258814027 -1.2714139923328869 0.838410091642259 -0.0400166831701072 0.33152760353573124 0.33521241201372015
+-2.0100364944849676 0.8288117827285927 0.48782925220506 0.004566193526827392 -0.5328741779259945 2.0047013762193266
+-0.3711819208050042 -1.8744921520785751 -0.0219455909811986 0.008657039952129407 0.36887893851722753 1.6828544488471069
+-0.09390801002259563 -0.09785802439715345 0.017446149462823614 -0.003087801505191057 -0.8006870834601616 0.47831387895578215
+0.6852133588946415 0.15178031022160285 0.822917212099689 0.027834894831265052 -0.0076934458732713365 0.5281657859989674
+-0.07034026661410696 0.5232003148730431 -0.48230100059050696 0.018975422132521295 -1.1708920588011282 0.4817832513534553
+0.42270092913288365 0.5756236338306919 0.41186684516813615 0.0037262948564030854 -0.35928670069565544 0.5672148543443905
+1.0309774796372082 0.4497557191192282 0.05838348012089528 -0.03068690609608476 -0.46069965442624006 0.2249499284024505
+1.364289407683033 1.2514590598788373 -0.6701192144500179 -0.02080217340402457 -0.7437865670743529 0.584993541235685
+0.6896051946368038 -1.34624880288607 0.7620210663077894 0.01987088438971948 0.14125712165344642 0.5924173231977459
+-0.49432598578217707 0.2676032285186515 0.9421489078110075 -0.022721373440066313 -0.20930693561931354 0.6497227513771598
+0.5581326355866558 -0.1754800370147006 -0.053406283568695735 0.05751254882678333 -1.1766790722516827 -0.1525764926930636
+-0.36057385791181046 -1.1810745767750217 0.726461161036298 0.006391134402773365 -0.4579771328683229 0.4457023510826452
+-0.39510101214272153 -1.6421594241569395 -1.0208710776151044 0.01771303219755777 -0.5186386772572873 1.4546264707175989
+0.08840984424754103 -1.1139283267677014 -0.006668984270881183 -0.027175468469085008 -0.15191750314308414 0.8900884998387623
+1.332477380036253 -0.6981619920745415 0.6641908649237288 0.04591746072320735 -0.022548710479253362 -0.031099740894699045
+0.0012613443062574922 -1.0139222346193184 0.26218295763407434 -0.017968359017841253 -0.7633963303357724 -0.06411447609670279
+-0.31172777636807014 -0.5931672884326704 -0.3794250078100936 -0.005728199108113379 -0.36579993289579776 0.995328122833671
+-0.02078906369813215 -0.8355422936488603 0.2640015782845783 -0.022397571960866308 -0.2994869015393642 1.0305230810396948
+0.0266095273272548 -1.3489087088720608 -0.26336752353086407 0.05373642695199268 -0.017599883697106918 1.3501929139761717
+-0.48656098575036505 0.28044105673718595 -0.31269491562580304 0.010726254701674933 0.12551900377982295 2.1301010584263538
+0.5520480427916027 0.47080556839950555 1.8107593413942085 -0.006208310508642158 0.052263835505728426 -0.012411132315282472
+0.9881132810328677 -0.1707752824437433 0.21672382014764688 0.005867802928713863 -0.2795249120998339 0.0027183273103547336
+-0.38061081552885884 -0.9104004122580426 -0.3460117485771992 -0.01692690711238169 -0.8642510668747985 0.6948864904323592
+-1.7984210030848993 -0.29886238981468716 1.3923941485316198 0.016741471803725417 0.28217269605219586 1.4468341493514323
+0.4801691910009881 0.8639008916952182 0.4350412969650622 -0.004366358603856076 -1.3872412468947608 -0.9139899952461659
+-1.0161872860416088 0.19056215236021432 0.9480342838902354 -0.027196209380954895 -1.5759181636421624 -0.554008563486475
+0.9236288136919226 -0.6871855188285781 0.2874652934873437 0.03709972018694525 0.5025992160818418 1.0326162691986114
+0.2107029423335849 0.13709462995691532 0.04040809915231648 0.009201398772630055 0.2873107863398216 1.4530616227042206
+-0.2281665117871068 -0.23086939189076086 0.08221552681887076 0.03924320163786398 -0.7589869760161182 0.3637244374652303
+0.21418831227381036 -0.15485402643099536 0.9302207941903434 0.0021381284148873844 -0.6753923675763962 -0.3890559421643909
+1.0403495669638485 -2.142041040554824 -0.6031639083249684 -0.011606739178304732 -0.7063041412179611 0.06943825980169734
+0.2584678641935227 1.9779581794799477 0.2426003509249301 -0.04363925635151865 -0.6337861309998506 0.7230306155775111
+-0.003307688503775909 0.30538140630613136 1.0286153253237529 0.037325156688412284 -0.5779468366773243 -0.039137199089581014
+-0.35828249257096817 -1.5243067596725255 1.4054544477401012 0.032086143281752084 -0.7535381321767003 -0.6010116754146421
+0.8888605215270741 -1.155842509178463 0.38738897867261496 -0.004353909556181524 0.68640386476969 1.085477624948596
+-0.21455648128060972 -0.8251102283414681 -0.4137388361131124 0.043949230789514446 -0.7994047353046903 0.5792080979280776
+-1.098288204119273 0.34623623895197847 0.30939231932683847 0.009089949948227784 0.5044732891309006 2.3178626808161837
+-1.0195279498569283 -0.4507498746724498 0.6169841232915604 -0.004579508778822252 -0.6429035276669471 0.6758594564535467
+0.3053443243148178 -1.0484977548944052 0.6187432871603897 0.005664896011490927 -0.9958981612455738 -0.882392217837104
+-0.37552476104947274 -0.14643206772804285 0.20272221404074428 -0.030329528831520052 -1.0147619300799706 0.39122000564984316
+1.6363390395696151 0.25747020506862056 -0.673546304376947 -0.03733626203745468 0.034588189103543526 1.199258069542029
+0.7267380405485887 0.6098963948321219 -0.16874673341794155 -0.014189903163579572 -0.6905456911660801 0.23790303393387857
+-0.5771398699163164 0.0499662198110981 -0.3194461334732761 -0.0211905244578285 -1.0576656811441194 0.8561590983827514
+0.4703069043830689 0.43451528474809936 0.5904936490382388 -0.021563333082446033 0.3899706744321192 1.3071059230902449
+-0.1047899198500303 -0.6270435754340606 0.12887990316428047 0.006901156761517391 -0.04947693215159733 1.0781255792228486
+0.24172378587466897 0.815272883177126 0.3115625093468365 -0.02303991541839312 -0.15002203170657977 0.7589765866818426
+-0.1586650377680393 -0.46924631607717293 0.5622625379110799 0.027406188426930676 -0.3252535300944507 0.44087238602878376
+0.8382490288435114 0.49405479373066574 1.0644116910893189 -0.012172543658727131 -0.4708841335217534 -0.2277667331043116
+0.26456354263666587 -1.021982822227296 0.10008043317106155 0.006508508586817331 -0.7819638070159959 -0.07117304710348955
+-0.13596160972584764 -0.24595319862444462 0.010215599548084695 -0.04255626031889822 -0.19136734315871237 1.2472018767515822
+-1.3162633102786132 0.008598574218881301 -0.12179160739233429 0.008136971938580593 -1.7050089062055929 0.07748640446044144
+1.0622589278112369 0.21451733021535663 0.320143266233959 -0.005910920616189364 -1.1998271600153019 -0.8793145113761819
+1.498610869468207 -0.6630054407977964 0.14720250168340587 -0.01207792901692975 -0.19632382002465895 0.1576094040805654
+-1.6498885398259433 -1.0218475002021528 0.6038889891479574 -0.015420619386212985 -0.5962676648320042 1.4747751089315417
+1.383616852307395 -0.04647231545671742 0.4123248543477482 -0.010291360144290251 -0.07286526841137499 0.4041618024348969
+-0.4581009554789399 1.0751651441951349 0.5915891574901508 -0.0008603158386766295 -0.7441856281851068 0.5797553665181537
+0.43232800700056573 0.05444458235320458 0.3439650371134381 -0.008950560651632055 -0.2836528601407988 0.40627164340335536
+0.029181096840294244 -0.7162879556539352 0.09259561060444789 -0.051313555929564894 -0.5467206698078977 0.4525884269111502
+-0.9798899264946997 -1.0486528804810265 0.2364407473710036 0.019479337545113794 -1.3210589405079687 0.3212364127542726
+2.431934641231565 -0.08559791043671028 0.1879027736504129 0.05690876507213582 0.37157354259175285 0.8189894442109289
+1.7232152925933812 0.4230993231715333 0.5581292924366391 0.0018863060994404718 -0.48923340605548904 -0.2393778317783852
+0.6097705496175327 0.14279619626773654 -0.48823971675564976 -0.04100295988966357 -1.4655704563491923 -0.40178550487304243
+-2.0923966020928155 1.1049756561303703 1.03717478087729 -0.03856519170522303 -1.799051842406234 -0.11842321083092
+-0.3088220723007988 0.37839747393352835 -0.12034985012845187 0.009983970657955669 -0.6590830586306674 1.2418159829539346
+1.0320595120726574 -0.39454720783097397 -0.7498756164563106 -0.030342468993617037 -0.7772764684895392 0.4160608488321475
+0.03265576388859729 -0.2317574662461813 -0.21128117052915238 -0.0131851645731942 -0.4148752073767283 1.2175123344347285
+0.37113211555033004 0.21025516065941224 0.5984586404060023 0.007586832503010221 -0.72088241975124 -0.048026276574286264
+0.18085121925796535 -0.6218536209499098 0.7157836771010784 0.023284911353008395 -0.7693913352105501 -0.40717084721604013
+-0.34808113240865446 0.2617496615201377 0.7336167146666778 0.024658144919040097 -1.068201321258125 -0.217591782380591
+1.0861573711675463 -0.11705466402547098 0.2601826334302906 0.004558497327134023 -0.6155282521453858 -0.07745317727289398
+0.43185458785033964 -0.8494945761518601 0.0788228649433685 -0.016028081182120894 -0.2772755015990027 0.688112830009048
+-0.46655212069308155 -1.3885746464860125 0.11832122617510789 -0.003241908128767867 -0.415341527638367 0.5120976625397677
+0.2822081529892739 -1.4334263505322038 0.6229469821662329 -0.06191179475641842 0.3942126121983016 1.3542455720194497
+0.08708511127358089 2.4171060687920445 0.8095912578605982 0.0028337945049223094 -1.5820866763039736 -0.5994851174735266
+0.863871319677054 -0.06395834514602118 0.06576003580084579 0.009710270777993335 -1.480169337566195 -0.9884491186711061
+0.2877567944582716 0.8574290694233289 -0.5016151460625687 -0.05308697125906981 -1.7350227907075761 -0.4616146852693892
+1.0395901098187783 -0.025298754863503737 0.2611133846683502 -0.01533965023298704 -0.21366553226694765 0.19768709862197495
+1.1136451344545906 -1.713914337485896 0.5591658050202426 0.02581434409326087 -0.6735231363344237 -0.7693705636417896
+-0.7504634521025986 -0.6847903021055466 -0.05141235353013251 0.020034383548422068 -0.40691558007211376 1.2736034075408056
+0.2580984756702537 0.19079378953362156 0.771739826497781 -0.0186211231513902 -0.6624824567927549 -0.23661304035659853
+1.5388003249640374 2.1239236203480165 0.30074573899996687 -0.009944930423854888 -0.6925479062886467 -0.17192001099291132
+1.0115809947415546 -0.343717987880514 -0.08559309957680915 -0.03223507452143511 -0.43935005758698653 0.1550908659450183
+0.6386387770284627 -0.7560829285550493 -0.12664844198468014 -0.02990881102864517 -0.40713647602572434 0.24114925543104496
+1.615967823371846 0.22205928491418342 0.19818415151649557 -0.014486539534009892 -1.0881804556610273 -0.8032009441448323
+-2.5921567349456702 1.7380039293286154 0.010222854393248777 0.018570415527531737 -0.27431821613860197 2.4944782742161835
+0.0301052167593852 0.9309337071684513 -0.017570495455657986 0.05995568133446865 -0.14154728444560852 1.280790807683161
+0.562619388971121 -0.3106829247239282 0.12396035377652595 -0.026869594797975793 -0.012025704079742698 0.8989001210836917
+0.6443804355499596 -0.693198456199351 -0.48218082844759214 0.027068428940841296 -1.1197690644312142 0.13220112366354714
+0.3163755399034753 -1.439035329811485 1.0783527366950678 0.013497371740176482 -0.6034715185645856 -0.4828027200359614
+-0.444038224533619 -0.1377891127732871 0.5026947437962579 0.0023021991500771265 -0.6062282537100867 0.687399834757466
+1.0927615884032154 -0.9263668614827827 -0.3734951829879137 0.0025142957147216284 0.29724860859899266 1.3310171996333626
+-0.7243910804979902 -0.374903188922172 0.8054930527829507 -0.0051981250994146974 -0.4306031956856887 0.8362390387158946
+0.7537143775635438 -0.5116428475928575 0.8423462847806872 0.008238332418264013 -0.749446277502982 -0.38365879193817637
+0.15714712165230402 0.9665726099113496 0.3140107548235686 -0.011870096896114487 -0.33010697063907435 0.8244447426014062
+0.5066575864223501 -0.21435700951258738 -0.0013198945524274446 -0.019075062458780698 -0.43882286482390587 0.6380152806577909
+-1.0398017906382349 -1.111932173945994 1.1624048463423937 0.01671349404338037 -0.3331044275790938 0.44259668734543245
+0.2730602451152662 -0.893845230828235 1.0981453702181083 0.015161749282663848 0.11449702099275487 0.43438887615564375
+0.42841314465210434 0.014517220964926556 0.33456577950149274 -0.020113848161601857 -0.3916670219079038 0.37336759427598293
+0.24436860664274412 -1.144010802557791 0.08613561748286103 0.02147565377409632 -0.748764955049041 0.26355974681440336
+-0.10710157746861336 1.8391060743817578 0.30933664296372937 -0.015302405854520673 -0.544483439781256 1.1231841054853116
+0.6617056563177769 -0.12269022629231506 -0.41602957166566495 -0.0022032272557754857 -0.9582000477555994 0.010351211359995083
+0.7294693296198855 -0.03688366280087436 0.7515960009495359 0.02400200207891003 0.33691161910591216 0.7554222298107786
+-1.6941883551576933 -0.9596629003189375 -0.4303012282023571 0.007206847935023525 -1.104297548214763 1.241835094661603
+-0.39846264391466385 -1.1865057902677592 -0.009990333521442166 -0.001323718567697407 -1.1176166979214703 -0.07881111757632832
+0.8229355866716186 -1.077573786631792 -0.8844155403537196 0.025358063392575857 -0.6429062086582306 0.3830156956367247
+1.8143666756253807 -0.7909127227644497 -1.2167416997335807 -0.018197760468170444 -0.05826852249053278 1.1587200823557677
+0.33788516435298904 -0.3425452060565465 0.17734104716149215 -0.013487217228299916 -0.4306687314740485 0.6422574523090043
+1.3096874957379325 -0.703146276905263 -0.41657076713445046 -0.02377818393736814 0.0989604702010855 1.333292868223914
+-1.6378882942429336 -1.2624233369999471 0.9892855316298264 -0.022545694283262176 -0.9359030237127377 0.27671390741920104
+-0.170192232327738 0.3793108379106017 0.2731257690912751 -0.008866110665474977 -0.8953865360511312 0.24984497576554268
+0.682585606301815 -0.7931376076419014 0.14084543478221925 -0.017297387196371104 -1.1037831843734032 -0.391187020319786
+1.5497601347040064 -0.503402522525689 -0.11891465042475008 0.005134735806212742 -0.48402666125938193 0.12920605766139748
+0.751100659625198 0.4404254403525827 0.41243111212276734 -0.0050053189637277 -0.22977045030657223 0.6618250670943121
+0.9119871014776075 -2.379239693832942 -0.6768391353064726 0.035658035803475846 -0.6681060886799917 0.3363970104152476
+-1.3453643048515784 0.4177616962968105 -0.1310227441969179 -0.022186048041889818 -0.8729815631569231 1.6204978148925564
+-0.5910483244171156 1.2396177925178737 0.35856120795146307 -0.016806822975419085 -0.07179174581931949 1.654905208876829
+0.6477936392319904 -2.3898063077983354 0.493221781037027 -0.05011296515873814 0.26431189475660455 0.38330140628470405
+0.6248948402262903 -0.3512144360935224 0.2952097762701283 -0.013915750699044776 0.364969145261184 0.9508963009151903
+1.5228350654618001 -0.4489574399503058 -0.5342795166020599 -0.004739068345617574 -0.03291936108058475 1.0831648351980165
+-0.28015035570199515 -1.728644091827071 -0.8983966453468696 -0.019430221676573583 -0.25230494556662086 1.6699875622847653
+0.8743832710534531 0.1759518395245366 1.153522725801276 0.013400741726293798 -0.386399378465132 -0.2463383924225319
+-0.8391515762983639 -0.4963988713888406 -0.5456305443918905 -0.01870339445407837 -1.18726834024893 0.6375991286925198
+0.006557735977700785 -0.5886751859303002 -0.622754445245184 -0.009294769213171978 -1.3410784986574997 0.1953579377115924
+1.1112481428176264 1.6248591196483604 -0.06311973749508448 0.045049369387125573 -1.207573848174583 0.04516425207574497
+-1.2894824190760514 0.16322673253034378 -0.14950297922077793 -0.017962688355144762 -1.30699810631835 0.11182698151942772
+-0.24755275007099817 -0.23360658447215207 0.24540526922263028 0.016410589227709257 -1.414831969051486 -1.0059146993141241
+0.10602312060642757 0.5273625474478159 0.6083609915222623 0.009191273876922024 -0.8613720423850377 -0.03460863072384496
+0.3583789316349845 -1.2166681872406033 -0.4427467142504419 0.007786974138653891 -1.46455474026015 -0.8936293421834026
+1.8605060050902642 -0.37023666498027974 -0.1729277434049461 -0.000518334672564965 -0.6400640893429889 -0.03791144957459913
+0.25554991994809134 -1.2957983605775891 1.005723657404952 0.009451565558578689 0.6614812085889225 1.0361321285738045
+-0.7814365798191711 0.7883768140875484 0.42399100676550244 -0.025085875996419173 -0.5931693966856572 1.050091898583939
+-0.6719746001145768 0.47363524324846873 0.33818998355266383 -0.04379346802709082 -1.018565939091886 0.20209599326275526
+2.4488369903686733 0.8948623926553291 0.8084916540638092 0.040028085690248044 -0.8963445419090773 -1.122967096372424
+-0.20585804579089945 0.056836553641638206 -0.2625963026506358 -0.00886277756593773 -0.9432543488521625 0.5383307701409173
+0.7593285770579814 0.43244737928255716 -0.021747986162150634 -0.027443685970947297 -0.8515623803495679 0.24357911573472443
+0.5040709428562821 -1.5789575977915258 0.34054168448331185 0.013711638213643238 -0.9867341867702555 -0.2907936306182963
+0.28071384849707287 0.5759028597549779 0.2492719921839272 -0.0020887106243040353 -1.000362429977034 -0.0660790643760528
+-1.066570980069426 -0.5005634328054042 0.8582084536668736 0.006828540837988896 -0.3525485555845349 1.041683832805085
+-0.761281638259403 0.12513842840913839 0.6602669885026087 -0.020113087574851904 -0.5838242936126299 0.655631194082815
+0.42346956539768305 -0.6150243620591289 0.7776229896452187 -0.014718329528552681 0.3143672365603969 0.9019549345370393
+0.5112536910284766 0.2372535489640671 1.2348207466093908 0.00924393450985619 -0.36892397319571957 -0.10175260375535668
+-0.5739508024879977 -0.3781335989525916 -0.08112789361464919 -0.031858084451998406 -0.64405657799872 1.3813777489849022
+0.2888408002369947 -1.8322366118585893 0.23450786568658544 -0.031020238058587904 0.12206800652804849 0.7730020164090984
+-0.5742071346473329 -1.290183233040686 -0.055829419851564234 -0.011842734211460896 -0.364085041481201 1.3368853959169007
+0.3718973386458011 0.7886408220041906 0.45639877722833366 0.01886716954905998 -0.789354218475409 0.018715178775932276
+-0.22402315574437018 0.906365310249096 -0.18668151395676646 -0.017467505336947645 -0.6415139096803982 1.0436603857541975
+1.1604373461913293 -0.2291804039051792 -0.441864494989107 -0.0281931468780325 -0.9306851232449858 -0.11823440965321695
+-0.23516585340990756 0.07282315787752065 0.33619415259712143 -0.009414041923666218 -0.10970243679024128 1.4305404777907216
+2.5121348780530943 -0.21082918375340776 0.04865833771388756 0.0071267829158981316 -0.508392142154775 -0.4324448847902268
+1.1440501501262363 0.41204058026402585 0.07613188452847641 -0.022118521880350822 -0.4883322651094521 0.23804445984942452
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_interval__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_interval__.tsv
new file mode 100644
index 00000000000..521a23b2b85
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_interval__.tsv
@@ -0,0 +1,9 @@
+@CO shape:(6,)
+@CO dtype:float64
+VALUE_0
+-22.886570003781273
+-22.870602737869437
+-21.946500570864615
+-19.78053942626643
+-22.42703085958477
+-22.65869737799072
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_log__.tsv
deleted file mode 100644
index d0e7f8ae2f2..00000000000
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_ard_u_log__.tsv
+++ /dev/null
@@ -1,9 +0,0 @@
-@CO shape:(6,)
-@CO dtype:float64
-VALUE_0
-3.3157452315872797
-0.27700210936024544
-0.17155080231183484
-0.5966390764523473
-0.332508299459193
-1.124462475245523
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_log_mean_bias_t.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_log_mean_bias_t.tsv
index 1066841cfb5..9a357595684 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_log_mean_bias_t.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_log_mean_bias_t.tsv
@@ -1,173 +1,173 @@
@CO shape:(170,)
@CO dtype:float64
VALUE_0
--0.25849585646014905
-0.040225177787154114
--0.026185431993490965
-0.03725559498343827
--0.16538441997032297
--0.09228167661400453
--0.1256880156401002
-0.08633265467685908
-0.022113132827958033
-0.15391751538075946
--0.10095306370885793
--0.1687663961928414
--0.11488124990804598
--0.057855651527406245
-0.032467834693093015
--0.16051173145443026
--0.15188551009171883
-0.07234064881915624
--0.07072211886982924
-0.1104903927299972
-0.003183972228064411
--0.13415244390416362
--0.0173410831331658
-0.1547962836712629
--0.13336018556534004
--0.03743712782117777
-0.012381405865775224
--0.2114343671895864
--0.025791090747636716
--0.21293904382110193
-0.04149588027009048
--0.036673066624566465
-0.04971474075116118
-0.019591082197033576
-0.03525689768146697
--0.1914011900899641
--0.04725967156757652
-0.15274088676825434
--0.16122720361552978
--0.04136921351326967
--0.060209703827821
--0.0037056561935444824
--0.1351026827205754
--0.03369614376830839
--0.10411666196614842
--0.04657277102510122
-0.015077469235957259
-0.07754771342487858
-0.017914134286040675
--0.0710284267939751
-0.06260671591789709
--0.1320239478972418
-0.01961377424845363
-0.03858300991943911
--0.05492655291475266
--0.09410306319859052
--0.14434388427707762
-0.04273439447178011
--0.05839158444715406
-0.0703856249091366
--0.09589691457419967
--0.07848472372285839
-0.008442201756186348
-0.07374234341321247
--0.1492200732897827
--0.038903675641324825
-0.029904713495308384
--0.12617774475493035
--0.00684914045361414
-0.011720581870187374
-0.015159695768490727
--0.07896578318508424
--0.1385164053481828
--0.022721484315516446
--0.013656836616571378
-0.0007785867345173695
-0.01720449539311937
--0.10015929756959739
--0.06471074917794821
--0.1028394180063259
-0.011929294155889059
--0.05438686691749441
--0.001558528160390152
--0.014347270386367864
-0.07791486778457327
-0.018933480078153153
--0.044302163262634225
--0.0037092256840304504
-0.017662365344264363
-0.049337444026949125
-0.2262582515599912
--0.17281175279934033
--0.022790648571096687
--0.09414934489840618
-0.003798316187703955
-0.05202609080567137
--0.08738609044096314
--0.20587098060963496
--0.05907073144371839
--0.19001123651688706
-0.08826033838494703
--0.061698837927479155
-0.14512079608341846
--0.1224143859626555
-0.09598676878941785
--0.07985991812703128
-0.30074304164546134
-0.02060655486502876
--0.12429930147761475
-0.024020085715494074
-0.035918871220163746
--0.08673063143865953
--0.10153036098278169
--0.0825562611594305
--0.09297189839728308
--0.059244773256301134
--0.043590982851544564
--0.0074028737178112895
--0.11544692143179815
-0.06466204356597986
-0.2052745363350947
--0.07639543656474511
--0.05940514877494595
--0.07469196295204192
-0.18535078487812032
-0.0028707229352946074
--0.13154394549006287
--0.03745895786179402
--0.0747556060432161
-0.07226597938541604
--0.10475053502512473
-0.10605753982820944
--0.2026377612182792
-0.002085797071045483
--0.1619078335072256
-0.018117337333394497
--0.10288274451780398
--0.003339035266293413
-0.04212633510507791
--0.059088685709035235
--0.05498066439498802
--0.0803712766905565
--0.03921453117201492
--0.1759544843524738
-0.05113110906974171
--0.057838553417466104
--0.27236651708142473
--0.09141658300969051
--0.03187573698452198
--0.11594757607821507
-0.07587902698330139
--0.11295681835573647
--0.07967253687405149
--0.05844286822698041
-0.02263954603086293
--0.08744992968898345
--0.11004743382384538
--0.04706980705914157
--0.12789193947132776
--0.026474839656227638
--0.18506363178934737
--0.01710179280899088
-0.16587304717506682
-0.07881349627358528
--0.05913927298598616
--0.01229016056377594
--0.052055444238992304
--0.05730227334784892
-0.021841217216727514
-0.026173066921367432
+-0.254990252638147
+0.014858653522346329
+-0.034993064322295736
+0.02733561035375897
+-0.18829004413894862
+-0.10466998884824635
+-0.13758506861278869
+0.0801734660074207
+0.021152399289093467
+0.1343754358170675
+-0.13609388099102018
+-0.17555987614128968
+-0.11906567976958912
+-0.06684270967433836
+0.04483779285886327
+-0.14941881317226377
+-0.17071222702751895
+0.0726012015687334
+-0.07279312471493742
+0.10402122797857113
+0.0003434416830303041
+-0.12641339632580598
+-0.017005447607898634
+0.13874102024484936
+-0.12349357710694546
+-0.027957056135171285
+0.023917561918721256
+-0.2010857046877753
+-0.012716871527164069
+-0.232323141988703
+0.04169333927844279
+-0.057633144451718535
+0.06993621558238981
+0.017215025065006835
+0.028260854107833903
+-0.20230186371970632
+-0.04000642322736993
+0.15642482540067137
+-0.13007552840080583
+-0.007024467651137523
+-0.09375760690783468
+-0.01290477141298952
+-0.14022288341199812
+-0.05507328181686991
+-0.14085814620316145
+-0.12314783817205326
+0.02785272093226975
+0.10486464004527118
+0.007299483787562443
+-0.09891755696924949
+0.056417356164576854
+-0.11557864416824319
+-0.016308550261651115
+-0.012548748856564824
+-0.0178095854740767
+-0.09041822602642635
+-0.1359061344009681
+0.010488794199528318
+-0.08772318878418295
+0.03776348387025117
+-0.046431148218995966
+-0.052246762704875896
+0.005148765091522689
+0.0873721859634696
+-0.15168944487747624
+-0.051004533201239134
+0.024742788718927548
+-0.16275689565869284
+0.00020883664133847886
+0.015281835712887507
+-0.014021851710500653
+-0.09252491080214695
+-0.13036501425660316
+-0.04586091709967205
+-0.016109345732042934
+-0.012554740367280645
+0.021851555521647435
+-0.10830870222961729
+-0.10017972536420565
+-0.08908632880200233
+-0.00935619614620954
+-0.07230609797228194
+-0.044565327366779386
+-0.009206939188368653
+0.08220238579323659
+0.0175764048120341
+-0.06690498971524073
+-0.06559229059671028
+-0.014666812601742168
+0.041376268676970494
+0.21916237423208626
+-0.17648504535949366
+-0.008616758234419644
+-0.13320720788921456
+-0.033016732276934795
+0.04925980109865928
+-0.08179143181251275
+-0.23207553224223246
+-0.05407242212238501
+-0.22498989030208416
+0.09197581867034112
+-0.07283443116036362
+0.1414645340199492
+-0.14367832732517521
+0.11305590479747829
+-0.07404575037106347
+0.2893847780353018
+0.022326021652258346
+-0.15612318919609747
+0.004631341605863884
+0.06589315047890788
+-0.1079294648352954
+-0.12526642783794875
+-0.08597210216665079
+-0.07954610079991845
+-0.09746902853754133
+-0.07231434727919345
+0.0034058904172967804
+-0.12920725947366155
+0.06190501234510637
+0.22371455289166092
+-0.09045696884806335
+-0.05893441130874435
+-0.09493249550587272
+0.2022212724141327
+0.04970734295483949
+-0.11903098268203985
+-0.015505025911980452
+-0.13064720179654718
+0.055689573566620715
+-0.11816820007538256
+0.10954620402478422
+-0.21629262166322963
+0.011790970808432062
+-0.1611021222108821
+0.031212143759755617
+-0.10444072778561536
+0.00819561744245858
+0.0643061931541563
+-0.03919919250473639
+-0.09265944383076025
+-0.0894758393654009
+-0.04308845902727643
+-0.16640210443969677
+0.023944914697072547
+-0.10020384569960464
+-0.29564265269991186
+-0.11645176613938836
+-0.018998472486903145
+-0.12698441639553676
+0.05895992334900127
+-0.13477803526960505
+-0.09303383153459936
+-0.06895558769754544
+0.013095052793009258
+-0.11897981219834453
+-0.1095469106869683
+-0.05146713053051518
+-0.15825136012933314
+-0.03621638328753367
+-0.20735259469734427
+-0.018606042251129672
+0.15262891798372674
+0.09135556667092698
+-0.07036231693500287
+-0.01010461986204991
+-0.03762993668385063
+-0.06596494625587755
+0.02690801607859216
+0.02158667539590805
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_psi_t_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_psi_t_log__.tsv
index de47549e796..e4e7496a864 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_psi_t_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/mu_psi_t_log__.tsv
@@ -1,173 +1,173 @@
@CO shape:(170,)
@CO dtype:float64
VALUE_0
--5.831494684210253
--5.701904843345005
--5.949368974150768
--6.050755166785436
--6.585187809043013
--6.650864603574508
--6.544312589203743
--6.441139369710851
--4.146274741068249
--5.524828329319168
--5.390424770356458
--5.586802120322322
--5.468917126300418
--5.698363787812316
--6.5383625395148
--5.5039598371557155
--6.400893019488429
--5.466109918505184
--4.974765480420021
--4.309302019458549
--5.609005040676659
--6.180305162670144
--5.976934300597773
--6.691007187635419
--5.4558432293894334
--6.228046287621058
--4.680698138769965
--5.996441517493935
--5.821614544454013
--5.333424043024774
--6.501027723944035
--5.6750086073293335
--5.626356087053471
--5.499582413107742
--6.423088839788553
--6.257753524134419
--5.647697915152166
--6.517604617219825
--5.758920796584939
--5.681960988756882
--6.1992159656382775
--6.043677506575606
--6.580453829905904
--4.819883736655394
--5.300543290026614
--4.973245674514526
--5.782226601075153
--6.880580149704275
--6.360307433883671
--5.305852112707681
--6.161501823266756
--5.93687607744366
--4.5524401597676665
--6.075118755053154
--6.213587511583106
--6.403794332377154
--5.242293095307419
--6.6343660267713265
--6.002957009201296
--6.463174853367908
--5.6364564578313185
--5.333513011561811
--5.963295979059167
--6.5234925778856105
--5.819505613698147
--5.3299466607888295
--5.253132326179157
--5.970585371467633
--5.9561921005760174
--5.17978593278875
--5.858630105833846
--6.383207930396814
--5.700354056325294
--5.710034578698793
--6.581745788951691
--6.626182735190688
--6.207069667843266
--4.356165720523822
--6.385845470478773
--5.626183057397337
--5.246212329711581
--5.29627971302999
--4.526206153698966
--5.065060475115395
--6.356760440804606
--4.882950937971541
--6.316361899737171
--5.721482818795819
--4.506056851349174
--5.909360072957461
--4.93055015328936
--5.4869796631734395
--5.9118505380204125
--6.420940781154124
--6.245230198248998
--5.294650751557804
--6.393196415329064
--5.761629234372524
--4.419540147213615
--6.857243516425034
--5.272713512747694
--6.860971795043832
--5.983181126117818
--5.580763214914436
--4.472397624176357
--5.768271817205979
--6.454090911328089
--5.0692959288269375
--5.032563131635241
--5.644655521114213
--5.120434302440426
--4.632550613514635
--4.503406227899607
--5.7143253516232635
--6.01424144385011
--6.349304047817668
--6.056387721491639
--5.868934061007598
--5.461170516270111
--5.288905985742242
--5.924908203200058
--5.206562627088317
--5.0238441265799265
--6.045318265938115
--5.481315298696054
--5.985467845121656
--6.2903918089975415
--6.067873227576291
--5.578042459498003
--6.087767665715757
--6.604732006406723
--5.587241623851435
--6.52433398087029
--5.391183231291469
--5.815643786506569
--6.425770714376088
--5.967353478406907
--6.746582246761884
--5.545180805315946
--5.493337017075321
--6.040464613228106
--5.995004458495044
--6.269933261836012
--5.004317001034683
--6.646647159334649
--5.552820891767378
--5.227784566735141
--5.077471875432616
--5.736183704241921
--6.19267494097831
--5.534628816609782
--6.937373586278021
--6.233477295770942
--5.890460826994477
--6.028941561504666
--6.6108879288811755
--5.647155389843693
--5.468930187692765
--6.448438827858734
--6.319796047144229
--6.856418135668207
--5.913032182841287
--6.694214981282548
--5.675323154635705
--5.985055850696771
--4.497943024360114
--5.5979888816442696
--6.2303498815066005
--6.005491735894865
--5.292138486850725
+-5.90612933285341
+-5.6501637749858995
+-5.969253015269702
+-6.014875960742032
+-6.489406419121509
+-6.70573574944037
+-6.469998745738422
+-6.394916640523022
+-4.130369106398365
+-5.5774426885977695
+-5.221082461076659
+-5.405453624811986
+-5.438228412034885
+-5.604092646419111
+-6.530507911688839
+-5.4245438891190245
+-6.325117006506916
+-5.328269391374319
+-4.882154857369788
+-4.316722757488095
+-5.65347434274486
+-6.1511764360921815
+-6.009807965984691
+-6.668407572113125
+-5.407041752555268
+-6.238141580573078
+-4.733925456111175
+-6.181417114971542
+-5.848779933785511
+-5.456849362873353
+-6.537061213416539
+-5.704706215332857
+-5.546392888604351
+-5.524931769790207
+-6.441296764825605
+-6.315690009332974
+-5.662877386476033
+-6.255222177307756
+-5.824369402448289
+-5.722288956984387
+-6.020852332880968
+-6.124489479032303
+-6.550460903096564
+-4.711377588228547
+-5.218454160333076
+-4.8373083162975
+-5.708069483737089
+-6.840326939314153
+-6.296674741024219
+-5.239766873774782
+-6.0898046242172015
+-5.774097848610526
+-4.572072326531758
+-5.97578453871648
+-6.140225766203362
+-6.42817648695676
+-5.212646849542573
+-6.6665622239925675
+-5.951846407436707
+-6.418230850711172
+-5.667932715588853
+-5.426518468094688
+-5.981217726953758
+-6.651281818582164
+-5.840224045075712
+-5.29168583709431
+-5.225788292767603
+-5.96919658348638
+-5.683944637984386
+-5.218120355236839
+-5.785384413201467
+-6.499418046075388
+-5.728633663916372
+-5.557207812243283
+-6.685508556402646
+-6.6253475174338075
+-6.116437066167649
+-4.357522931379362
+-6.2852829181643735
+-5.736721958280185
+-5.314790862756494
+-5.23893212741748
+-4.564764815949842
+-5.059125887412163
+-6.277651173823053
+-4.881483574223406
+-6.260641023708913
+-5.748625486356007
+-4.49201786998875
+-6.009474348336306
+-4.894803346422076
+-5.349453648124567
+-5.88725015528686
+-6.3105982575093105
+-6.224541129260283
+-5.174256643883351
+-6.308724367587558
+-5.765085663869977
+-4.4455200031105555
+-6.8083618814224
+-5.241467890507009
+-6.971849002379696
+-5.984793324196751
+-5.516706547029592
+-4.441708189458341
+-5.835913406728012
+-6.417057753936638
+-5.01487713141903
+-5.062748560585003
+-5.686338559142803
+-5.144249622067911
+-4.5796745258291125
+-4.459422142226085
+-5.830330809070528
+-5.940151120142317
+-6.38793364127497
+-6.091929367553063
+-5.768560361555316
+-5.464867432191707
+-5.218211184682551
+-5.844077482762832
+-5.297802105705988
+-5.025331911763075
+-6.087148170512097
+-5.390365423362232
+-6.054521743218905
+-6.237072772937868
+-6.018903302018207
+-5.538028870720359
+-5.964676572193755
+-6.673623749909944
+-5.5384218005033965
+-6.438676710595935
+-5.441687641024226
+-5.8235007656042415
+-6.260508668121715
+-5.968597544309825
+-6.776261702171938
+-5.514289668312784
+-5.4630792004092
+-6.07790227719405
+-5.9134435718879415
+-6.271246035984225
+-5.043500352669252
+-6.689232043703124
+-5.438910790404376
+-5.417037448767159
+-5.052787028039681
+-5.756457482826005
+-6.170210096166937
+-5.4440532448863355
+-6.899233029148551
+-6.254251012294803
+-5.7760305501149904
+-6.026271710907097
+-6.726456406175265
+-5.671391729545762
+-5.4245478644747855
+-6.436074224814457
+-6.353464399927416
+-6.801414615550531
+-5.846030264046276
+-6.674007598437272
+-5.703792677568573
+-6.101965087189712
+-4.498128654157017
+-5.749580442276172
+-6.202874898334012
+-6.048991164382967
+-5.312246965175328
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_W_tu.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_W_tu.tsv
index c6e80e0df0f..7830e45a584 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_W_tu.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_W_tu.tsv
@@ -1,173 +1,173 @@
@CO shape:(170, 6)
@CO dtype:float64
VALUE_0 VALUE_1 VALUE_2 VALUE_3 VALUE_4 VALUE_5
-0.18638004027724503 0.054445364159444176 0.05492042725323164 0.07914553458498379 0.059395159219031275 0.1109053706052984
-0.1887082605149887 0.07827341508390603 0.053294854294028825 0.07753057477120277 0.06468744326564745 0.1213875180359707
-0.19340512901767903 0.0747348744339327 0.056022256510859215 0.08436549476251293 0.06020217799551757 0.11745989386858939
-0.1831784637942384 0.04937641217018871 0.05023053358339931 0.09848442220152534 0.05348940190043709 0.09861371150338892
-0.1814339295200074 0.05726982474840878 0.05125626957828095 0.07833295259814411 0.05807233063078831 0.1139881639923321
-0.18394383862652658 0.061677865171385494 0.050765125490890725 0.07413555844765761 0.05818501918482486 0.09838321307748929
-0.18453328946164504 0.04906832332948653 0.0484504403801409 0.07976668124840959 0.05779620640368308 0.09295987069759687
-0.1985905612816648 0.05865712508841656 0.048084949576288914 0.07898504316116765 0.054946466201232246 0.1025141592328047
-0.19567879286789164 0.09124541482275766 0.08446085698286748 0.10775998959738353 0.08633468900644928 0.17112408794566436
-0.18278261834766987 0.06960355464497416 0.04967133510662829 0.08720854208215144 0.06308168477448217 0.10706764201814221
-0.18424113169394624 0.056976872934118475 0.06261029258673641 0.11528511564668331 0.06394261185858358 0.12571961242190482
-0.181802449178327 0.06613034044618796 0.056822229986494076 0.08456285288035513 0.06630352221426809 0.1257479635459855
-0.191123470203438 0.06517419568661156 0.05663641959336538 0.07938841264674555 0.06370404544720523 0.11763778476336442
-0.1906669953835963 0.05140738459565288 0.05601746651215549 0.09584618841089389 0.06117403558686995 0.11344726743046028
-0.1939027935550922 0.04674699900326651 0.0459027443391908 0.09379334297048103 0.051656173824682905 0.09059577378949195
-0.1920282647383268 0.07623452306688207 0.056372792978168135 0.08286626139475292 0.07133807827973833 0.12835887844613136
-0.1867440928401916 0.04781799107890557 0.049687213772443915 0.09001345104715507 0.053689194305759504 0.10355980370294438
-0.18035391912526344 0.057838545380670854 0.05453846367614229 0.08373200797553197 0.05685404954031482 0.10697190897746921
-0.19524439588537038 0.06452224626369482 0.0588385768011447 0.09368841345238207 0.07144941506124168 0.13558010774160367
-0.19105280813245926 0.07364328556422281 0.07654460597719483 0.11410165442848512 0.08228529234079718 0.15038242820760972
-0.1937282186329369 0.06494394336886906 0.05798626606878538 0.0860433111001758 0.06350714871920142 0.1208284500606246
-0.18396078357828377 0.07092259775202532 0.05094061780384626 0.0754039989292337 0.06190469354582211 0.10873350997184691
-0.19543300132604377 0.05684596488298388 0.0530696277153092 0.07471409359386712 0.05446630755626686 0.10454655754180375
-0.18343145676033046 0.046414946811106673 0.04630561218481213 0.07533808505374442 0.0485754883578731 0.09564423175206357
-0.17787662422395734 0.055455877420610186 0.054275082419276095 0.08699360907459923 0.06748004101888472 0.11749932393919515
-0.18496272213847098 0.05212944563056782 0.05138675033855413 0.08084349902723423 0.05514551504953828 0.10470547180161188
-0.19471343242980488 0.06547665039402994 0.06002117571912944 0.10832080492544284 0.07374725904653194 0.12902189266622022
-0.19168597737226306 0.04753321260081667 0.05027581021909984 0.10144017069635528 0.055798162282325765 0.10775979409847251
-0.1899006330536646 0.06568904355190609 0.05706352104018183 0.08136796514232321 0.056599345377596796 0.1162621162333457
-0.19182875680720624 0.05732507056539553 0.05821991225487051 0.09052390174956283 0.0648862565607824 0.12476084581129629
-0.18655539885220776 0.04639142241339643 0.04442839616073524 0.07779294441996817 0.05253420665678031 0.09472707381060051
-0.18025591869998453 0.06847993026067245 0.050508932776426776 0.08054530984238935 0.06072320693608706 0.11137260706948837
-0.18739819749683842 0.0741451065503948 0.0543043186253616 0.08135879100688913 0.07107080672704068 0.10741714766206752
-0.1936049652758159 0.06411186206841343 0.05265814228701117 0.08276660263924218 0.0674856371370957 0.1125806850971838
-0.1802546165480234 0.05041874774744445 0.050548580017167215 0.09328573242319632 0.05284047527272683 0.09926400190656978
-0.1809637233501794 0.058672030941654484 0.05302121039516297 0.08309656591572481 0.0602465412716216 0.10884783267747837
-0.18376090515545548 0.05996273078723493 0.05140562423158619 0.0798263433918944 0.0634343351462127 0.11663552144279114
-0.18464317817924228 0.05362582778287396 0.04937429181034376 0.07211743122499854 0.05841827840339866 0.09427067749910933
-0.190661864069719 0.06885576786186365 0.054248321275237724 0.08358055906386672 0.06172472403651727 0.11573349312135198
-0.1830894551613994 0.05750558388623571 0.05650623799462231 0.08165468032271585 0.057685937269925075 0.10853411124173595
-0.1786539342315104 0.04919334380077958 0.04794282039654323 0.08735220545069972 0.05496248366748454 0.11002120267708437
-0.17880171299935105 0.05136108063943623 0.05073016518508882 0.08330593937575495 0.054631202711911936 0.09956365235951506
-0.18623432244741026 0.06271451099765092 0.04959624651090658 0.07257328979841648 0.0602018809198207 0.11026735704698683
-0.1947658823804554 0.08206845027994172 0.06905507531360007 0.09190110488586865 0.08040074562848715 0.14304539187590803
-0.18284987528219826 0.05068236734624916 0.05657459542149778 0.08685652891079572 0.06240762814324983 0.11371000955319305
-0.18826440838882924 0.06488544829394532 0.05988675837873034 0.08468374123884596 0.06992334994817308 0.13925302475049642
-0.1867606358449755 0.054007225524564766 0.052277308309198516 0.09377054633475179 0.05500029440212944 0.11063749300986038
-0.19083112351502615 0.04698854567805957 0.04585738955517756 0.07175253652887942 0.0496445743161924 0.09232330490168482
-0.18245830393875592 0.054076852958935835 0.04762161091406169 0.07772832120746895 0.05738903637637041 0.10050887430885912
-0.1926863031214152 0.05790742885612426 0.05768080702438898 0.08780368435299267 0.06410733541693629 0.12369126031595329
-0.1887852495320867 0.0626426321062232 0.05185807684838464 0.07851689943073117 0.06233037714244255 0.10180254880575919
-0.19947360483998364 0.04949135082899403 0.054396615827985224 0.08749948123074133 0.05507805950804428 0.09856603331345236
-0.19326138362396236 0.06689827376775531 0.06773786998209154 0.10530572290968125 0.07808175201452515 0.14189438619360922
-0.19524130336798923 0.06360779488788718 0.049196021047435 0.07254357924571415 0.05983717582566694 0.10879611807732573
-0.18749521911679767 0.05672272037794201 0.05078282041590622 0.07437801884639912 0.057268603038535246 0.10674120352407801
-0.18748631639195795 0.058617812915518756 0.04908971892331004 0.07806027181228106 0.061992820296050306 0.1104981096727978
-0.18979078316363063 0.06887578810800755 0.06152557628757034 0.08130462465534943 0.07121027529629506 0.13895815143337764
-0.19060816292940702 0.059356638830716624 0.048025254878565904 0.07959996684960338 0.056828029424639506 0.10840650527302617
-0.19182686998761106 0.054690268805373685 0.05570289624528354 0.07551355419354877 0.058263445072157465 0.11974462429446253
-0.17950945894426215 0.05720762402028392 0.048949632721814254 0.07341126915074801 0.05653872219197345 0.10013635143226972
-0.1832421664922389 0.05213563932803334 0.053734352620095974 0.10975560984020866 0.05843795908290123 0.11502290726599804
-0.1952128144475863 0.0584319205015677 0.052592602057011696 0.08722323657773562 0.06483874795374624 0.11694010557670349
-0.17971951986377502 0.057500325428271826 0.04977456790397835 0.08050618809027751 0.056989781175353034 0.10755814864096191
-0.17937747034619425 0.047968017299699905 0.044150343222129684 0.07579544989637634 0.052412513990848036 0.09373780220367778
-0.1950489384444368 0.06568625757002712 0.0534458169193231 0.07798158279607356 0.06320506954687403 0.11233577499689276
-0.1977196808193122 0.054246972077068044 0.05362481745591875 0.08439415018722982 0.06462868108499148 0.10850473860219577
-0.18775345719256228 0.05905665984232387 0.053775809014875664 0.0843558887833343 0.06169151022291975 0.12334387050713624
-0.18409240161239465 0.05109172694857307 0.04861877087325683 0.08860572430638508 0.05498024405642487 0.09581361940593704
-0.19189014577478877 0.05926831970372572 0.05299252042666068 0.08059617204649791 0.06047464607015344 0.1093021591948482
-0.19211614280023484 0.06229265306736037 0.055496298503456304 0.08518403553520768 0.06381686764839897 0.11696560215501425
-0.1731266966764689 0.06280227800275634 0.05485181501597618 0.08636252284818302 0.0620702373133323 0.10890184827175652
-0.19654575145476902 0.045787098154232125 0.046614785155197576 0.08254037474650407 0.05063550931510037 0.09962703015726958
-0.19049423088620573 0.05387180322489938 0.05435591702174757 0.09570489626531663 0.061523540685408294 0.11444948613954876
-0.1842999020865953 0.0726578035995433 0.06095833254142224 0.0801629651705089 0.07175144990765735 0.11697631012967111
-0.1872859567999002 0.04521800336322309 0.04713900513687367 0.08741978594145278 0.04943136661971326 0.10142619532230314
-0.17730435703387373 0.05018954340426241 0.0457722531737593 0.07926812316090735 0.05292519883070055 0.09660843226526647
-0.19325464929183467 0.0490764783200236 0.0497717235070763 0.08793824359071746 0.0549982233776153 0.10821075415936682
-0.20050592646387974 0.07696288274975518 0.07574204140516418 0.10590836234640573 0.08542869052026256 0.15799677934559905
-0.18597024604078669 0.07005176671424883 0.05052341529868034 0.07885888829883626 0.061192574047044264 0.11287801462056068
-0.18835581071164817 0.054408772084426356 0.05270814105752753 0.11678729968249342 0.06047269481124564 0.11286512341094818
-0.1862272181853617 0.056461129233432904 0.06045069965232877 0.11012860851787477 0.060618643815751536 0.11542696330451702
-0.1812244864127353 0.05787198329454759 0.057177293547320894 0.08595291159233998 0.06620128592034492 0.11417683256346765
-0.18553983310231892 0.08347365172338903 0.06893649007685425 0.09697976436005615 0.08494710821352927 0.1575120556441598
-0.18661027948399278 0.06284020369906398 0.06293250611235691 0.0931351569989534 0.0637757977636135 0.13074788127517553
-0.1815408898645528 0.05244329706120485 0.04725219658792862 0.07916542947959052 0.05380182430591047 0.09640967881957296
-0.18654906192233017 0.0703960889725134 0.0599964126353278 0.08888611728515756 0.07293759525602833 0.13171553473319328
-0.18077187683535617 0.04575696206618281 0.04734584545245752 0.07761557880283732 0.055204757413675996 0.10374719148456844
-0.18304639179598087 0.05390307004853003 0.04843916142631383 0.08066718405358339 0.06272844569851785 0.11445743227753517
-0.1947746746372087 0.06988728573201815 0.06652530826818163 0.09848103840194912 0.0736869250770044 0.1482577168072303
-0.18454108855684606 0.049885412133637015 0.04985048520472533 0.08791101560100677 0.05464318484881905 0.09921830838137595
-0.1874052518106937 0.06429431139398058 0.06568085745154975 0.0943096807822076 0.06930408038718229 0.13788463073066817
-0.19045171934966246 0.07457780666742195 0.059847731134835165 0.08799105065308727 0.06742015226918402 0.12292980906473197
-0.17585688179425937 0.06131615820902084 0.05595590511201905 0.0755344051163804 0.05899782030489495 0.10832549005622366
-0.18410974869860833 0.04582071739044028 0.04915496952776452 0.0850865157038893 0.05248630237953995 0.09660773652651283
-0.18509518171118677 0.044185404153896206 0.05021255584795561 0.0844835219105996 0.05355945636294086 0.1004336981173842
-0.18887676480557203 0.057739868025515145 0.056243335785346744 0.09184884619311164 0.06231494129813468 0.11384287317693922
-0.1772856710244951 0.04982871453792992 0.04776713707657943 0.09350426375770614 0.05257043467120919 0.10691407297293476
-0.1892964673963698 0.06039028501425865 0.05606726357008428 0.08652111358439431 0.06678533526428038 0.1206665876442617
-0.19166567736410528 0.07825729063708703 0.07356255160902103 0.09505444418908698 0.08746094874988164 0.15422044252214498
-0.19037112125485542 0.04617400524446455 0.04980811872430387 0.07664027277485237 0.049414145661500646 0.10107469200453194
-0.19188957534490295 0.05206329797046354 0.0584276430784381 0.11158090740471366 0.059801226678973696 0.11950897514160184
-0.1851692690836062 0.049146049469753136 0.047014637039771184 0.08001633956090169 0.048836763063622717 0.09386307104462818
-0.18218215612289082 0.05624041239251572 0.05056787588616962 0.07590403644261531 0.05619553206274406 0.10163401060808121
-0.19383298466603846 0.05295939257239532 0.05974604000825306 0.09841486922445478 0.05635823937049521 0.10722330193098818
-0.17925190786893577 0.08425437786408217 0.07649691360992761 0.10820068324671589 0.08208263408601904 0.15538490934393004
-0.18382400407829763 0.051457534566251316 0.05485333282979863 0.08295343878080781 0.05821764680129243 0.1062341226519008
-0.18310465817743515 0.04684592865994392 0.04487645643320305 0.07721562470209231 0.048805744860125407 0.09072520047608258
-0.19142304186557146 0.06791489762973854 0.06307429417719092 0.09408508959069556 0.07524526917899396 0.14876366235528676
-0.20262011413158068 0.07079903990300677 0.06153356763716193 0.09057983345770884 0.07076631564724184 0.1317625775855039
-0.19078987215231394 0.06199231581124192 0.05159807285706208 0.08100663065447924 0.06346244189705204 0.1053145447544102
-0.18825154300708197 0.06867037470923867 0.05873835564134677 0.09731965170734735 0.0719597647959311 0.12299974634480514
-0.2002976845894517 0.07298129273539382 0.06777392786655585 0.09413320314020689 0.07588339200451753 0.1417103621152723
-0.1862698073007 0.06989483295615392 0.06737458445801876 0.10520864721506197 0.0772649781885838 0.15017479427685382
-0.1991484718954384 0.05353634284706036 0.052561205306090326 0.08537844735448123 0.05794252335353746 0.11073468291411681
-0.1862710472889814 0.05126754705129284 0.0510109681112829 0.0788887241802578 0.05507190606559105 0.10729753084117331
-0.18897136696730113 0.06762026424419863 0.049932874063853154 0.07778620437473766 0.06083970261357433 0.10614415087196977
-0.20579749935123143 0.059091669886552976 0.05116940016859107 0.07469446367691503 0.05728925620473198 0.11210358269548194
-0.1932745265740834 0.053763630901192454 0.049564720518804686 0.08339401193617882 0.0583284782300624 0.1110806320413557
-0.18756521524725245 0.06843501591960847 0.0578667234418627 0.08755120319026047 0.06541714729435051 0.12459560536793948
-0.18546037421265116 0.0549510281753249 0.053656129202183725 0.089947260879 0.06258619169483566 0.11571073257630655
-0.18186510468011677 0.05084899060892006 0.050551066024576964 0.07791143358217342 0.055137706533668916 0.09301837430562034
-0.1832494566526383 0.060878533970666344 0.05644978896109 0.08855917166132406 0.06575813440166649 0.11090206942724928
-0.1991624964837731 0.08389805500820043 0.06641814921959288 0.0891521875308944 0.07465061547890872 0.12932545827933392
-0.1878057727354853 0.06661261767854784 0.05513591803962569 0.07989845671227837 0.06231806133780155 0.10637227920525583
-0.18905572699769968 0.05952723720465491 0.053488176525860444 0.082963565357204 0.06044332940913741 0.11379480457391895
-0.1860166333229481 0.05392091054030232 0.051543664826685626 0.08931792209506957 0.05548759745389629 0.09971545207337151
-0.18516204167261144 0.054498726967483604 0.05342354753299008 0.08135004746731453 0.0595448529121248 0.10292692983836645
-0.19112891438371615 0.055556698252862614 0.04955028224826009 0.09502027844241023 0.059008153562335505 0.10322406251217464
-0.1898852720120985 0.0818901447329896 0.058144627784737696 0.08458344627257056 0.07031456317668114 0.11520236175457356
-0.1827399960123316 0.05046723924147364 0.04866028768597128 0.07982443237321285 0.0544372164010259 0.09992863850887593
-0.18064256110760035 0.053028636688959206 0.04710792298239019 0.07963149507627966 0.05819199406082492 0.10439781377982164
-0.19053430532264007 0.05512410682753198 0.05354888535129217 0.09956782373455313 0.06278911309266019 0.10664004428321823
-0.18248309645937752 0.04891109924254083 0.0492821001344573 0.08541058137111732 0.05455199794394008 0.10040596831118444
-0.19183198072070784 0.06853680865041906 0.05746761013690413 0.08404423369524125 0.0655786367625786 0.12296716571922786
-0.19039875492645345 0.06147137703331364 0.0546928659746691 0.0840689577107069 0.06492217350520192 0.11728581072390126
-0.19246631582992996 0.05017414566566366 0.04641330222176502 0.07933269580078439 0.05472640488581626 0.09992983756378963
-0.18588598077498597 0.07038924773540994 0.052011511554258455 0.07829581044728845 0.06524881520542564 0.11300236396174021
-0.1831445436064914 0.05157268815490313 0.0477090701809697 0.0750578713347825 0.05392974968459304 0.09941799651500877
-0.19332188586624324 0.05589149933198982 0.051286913635742 0.09181017365106356 0.057304305341077104 0.10781501044843947
-0.19059747769036917 0.07005651892515496 0.05931777406758302 0.08391348045854274 0.06801996989227016 0.12921078708767103
-0.19815443446148123 0.053351720007348204 0.049060961229539124 0.08514050823423555 0.05429995886603643 0.10032994890005227
-0.17866198992853144 0.06457402067747804 0.051363086992214875 0.08065591206491056 0.07266505296305266 0.11132907363138582
-0.1849303306470133 0.058145118875932364 0.04951175225705224 0.08046362049383934 0.05766465082431853 0.10033374466144246
-0.187311821672608 0.058319059693592065 0.06324752970681846 0.11771548459986259 0.0683818567421797 0.1299672603899857
-0.18908181547921005 0.051716107684956866 0.04676654540461454 0.07769715023745613 0.05404013569375687 0.09891187813507334
-0.19209059611850957 0.05882402648791141 0.05730244200551834 0.09069070113389346 0.06304591475290962 0.11477524398696917
-0.1882574961275503 0.06075634650077176 0.058345100100427684 0.08898757700862069 0.06662363466158785 0.1254520940779595
-0.1864673593597838 0.06235183524948838 0.060391232198620616 0.08695699930555553 0.07247171277676319 0.12596209649683043
-0.1768917394239181 0.05480601289855835 0.052861290984504115 0.10196441703001172 0.05684098205276057 0.10456980055638539
-0.18254608871801994 0.06333674775523047 0.05400714855987875 0.07575754415393358 0.058917333716207276 0.1081701078953638
-0.1871809209749082 0.05874081580760016 0.05677773916553205 0.08490374237126322 0.05668918616874378 0.11134894621711228
-0.20289682418539814 0.04976569557199512 0.05135077836843242 0.08086824150033964 0.05524656454841744 0.10499957595026119
-0.19049449625736023 0.04856153293079166 0.0509779066451867 0.10419836570411287 0.05209860689221629 0.09861460225242608
-0.1950911431148556 0.05729818957968382 0.053680889841276 0.07738885959319915 0.05992686487204867 0.10787898203095372
-0.18314627161343308 0.05151799925564575 0.04958847550380262 0.08693773545021971 0.054978268740074845 0.10095416187794966
-0.18530821842404033 0.060778902230921 0.049237063816254666 0.0759518203547041 0.05582353853586105 0.1030570246814225
-0.19349296084304263 0.05290801094153292 0.054066966273437995 0.08427252169367667 0.06242213682741933 0.11136469680192133
-0.19377823379021267 0.0629467605902506 0.053137629073330805 0.08090285295832957 0.06107347575902247 0.12500655499021618
-0.1847582290901183 0.05417679276334637 0.050660769426776345 0.07072542132143705 0.05699172449081013 0.10571381365103658
-0.18397965759602897 0.05549349354822148 0.04756495840963654 0.07763543449221247 0.05124592544778768 0.11055730627162888
-0.17857048778731036 0.04554662708024604 0.050105795407270455 0.0843993978699309 0.05210691542487669 0.10299024079041197
-0.19799459895190305 0.06061105291659262 0.05326341338465575 0.08188293105738882 0.061105703424543294 0.11409551568539815
-0.18810140107736786 0.05652130723682623 0.04790618279437712 0.0712053976846249 0.051667732075526294 0.09541899366674492
-0.19181815408630867 0.06795190091129634 0.054677937181757535 0.08333301593360273 0.06571229221398878 0.11268800087888708
-0.1890153323669172 0.05252090485884076 0.05066630901630168 0.07943162533640101 0.05754362259663104 0.10262191518771949
-0.19060812640594077 0.06927024381033203 0.06996998395848021 0.09599846135089549 0.08472036673867303 0.14918811428947829
-0.1855778767653199 0.054043118663965044 0.050944827791620004 0.09305031466811055 0.05724918011201132 0.10761357329324389
-0.18639648711134102 0.05559644384312027 0.04957895838814938 0.08009897266505482 0.05925338923826412 0.1117189713626293
-0.18142180600748445 0.04703604249481958 0.05612280238075603 0.10727665327039618 0.055251228312999806 0.10067560775076811
-0.1896566113990206 0.05225304979439156 0.05501854009464533 0.09629777619238883 0.06070930143401528 0.11268710306895109
+0.04807317403072505 0.05201331275264244 0.11013928560158447 0.1895457468552736 0.10213995235213001 0.06926768022491747
+0.05162586172078085 0.06881821450794115 0.12523666330484287 0.19756967664953168 0.09079203116130592 0.07372731977723972
+0.050254762871751395 0.07122840954305294 0.11335684677826505 0.18878579986964478 0.09283713858777375 0.06560664104026898
+0.06209785672390832 0.047189570024666304 0.10522077791310254 0.19404059213247965 0.08720257635611157 0.05431189002951307
+0.04551820604843571 0.05597075723034222 0.11843684704009147 0.20031242180478867 0.08280232078450885 0.06696814192680733
+0.05161595596019344 0.05663646490640864 0.10626471276091204 0.19481679751155115 0.07938914563656248 0.060511783354742305
+0.04939933568489195 0.045956568315813726 0.10596425461910049 0.19043400365185206 0.08681260623858823 0.054643760525130286
+0.04569260254056422 0.05124579100370079 0.10373310960096456 0.1933304238535609 0.08774960415066924 0.0640822410504174
+0.06966792968652627 0.08169049401892226 0.1652383616688669 0.2102863459900328 0.13906369098792434 0.09875759400469684
+0.05487992744000146 0.06766094922500944 0.1221370774129842 0.20160986668993408 0.08810880721903078 0.06721020534072446
+0.07396892059787841 0.057374658733934984 0.12433620626220025 0.18821829412786018 0.11418632195410412 0.06819368126896015
+0.052675409603188866 0.06591827070156334 0.11906606313207847 0.18435587188727545 0.09055565880984029 0.06699103010892347
+0.05225772341774337 0.06257834967493822 0.12581154171620276 0.19853884373951275 0.09630028308670092 0.07418757849089742
+0.05840184835897951 0.05441235421367879 0.11367973920607762 0.20227789986740974 0.09208312807135384 0.06353227842551443
+0.05424104290970294 0.0427273071574258 0.09555633249529352 0.18026563403746781 0.08463213374811632 0.05017375005367984
+0.05260981592471459 0.06374477417614224 0.1297600951904973 0.20175059993484315 0.09395226296316818 0.08568278852452642
+0.055167921524338234 0.04550335279019284 0.10303478954791122 0.1994723059311546 0.08329143527916895 0.058362413024771215
+0.051817052973928274 0.05216138653893812 0.11099875434418019 0.1973704381697258 0.09529668674678436 0.060042573616044016
+0.05811157918257847 0.07208528535611808 0.13454815920360658 0.20350764570099159 0.11297920624631999 0.07166055039573054
+0.06433643491532157 0.08636260966984592 0.1618227161358544 0.19519796483463253 0.12237563318445638 0.0891204072837025
+0.05100978219547711 0.05776972899612705 0.1317003419296667 0.1869779025687765 0.09728034670635821 0.07835631676541206
+0.04927400133256195 0.06233165503739729 0.11645965472355538 0.18910675165387725 0.09099415379341216 0.07798108533657727
+0.0459113760936936 0.05027298075632433 0.10543057466754704 0.1947032663449371 0.08399953273879111 0.06513762173778395
+0.04767225441718306 0.04322485136087224 0.10738789204196673 0.1866254737216298 0.07488516822700983 0.049381398160471185
+0.051691438278117244 0.05415608484431456 0.11776563289946515 0.18814707954280915 0.09760713814828761 0.0699404813272016
+0.049849942177789645 0.04561103312291225 0.10587231602269193 0.1815806071928004 0.07953816135249155 0.057508046667398095
+0.06609125832721749 0.06382973060532722 0.1385729122030582 0.20351999725986952 0.10888362577074318 0.07751024940369303
+0.062430290896663757 0.04708652981251478 0.10626264907481954 0.19491821404078863 0.09262863678355569 0.05999376107462948
+0.0533985932900166 0.05573876809936018 0.12008216881134907 0.19561644825461005 0.09601632974807087 0.06392107316715095
+0.053126863984053856 0.055837304680972005 0.14416495025161236 0.18992200982965496 0.10333229518438128 0.06800387571868619
+0.048830270903599614 0.048107621403728595 0.10267474797785289 0.20281573136726117 0.0830140625136125 0.05281964678611409
+0.04818733750535279 0.058571981523753466 0.12138126320055415 0.19840458944184705 0.09169954318096611 0.06536568751358277
+0.04955473964880471 0.06531300332781212 0.11961916377973017 0.20395013310438145 0.09360633663428906 0.07446156235016599
+0.05454131951908259 0.06189965527745826 0.11787904176293006 0.19384352386046544 0.09514464595146153 0.06844764768267514
+0.056634187018841625 0.048753016236135975 0.10028198044810463 0.19977866575430733 0.08015332129289415 0.05479662166784854
+0.05043819365725195 0.056297270750393986 0.11087310143760003 0.19423866603479112 0.09285920117601024 0.061585800901929985
+0.04936155000805112 0.05725058282012674 0.11989177621613112 0.19382673325651262 0.08693346964733964 0.07268887970310957
+0.044996852366842706 0.053140937048525586 0.10422504214999019 0.1859356447595195 0.08183292094342086 0.06030211190477755
+0.057165037595734776 0.06471333675878355 0.12040032998837244 0.1939263091498834 0.08606637584034021 0.07067546882754144
+0.0494294331017282 0.05665197370392707 0.11560444720822313 0.1934034621373332 0.08531109178920086 0.0696423571310296
+0.0514902037315359 0.04855853163564437 0.11606593193205358 0.1969155638915971 0.08580167019926345 0.059942602694387316
+0.052969879410771234 0.0471076447135073 0.10261063576010186 0.18923587361039756 0.08078708297851821 0.054509525032186125
+0.04697287881635561 0.05670908684829565 0.10372094798173409 0.1864749641630737 0.07716910391531817 0.06758544683214841
+0.057650805167361735 0.06818956772167103 0.15788760229943477 0.18555990142772702 0.10504737107760785 0.08728333688165815
+0.056707979795937814 0.054223828318334825 0.12771031004874991 0.18921159171466329 0.09950963238066066 0.06398905557978997
+0.054559695402619596 0.06419176140586196 0.1415335798819599 0.2040926002104698 0.11051920019643546 0.07373265569824203
+0.054526769572774525 0.05434914874514138 0.10760797846765198 0.201625318301649 0.09108272847397901 0.06478650627558317
+0.04629804191667071 0.044169801021281416 0.09183910215079003 0.19173282906884737 0.0696388846614175 0.057689419645910206
+0.04693220217240192 0.050695864641277705 0.10732121725587565 0.19091265062860785 0.08510440441996034 0.05802278385152599
+0.05676080830182423 0.059003203225596206 0.12975429882210915 0.18808135514562954 0.10816421991603507 0.0672093067316988
+0.05218003113998766 0.061055914283515325 0.10355151352893452 0.19108910380280503 0.08954830195638427 0.06215500502600005
+0.052814332277936825 0.050760558624007926 0.10997959859520004 0.18556296090127067 0.0870310146472698 0.06271445460875592
+0.06064033937661846 0.06551720184014803 0.15448949970880263 0.19838361207519092 0.11969214093013053 0.076819537707698
+0.04967347030690594 0.06270988829870246 0.12024418553365251 0.19469184364556658 0.08592580939250798 0.05987428127538525
+0.050649164657626033 0.052719261944393 0.10964453372738979 0.1781217412909973 0.087452286948438 0.06034108017376505
+0.051926790270014 0.05847315411186864 0.10399007096008075 0.1858601295879117 0.08744380886913802 0.06485481586833518
+0.05408307275538877 0.06428706852255878 0.14086603515869517 0.20173109180578652 0.09904978809165278 0.08294117154078179
+0.042385863782239075 0.05032151380374305 0.10789137155980774 0.18635728830336287 0.07757402051276092 0.06238841896747046
+0.05020098446358167 0.05418656242489987 0.1112361804186372 0.204006529539435 0.08747101928731542 0.05753975565011335
+0.045461536379865344 0.048226104999592116 0.10382252852780155 0.1933053632975488 0.08567303054630304 0.05330918509221679
+0.06241099245701968 0.052407572775896236 0.1132510284899499 0.19768893669101567 0.0913197479662808 0.06082801239182741
+0.056355975020830736 0.054536075492098615 0.11635086863202351 0.1913209201239267 0.09692288200771053 0.06922579121005187
+0.04964975986161388 0.05147650973764144 0.11071563798921549 0.19573948251029263 0.09034861436857294 0.06364948077613145
+0.046232604529881066 0.046092014391043844 0.09766973004031314 0.19412477676287143 0.07838055248005817 0.05705624464052863
+0.04990432136743105 0.05591514330891446 0.11693999441873533 0.20036740235903777 0.09329779500303062 0.06640732505089146
+0.05330223099797403 0.05850512128585191 0.12726689523308393 0.20071735018192244 0.09802264972671614 0.0661152004536019
+0.05603961847065132 0.057639977097845026 0.1345119487198216 0.19849591806535105 0.09199023441919167 0.06789457282228173
+0.05362142284624072 0.04773393613004446 0.1162288945150668 0.1999086618383249 0.0881654790402104 0.05908995967761163
+0.05270470668182587 0.05971803825328254 0.10472840387876418 0.19188580064890817 0.08514522269052859 0.06056647117041451
+0.05558362578148603 0.06158625072845778 0.1277378179554717 0.19721323789280892 0.1039041762705567 0.0698089673612913
+0.04746998351763762 0.05086456992344318 0.11638595944280915 0.18197747688778587 0.0960719711499606 0.06610193375799688
+0.055901283765563255 0.044250103028261184 0.10104523914798487 0.18853088393821982 0.08618315934835219 0.05814138512212533
+0.06317001048005136 0.05440893078631158 0.1127410092036717 0.20420472658313785 0.09157938541212812 0.06426230736066801
+0.04816945671859349 0.06826087269971874 0.13473926360311256 0.20358126869332824 0.09941859639029992 0.08189979191999854
+0.05425540313795881 0.04179245965698319 0.10077025581225058 0.19099232514324532 0.08368476640124402 0.05425940339501229
+0.04509331678631697 0.04273432708281684 0.10979687466669312 0.1930015840791241 0.08692392458945739 0.05852103340732905
+0.04802825493235939 0.051568317985358464 0.1036990035588812 0.19430262499264767 0.08311254934756843 0.05864308084250645
+0.06610763237493313 0.07794605318156014 0.16471760918260944 0.2137717381749123 0.12489761656725935 0.08682631987203028
+0.05006325375493333 0.06322780232158431 0.11650852826330474 0.19694094481749716 0.0874271938411044 0.0647061366438432
+0.0705539477265702 0.051275872231933084 0.11210769238841249 0.20165360477531374 0.0951366269218323 0.06373404981938759
+0.06527118525242835 0.0549311743659167 0.12207573299784855 0.19795458360914667 0.10241297694756164 0.06186831885592809
+0.05867733156781265 0.05786419831279545 0.11932588706212785 0.19635701819591658 0.10263850256059676 0.06895229097371113
+0.06546128346715244 0.07020534857225155 0.16782899659691583 0.1976409416933287 0.1253252950584918 0.08869793665880064
+0.05544557306460533 0.06321724709838235 0.13277606305175108 0.1978005197784024 0.10206093967255093 0.07876623533170239
+0.05301725464996647 0.0501257638796383 0.0983359678828772 0.19384388793427285 0.08063383756281506 0.060555352676039065
+0.053846061207807425 0.06667866720004861 0.1491989740762782 0.19417128183297921 0.10292114057992635 0.07868970710075292
+0.04751349299770514 0.04746126944279468 0.10167307192375769 0.20377742598059098 0.07861589495297182 0.05300251494901612
+0.04830087114952427 0.053879096580402526 0.12189887290882122 0.21242989729405695 0.08976173367805215 0.05825965640409058
+0.06198989487435147 0.06712280207909699 0.15734969080431171 0.20539136478366113 0.11803202617183468 0.08385510977330567
+0.05380869852655645 0.04604522068343617 0.10558134914890877 0.19998755841459076 0.08518608644684332 0.057766376153604374
+0.05733549949537818 0.06339636412102713 0.1324626318723951 0.19759681560643483 0.11021484970709843 0.07360655385902558
+0.056397616606864966 0.06699241456406206 0.13601666327312736 0.19489285826076008 0.10044562932399329 0.07120948445217319
+0.04782326947890045 0.058627239859744516 0.11203978390901773 0.19584651769696954 0.08713666985589039 0.0638054675142051
+0.04961162493190705 0.04426104564068481 0.10131801842594369 0.19167118712864895 0.08903734750145431 0.056489553399174
+0.048794743773119924 0.04654295365549246 0.10088116423317713 0.1899306575559907 0.0848358738324746 0.057305586399855356
+0.05654830716702932 0.056944538689765456 0.12070925005154254 0.19962272339673318 0.0960602736917696 0.06835480892376958
+0.05595177434894733 0.04535822021656936 0.10079766880550103 0.182141475349584 0.08285126506708715 0.05596213674690366
+0.06053736108189452 0.06692684199485621 0.11070162463995228 0.19834216979289465 0.10599890484287502 0.06747161342886691
+0.06214287166328933 0.07573119341611557 0.14583384720505438 0.20198677056789321 0.12111043496152106 0.08953633848544454
+0.045315581228355724 0.04313516851604737 0.10044869168689372 0.19543615128814285 0.08421558195239401 0.05442355677748059
+0.0638428333692322 0.05435889770339741 0.11923302825938663 0.2047137093705761 0.10162751472813736 0.06629300849878632
+0.04959137719829846 0.043936592051717814 0.09752576102432527 0.18064354443118452 0.0776265064157879 0.05148683700256475
+0.0524269673628422 0.05480813129154162 0.10897707632458002 0.1787780498476895 0.08018987243576073 0.057853089821190556
+0.0637188745590366 0.04921307948114535 0.11330619323497591 0.20848241162551814 0.09566593240759791 0.0627454828375526
+0.06270196571636417 0.06751670824717887 0.17079673194605294 0.1950675486328774 0.12344771863885431 0.10326321438333294
+0.04952020436517449 0.04893233148178942 0.11611311469883863 0.19848524506056076 0.08272954667858001 0.06901594880467235
+0.0453582577905381 0.04224664795089533 0.09652729693049943 0.18028712876486516 0.07729757344523981 0.05392851572070907
+0.05684621097338967 0.0661285034442562 0.14198248778657296 0.1992602889249841 0.10413159432893526 0.07069757816778814
+0.05703363088130162 0.07118664890384763 0.13091484560828645 0.19738460157337598 0.10644498126575941 0.07471682580088351
+0.04820827185735982 0.058812061475477 0.10676816703000228 0.202841831713089 0.08486174720987245 0.06661864616703495
+0.06602358170673898 0.06733734772199135 0.12536155787319045 0.18610738485516465 0.10034997516981899 0.07464951251792463
+0.0626872689710096 0.07268225075030496 0.15511105267884467 0.19850913049251517 0.1110327085252441 0.08508763751929127
+0.0664379605521927 0.06853921670284394 0.15075486526008644 0.19612658887154236 0.11018059434510187 0.07847293688766438
+0.05197318307804255 0.05151240771336763 0.1162950472152154 0.1977573323928584 0.0921541196171344 0.0662363520823282
+0.05061567328982827 0.053028150224558035 0.10993005258287074 0.1999565258894427 0.08460948992126648 0.062126893086798585
+0.04839345355063455 0.05531023233463067 0.11994765972981548 0.18595582315321074 0.0878611958261244 0.0676047107569039
+0.05281052874847278 0.05703828992268207 0.11319657120657306 0.18624609148040353 0.0828674264912492 0.06314338840535448
+0.05046837895448414 0.050959737533256264 0.1131443832754491 0.19999201238278574 0.08810856896360356 0.06093054639598623
+0.0538194576921918 0.0626939222141603 0.11846412231054734 0.19770572705758552 0.09840071335059343 0.06756183673919151
+0.05539783099508493 0.05663562547376958 0.12235465738453587 0.20262441826581734 0.10578585892462265 0.06714528314323481
+0.05083268742958137 0.05077850833546805 0.09853704803499626 0.192878506940154 0.08693445769519285 0.06028571554767918
+0.05853636423670556 0.05777081973054805 0.12240145720264634 0.19116349856615472 0.10154280584561955 0.07049267989865837
+0.059102080027418916 0.07163699409610262 0.134632904278158 0.18646178912752814 0.1076737189607172 0.08791256605349215
+0.04921317433668453 0.061339094864861284 0.10871633652325793 0.18959113989237691 0.0925582850430812 0.060506309305300626
+0.05443866412788945 0.0598469337614203 0.11507408959534765 0.19506810538287606 0.08589258365984254 0.06050832918276298
+0.056844952778352005 0.050466129407651626 0.09677455502684919 0.18158240781816282 0.08373139849397462 0.058517588573866054
+0.05044697381414868 0.05099792193455885 0.11005939440488509 0.20562113933441373 0.0806674882703361 0.06109655190203049
+0.058989133854823565 0.051936530842509376 0.10579256361556132 0.19859290330054674 0.0831712996281038 0.06432802793279854
+0.05364488153335406 0.06699956815963645 0.13230265441862285 0.20144335587366097 0.09960940657233992 0.07670577165413749
+0.04623093202146535 0.05200753617375461 0.11017913812427778 0.19782647796157032 0.08394957426714511 0.057176160369643445
+0.04812229797366241 0.051648218338572784 0.1006527537931363 0.19410831881181395 0.0852862960837212 0.05694518599970476
+0.06447258143665172 0.050213555838222304 0.10897869704100202 0.2065622760738071 0.09208594669743377 0.06408091716899113
+0.05269683053709032 0.04606007096187334 0.10558129588139212 0.19926035296041128 0.0869777313528021 0.06853761100687093
+0.05679423855207925 0.07293456352800237 0.1196707897117364 0.19840940587990136 0.10259357812434103 0.0687583548754021
+0.05195203842277646 0.05415670866540292 0.12398605524035296 0.19296337054917326 0.09711141396240659 0.07435095953626925
+0.04483372069673191 0.043471930248557326 0.10781915247933456 0.20686227789318923 0.0828368104880041 0.06463356905965134
+0.054272895207738765 0.06764614777111447 0.10908672007758398 0.19652407205554662 0.08037294806261552 0.06300546089706868
+0.050130005166421805 0.048873480465543725 0.09661122500655107 0.18781102450459836 0.07928029212857485 0.05877979912939129
+0.060071597068423695 0.05048148457310439 0.11952728798604569 0.19150753169026705 0.09513483581312776 0.06426630608876652
+0.05140137545514625 0.07157854317377851 0.1113498706381697 0.20711004971619987 0.09602890015075577 0.0751880968322611
+0.05596580243781476 0.047866512190832 0.10888084199199993 0.19643489385236285 0.09375440979534874 0.05616096989307679
+0.050089082891008704 0.059232610434357624 0.11326291444223745 0.18669521981838255 0.09309301982427588 0.07117900326571103
+0.04795690167218706 0.05516102076172866 0.11032956911137713 0.19595209541740366 0.08462533344281165 0.06050518551475842
+0.06739035864202628 0.05632098842237979 0.1297191869766179 0.19427009423802705 0.1049371959631244 0.0683151483146345
+0.04403497706072639 0.04377145594899654 0.10096834102720134 0.18305683822015528 0.08052432318596842 0.05975488123791471
+0.0538748993036519 0.054770691526477254 0.10969458734187275 0.1951340280488861 0.09621844582937462 0.0618623813613585
+0.05242874613705095 0.05619869654931709 0.13507807939283978 0.18709906323520392 0.10399824707159361 0.06943892656391253
+0.05752886185626782 0.0679704262126012 0.12775768794975204 0.1971472044270863 0.09861451283056069 0.07188157186602878
+0.06470671788779701 0.049684675187708485 0.10665939298149668 0.19681493315337184 0.09047081320255443 0.06078281237128691
+0.04735159948319753 0.05547508304253762 0.1106022123003161 0.18913425022187663 0.08488795169292278 0.06013697642986095
+0.051998857622686336 0.05461578502276898 0.1176174907589005 0.20019537223098743 0.09093794407173056 0.07016877114112764
+0.045390776472209717 0.04597136336287616 0.10153023651714617 0.19609307584634877 0.08268626996756182 0.056967099998948195
+0.06302096000368415 0.04450451691794874 0.09989354177067371 0.2048809301914596 0.08693174152104223 0.05862980263265707
+0.04817777091288575 0.04976637158437733 0.11081290420652373 0.18851012501509445 0.09020930733701486 0.06493433623996868
+0.05223743648258673 0.04697533671226019 0.10570841574961035 0.19027178863829985 0.0878568823005716 0.05738266182306776
+0.05100478813017286 0.059942570804833444 0.09972260802687366 0.19056202005657594 0.08145521803890436 0.057892591858737456
+0.05316216526826044 0.05212723043608432 0.11272949763916774 0.20052135147089573 0.0885639670702392 0.05898309048062649
+0.05225707589670262 0.05851477430992814 0.13184951041110862 0.1983940206150123 0.09473851442138265 0.07487221505636152
+0.04676042152795904 0.0546518922365568 0.11532430917895932 0.19632074397379098 0.07993524986305776 0.05900368914938904
+0.048033799248782275 0.05031802493179645 0.11289844023805863 0.19702520766248696 0.07899240073563266 0.06269984756189455
+0.05144996538135177 0.0476654641945988 0.11009473946212779 0.19217955659372893 0.08436621492938359 0.05734698540001564
+0.04824011904739797 0.059973467807930954 0.11196284108468668 0.1895418172285724 0.09062214533307966 0.07204965916053024
+0.044832833708782036 0.05337180516555491 0.09852801177654018 0.19212840905702935 0.07760156768094982 0.054161966489906954
+0.048004680351830795 0.06495123568977992 0.11505488349407104 0.18146917392240502 0.08431028356914039 0.06545373865241683
+0.0485665085324918 0.04538428270813575 0.10286321776581221 0.18374820099211778 0.08994532255969996 0.05728294017468363
+0.059842694661590444 0.07208519899951625 0.14200224918529852 0.21187882631936875 0.11687110383181372 0.08336260166479023
+0.05984196522557215 0.04939033175000203 0.11019817460460891 0.17991256356843396 0.08943535271902149 0.05813358184798195
+0.047138318245751175 0.05111120748667008 0.1158282711627828 0.18918443356858614 0.08653382992468821 0.06535728975765612
+0.06182882791854621 0.04593180558852109 0.10470760241508512 0.18450120257054317 0.09411752004305572 0.056964309230869765
+0.06379212255137008 0.0531186507874102 0.11722682500586497 0.20918573260852413 0.09197968357573029 0.06324513279033286
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_interval__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_interval__.tsv
new file mode 100644
index 00000000000..738af5cbbc1
--- /dev/null
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_interval__.tsv
@@ -0,0 +1,9 @@
+@CO shape:(6,)
+@CO dtype:float64
+VALUE_0
+0.10677894646633289
+0.10745924966496576
+0.11416073462035334
+0.11140567580903753
+0.11281129306348898
+0.10612247399422854
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_log__.tsv
deleted file mode 100644
index 3f852ad4835..00000000000
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_ard_u_log__.tsv
+++ /dev/null
@@ -1,9 +0,0 @@
-@CO shape:(6,)
-@CO dtype:float64
-VALUE_0
-0.11463823854989527
-0.10826701076665864
-0.10903574405122825
-0.10579556035870624
-0.10572930283949862
-0.11063798490431062
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_log_mean_bias_t.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_log_mean_bias_t.tsv
index da0eddcb123..cfc38e70b03 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_log_mean_bias_t.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_log_mean_bias_t.tsv
@@ -1,173 +1,173 @@
@CO shape:(170,)
@CO dtype:float64
VALUE_0
-0.022806930046789558
-0.021778392951392136
-0.020940240529716946
-0.018869890671745305
-0.02103434951031071
-0.019164791117997668
-0.019918496108084258
-0.019878784396986638
-0.03379864756629677
-0.022835797791581177
-0.022970793900663873
-0.02360511384878738
-0.023994164422216635
-0.022013422701462997
-0.01956249385634936
-0.02502866836936687
-0.02026173441327546
-0.022970995869423652
-0.027537050906123062
-0.030841728323121344
-0.02225214284711632
-0.019725158078077492
-0.020618417660459652
-0.01820310505730845
-0.022508309011844013
-0.019799073271950123
-0.028545630387617208
-0.01976968114072662
-0.022256990599845025
-0.024753739701735705
-0.018522268211449994
-0.021666022102996667
-0.022324579597526827
-0.02152588955077956
-0.01963626028345827
-0.019480139872783398
-0.022731095416384395
-0.01837508598105044
-0.021738100662027936
-0.019919593260974967
-0.01947965141669056
-0.01956838630313974
-0.01965837368559719
-0.027909143049265107
-0.024496370844225415
-0.024954304201249156
-0.020267540010940034
-0.01809982535583815
-0.02089488316151419
-0.02447546406232171
-0.018601063741131792
-0.021666671329923975
-0.02817756214198475
-0.021462805270885874
-0.01982535000715269
-0.020488534748040996
-0.02413321156704316
-0.019344265759991673
-0.022239063446922596
-0.020272774089021166
-0.02133331722206905
-0.022082093166272267
-0.02089466936641527
-0.01854828870236103
-0.020991089153930487
-0.0232303067014869
-0.02185135156134232
-0.020647013556179258
-0.0215118532421049
-0.0247803693417537
-0.022112401881814542
-0.01934052969215153
-0.02046787036554397
-0.02311987453488732
-0.01890532236670311
-0.01969066914369629
-0.020793123497761756
-0.0315417639344525
-0.021020320107320835
-0.022369769354341176
-0.02424604344000171
-0.02248291649602069
-0.029751744559332483
-0.024399564242218456
-0.018648456921560825
-0.025261625748720186
-0.019590282339303815
-0.021474656809985074
-0.02779912647582822
-0.020750184245689182
-0.025557090618151375
-0.024234064685508844
-0.020498875150431573
-0.018911762066374842
-0.018851992441470282
-0.022449983454738993
-0.01933633874621592
-0.02347699026583463
-0.029445113590961563
-0.01987862004875606
-0.022121523878249456
-0.017611602768033505
-0.01960702252539323
-0.022699915987945386
-0.02959257791247043
-0.02064558796323884
-0.016830412815980782
-0.026959454787005382
-0.02678440928269409
-0.021294335920308466
-0.024547933884532015
-0.02915269978467256
-0.028384870620013946
-0.021049553198303744
-0.019101895246436344
-0.021372694385649763
-0.019721884692105975
-0.019032482631741097
-0.02256329505255343
-0.023235087069212262
-0.019697455835903016
-0.023628132761993006
-0.026060438029575306
-0.023469006884871673
-0.021546619845964104
-0.019490459590576617
-0.020064457310591716
-0.019780811212354536
-0.023745599640793945
-0.020747098292447863
-0.019899655989644792
-0.021607750071894596
-0.020606716243402
-0.022295263318789147
-0.02300012223334802
-0.019937434757381155
-0.02093408791222161
-0.019530161237315897
-0.020496604003795077
-0.02276068882535396
-0.021549301402339963
-0.02155101205859605
-0.020263535872867448
-0.027398375296936603
-0.018845895665284346
-0.024665045550076665
-0.02444461193784235
-0.02489475651677146
-0.020017201085681686
-0.019683517497830007
-0.021919963260257483
-0.0200869396525893
-0.018695743650280056
-0.020962758761263866
-0.019794402559861358
-0.020139522165734274
-0.021400527354367555
-0.023821280539440354
-0.019697131338026298
-0.019345482859980227
-0.02076815794212753
-0.021859300534878542
-0.017284111475294153
-0.02146204750807673
-0.021260630730722846
-0.02612978504601397
-0.020587287784649768
-0.01858203446756825
-0.01915315854090737
-0.022903341450912683
+0.021395047779801685
+0.023196158991218147
+0.021068903610229246
+0.01978516391194787
+0.021653329047007654
+0.02058725377387484
+0.01912348533469345
+0.0191636856149132
+0.03195505749721843
+0.021835632785217662
+0.023237443226275738
+0.022324206267130293
+0.023173160656079973
+0.022041287347459058
+0.016980481580392986
+0.022574864573911863
+0.02037860002018851
+0.02068493163523971
+0.026470011721982545
+0.029356563519191168
+0.020184681172859313
+0.0208878097528607
+0.019065970353904088
+0.018160519198723624
+0.02259419686161598
+0.0203915487341907
+0.02784111584345066
+0.022853007218877168
+0.023046687283255665
+0.024442236840167948
+0.017898574315255558
+0.02372196745728078
+0.020795013424010796
+0.021967102309728523
+0.020129071977419685
+0.021257146348975294
+0.021541882192824012
+0.01821978790439915
+0.021065077436527333
+0.02128931499930126
+0.020296900418483296
+0.020599598783715152
+0.018842417102395235
+0.027332115360198184
+0.026597543562752526
+0.027104875556315078
+0.020767290235302806
+0.017295157134283146
+0.019689540829403003
+0.025709944841236655
+0.020663069096182398
+0.02094216114503318
+0.02855101215795335
+0.02226494701915265
+0.019924041686438295
+0.019029897694555646
+0.02447346572831715
+0.020674271354819616
+0.021146002608332905
+0.01903523325753961
+0.021527448753828362
+0.023613524874680065
+0.021938129186924293
+0.019131610422873115
+0.022008750851010058
+0.022935039176969953
+0.02248628481175795
+0.021778541298727656
+0.022025088727290358
+0.025029277704172872
+0.022907195703182514
+0.018776699136991006
+0.02232824041083605
+0.02366236622864197
+0.018439722342561034
+0.019284869180641453
+0.02026124020408443
+0.029800558359584832
+0.02089206156784401
+0.0217706306293045
+0.024069011097532293
+0.022762593303430945
+0.0322813474518412
+0.024347946237245052
+0.01897228111543537
+0.025913474345298945
+0.020636052316614747
+0.021201595749667936
+0.02991306819611879
+0.02026221287281129
+0.024029207325046854
+0.02413068217494761
+0.02124606923976795
+0.020246786233571817
+0.02060472394854245
+0.023578724521194663
+0.020383251402692492
+0.02269471544287572
+0.027884366881962035
+0.019456704853793527
+0.024729042154958223
+0.01847940567199558
+0.019770747206418977
+0.022524298628029803
+0.032032353424221435
+0.021244668848906988
+0.01784515388577697
+0.025266026703046143
+0.026007367647472468
+0.02125768679885038
+0.024477726676704125
+0.03076157336709609
+0.02915898450654542
+0.022895517705444894
+0.020912493846076304
+0.02026194590757173
+0.021337799392377867
+0.020178517042537834
+0.024030926621710625
+0.024336770468685053
+0.01952086338212743
+0.024255064383333646
+0.02466916949972246
+0.022165392717037765
+0.021719881876994807
+0.018351513738842317
+0.019449797012444498
+0.019712640241031736
+0.02386602127686421
+0.019902996412130475
+0.019295938120198104
+0.020524447516619634
+0.02019355391265716
+0.024123359970184572
+0.02290405994144754
+0.01967479671053673
+0.0200530331908005
+0.017301080242003223
+0.0212387879621503
+0.023657733542055973
+0.020569778335125678
+0.0221371703332162
+0.01889437052629881
+0.025005922982137788
+0.020931687549699204
+0.022649907966080466
+0.025385690961819495
+0.02529923078638084
+0.021134211204862433
+0.02010771962484701
+0.021736959293379415
+0.01941056195248508
+0.020266011062541042
+0.020812600437015685
+0.01982751584157018
+0.01931966322531075
+0.02128783376763081
+0.02436038011687864
+0.019956313253224844
+0.018443037495941908
+0.021425162711152707
+0.020617958847231856
+0.017407425831691935
+0.020719161925616715
+0.0207658407916024
+0.026738372986797803
+0.02064003303447708
+0.019257178242045942
+0.019480058918356715
+0.023710278010089823
diff --git a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_psi_t_log__.tsv b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_psi_t_log__.tsv
index ac7fdfe96d0..692a2975b32 100644
--- a/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_psi_t_log__.tsv
+++ b/src/test/resources/org/broadinstitute/hellbender/tools/copynumber/gcnv-numerical-accuracy/shard_0-model/std_psi_t_log__.tsv
@@ -1,173 +1,173 @@
@CO shape:(170,)
@CO dtype:float64
VALUE_0
-0.7720230850327123
-0.697166728658097
-0.7847974243061422
-0.8253380007127161
-0.9334279288237071
-1.0321250671017763
-0.9791284394392797
-0.9252520231672539
-0.38169143443616627
-0.6705357014121687
-0.6266127063407134
-0.7011411300256046
-0.6851215322141866
-0.7080319594541422
-0.9025932014928516
-0.6658485136950354
-0.9440406064757607
-0.6093630424050356
-0.5199411334291777
-0.40050982723368156
-0.7397023671241776
-0.8886600767629201
-0.8147210812638076
-1.0012269059657317
-0.6606805111763264
-0.8472429088443612
-0.4824757420833945
-0.8875211037694619
-0.8354556694073421
-0.6846595325405288
-0.956304741492602
-0.7261329168531295
-0.6615725194542119
-0.6648004015368172
-0.9558761205028897
-0.958053011486038
-0.6940558430889912
-0.8998640407210685
-0.8274684182281102
-0.6833049745008192
-0.8474474481720853
-0.8388341196909475
-0.9834458151041235
-0.4785546801974222
-0.6189155840223274
-0.583721620874378
-0.7127137583097685
-1.0307600923576827
-0.8485461747853983
-0.6234696119182562
-0.849863231172163
-0.8476143490096246
-0.4336836652072322
-0.8686435113874182
-0.8208419198485154
-0.9503885062643795
-0.5897742842800805
-0.9835250694818463
-0.8141820610271097
-0.9119466947127494
-0.7094084822363811
-0.6527989754846648
-0.790260400311367
-0.902733306310399
-0.7882408911701726
-0.6457724553634006
-0.5730934529788316
-0.8121337611436288
-0.7764356214083572
-0.6038769247654081
-0.8063460860474015
-0.9670164579450581
-0.7071958273444173
-0.7838158995678174
-0.9181482900871596
-0.9814288312425101
-0.8222183357130339
-0.425355248239185
-0.9517027293545204
-0.6877193697101549
-0.5629157938009981
-0.5929235316201721
-0.43947440079424877
-0.5714137428062142
-0.8869521045103709
-0.582072635897106
-0.8950427339458307
-0.7551249870207213
-0.44915416340639264
-0.818667133067161
-0.5104308120784237
-0.6909065789833304
-0.7348587818159819
-0.9016467054455849
-0.8636122684585693
-0.6186029986835707
-0.8467294928298005
-0.7614957536668747
-0.4246426349223689
-1.0283926895495972
-0.6247225814165434
-1.0473678797802486
-0.8122333487825576
-0.7448824545529101
-0.4536038779565419
-0.742186385579328
-0.8920930819261127
-0.5348489164832992
-0.5665888803295172
-0.6832529785348227
-0.5575942452373596
-0.5064984292146368
-0.4447576002110088
-0.8114776686463534
-0.8196638136327126
-0.9619918399832583
-0.9058508895304722
-0.7589520411846568
-0.6425755326503156
-0.5822844997245168
-0.7631314391472915
-0.5963342528796944
-0.559417132800409
-0.8339136453529742
-0.5772581521560621
-0.744824755830368
-0.8603055974639975
-0.7898433537752614
-0.7719952467958902
-0.8600856620478174
-1.0347797295956267
-0.6638935650483897
-0.9778277511058738
-0.6505180655409761
-0.7879951063428713
-0.8747990302577259
-0.8053278120658792
-0.9922657254192403
-0.6906446433493612
-0.6592298387887859
-0.82253058963178
-0.8616239475175913
-0.8828858694109936
-0.5293729363781957
-1.0197921524962488
-0.7187214982898041
-0.6848768581909672
-0.6224433347782029
-0.7236212572505689
-0.832432509799131
-0.6603548525206356
-1.0313030971642623
-0.927406770483858
-0.781649457994709
-0.8035176611168794
-1.01926147875353
-0.7461896843081335
-0.6734432257078913
-1.0057686547585254
-0.8608624040824749
-1.007697089128568
-0.7957212969045607
-0.9140246998066139
-0.6915062958294734
-0.8371444855950696
-0.4346558083820003
-0.7073987197833758
-0.8464428597411937
-0.7623091433533724
-0.6319392713932338
+0.8438615244012413
+0.7210627195930697
+0.8139973975760546
+0.8203255468703624
+1.0200907926993408
+0.9998663890703645
+0.9474924248116621
+0.9564106387346668
+0.3670279439968553
+0.6908273309980235
+0.6042152855699009
+0.717324307606925
+0.6952154683194607
+0.7346163513330658
+0.9061736600944535
+0.6144125530976344
+0.9690253230650332
+0.5831817119266935
+0.5084401483513474
+0.41273954521240463
+0.6824277160244443
+0.8726656330436757
+0.8260439562110768
+0.9933327666455776
+0.6747321190697662
+0.8344421936746336
+0.4702989245319953
+0.8140043458745208
+0.8354281708130183
+0.6511204783210063
+0.9464179211723242
+0.7357222980718476
+0.6320543500360284
+0.6782876709307338
+0.9145714506452918
+0.928440147652216
+0.7119252733519361
+0.9223415280030453
+0.7784747346558746
+0.7109842327549235
+0.8223995585935439
+0.8963350614292227
+1.0578260539306088
+0.46537292724894186
+0.609124901308216
+0.5764108941228375
+0.7172256977504518
+1.009914052043772
+0.890869046271923
+0.6386737791569266
+0.842289758731309
+0.8366380509381333
+0.4645366174337857
+0.8207422604490546
+0.8401762964835323
+0.9644405465616182
+0.5836360441565753
+0.9853939010325006
+0.825353912612218
+0.8856999681366463
+0.7259283250885082
+0.6418354667750721
+0.7775976570713735
+0.9628778596808323
+0.7891741602460719
+0.621433327923997
+0.5918185289532881
+0.7941504729007147
+0.758672440967949
+0.5715642136101291
+0.8251792270546039
+0.9468012199973836
+0.7844977201936705
+0.7823948117407835
+0.9527325165067436
+0.9841660884606876
+0.8317515311801054
+0.4206507644645686
+0.9987144575122113
+0.7343498445608518
+0.6032902706774005
+0.5712675233824469
+0.4478045741960054
+0.6080307741529526
+0.9000667140739997
+0.530326315370262
+0.9270104513980757
+0.7573239771121031
+0.4468705917976592
+0.7807534949317702
+0.49298883216606204
+0.6712748664603709
+0.7370949789106859
+0.9221947796810879
+0.880806515655763
+0.5674484135504096
+0.8769451886193662
+0.7706188058014407
+0.4148752660567253
+1.0169174712317355
+0.6151556781154293
+1.0425253277724393
+0.7891862497203892
+0.7205780274271373
+0.4930190146149072
+0.7776714727322832
+0.8882978102415726
+0.5676957884753069
+0.5544172392736197
+0.7191785772839061
+0.5334285377018029
+0.4561138194491935
+0.4239814304018578
+0.7555208337122366
+0.8410520867259579
+0.9661359884230885
+0.8647529797244572
+0.7455103839054329
+0.6423226894653906
+0.57362974721395
+0.7454841320773917
+0.6092025583287111
+0.5617608464884061
+0.8737186000296381
+0.5757693654505931
+0.7606456859048834
+0.8976207190100605
+0.7593198474865356
+0.7863105839490174
+0.8514801918670898
+0.9630176307407696
+0.6753322373777825
+0.9454703621707825
+0.5957850148222376
+0.7907986674624145
+0.904114625104561
+0.8045957388909524
+0.9992102235902048
+0.7140643047280553
+0.6426364466440851
+0.8369925467845495
+0.8325451980376755
+0.9562458797000845
+0.592186954920778
+0.9517535590088464
+0.6625910791419144
+0.7242288643642601
+0.6491754406048182
+0.7638019639947387
+0.8835806191072954
+0.7068682452964151
+1.0284289118820298
+0.9242477626807513
+0.7852247589597435
+0.830750024527792
+0.9785516483940011
+0.7504229320802941
+0.7370301386065057
+0.9461653314240317
+0.899102715902615
+1.0350820971886814
+0.7822317850569502
+0.988089693969646
+0.7399733801283573
+0.916988910182282
+0.46048111088345756
+0.7030050583433024
+0.847019939552894
+0.7702774755162272
+0.5842855862891158