Package picard.analysis

## Class TheoreticalSensitivity

- java.lang.Object
- - picard.analysis.TheoreticalSensitivity

-     public class TheoreticalSensitivity
      extends Object

  Created by David Benjamin on 5/13/15.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `TheoreticalSensitivity.RouletteWheel` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TheoreticalSensitivity()` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static List<TheoreticalSensitivityMetrics>` | `calculateSensitivities​(int simulationSize, htsjdk.samtools.util.Histogram<Integer> depthHistogram, htsjdk.samtools.util.Histogram<Integer> baseQHistogram, List<Double> alleleFractions)` | This is a utility function to calculate the metrics specific to running theoretical sensitivity over several different allele fractions.
    `static List<ArrayList<Double>>` | `hetAltDepthDistribution​(int N)` |
    `static double` | `hetSNPSensitivity​(double[] depthDistribution, double[] qualityDistribution, int sampleSize, double logOddsThreshold)` |
    `static double` | `hetSNPSensitivity​(double[] depthDistribution, double[] qualityDistribution, int sampleSize, double logOddsThreshold, boolean withLogging)` |
    `static double[]` | `normalizeHistogram​(htsjdk.samtools.util.Histogram<Integer> histogram)` |
    `static List<ArrayList<Double>>` | `proportionsAboveThresholds​(List<ArrayList<Integer>> lists, List<Double> thresholds)` |
    `static double` | `sensitivityAtConstantDepth​(int depth, htsjdk.samtools.util.Histogram<Integer> qualityHistogram, double logOddsThreshold, int sampleSize, double alleleFraction, long randomSeed)` | Calculates the theoretical sensitivity with a given Phred-scaled quality score distribution at a constant depth.
    `static double` | `theoreticalSensitivity​(htsjdk.samtools.util.Histogram<Integer> depthHistogram, htsjdk.samtools.util.Histogram<Integer> qualityHistogram, int sampleSize, double logOddsThreshold, double alleleFraction)` | Calculates the theoretical sensitivity with a given Phred-scaled quality score distribution and depth distribution.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### TheoreticalSensitivity

          public TheoreticalSensitivity()

  - ### Method Detail

    - #### hetSNPSensitivity

          public static double hetSNPSensitivity​(double[] depthDistribution,
                                                 double[] qualityDistribution,
                                                 int sampleSize,
                                                 double logOddsThreshold)

      Parameters:
        `depthDistribution` - the probability of depth n is depthDistribution[n] for n = 0, 1. . . N - 1
        `qualityDistribution` - the probability of quality q is qualityDistribution[q] for q = 0, 1. . . Q
        `sampleSize` - sample size is the number of random sums of quality scores for each m
        `logOddsThreshold` - is the log_10 of the likelihood ratio required to call a SNP, for example 5 if the variant likelihood must be 10^5 times greater

    - #### hetSNPSensitivity

          public static double hetSNPSensitivity​(double[] depthDistribution,
                                                 double[] qualityDistribution,
                                                 int sampleSize,
                                                 double logOddsThreshold,
                                                 boolean withLogging)

      Parameters:
        `depthDistribution` - the probability of depth n is depthDistribution[n] for n = 0, 1. . . N - 1
        `qualityDistribution` - the probability of quality q is qualityDistribution[q] for q = 0, 1. . . Q
        `sampleSize` - sample size is the number of random sums of quality scores for each m
        `logOddsThreshold` - is the log_10 of the likelihood ratio required to call a SNP, for example 5 if the variant likelihood must be 10^5 times greater.
        `withLogging` - true to output log messages, false otherwise.

    - #### proportionsAboveThresholds

          public static List<ArrayList<Double>> proportionsAboveThresholds​(List<ArrayList<Integer>> lists,
                                                                           List<Double> thresholds)

    - #### hetAltDepthDistribution

          public static List<ArrayList<Double>> hetAltDepthDistribution​(int N)

    - #### normalizeHistogram

          public static double[] normalizeHistogram​(htsjdk.samtools.util.Histogram<Integer> histogram)

    - #### sensitivityAtConstantDepth

          public static double sensitivityAtConstantDepth​(int depth,
                                                          htsjdk.samtools.util.Histogram<Integer> qualityHistogram,
                                                          double logOddsThreshold,
                                                          int sampleSize,
                                                          double alleleFraction,
                                                          long randomSeed)

      Calculates the theoretical sensitivity with a given Phred-scaled quality score distribution at a constant depth.
      Parameters:
        `depth` - Depth to compute sensitivity at
        `qualityHistogram` - Phred-scaled quality score histogram
        `logOddsThreshold` - Log odd threshold necessary for variant to be called
        `sampleSize` - sampleSize is the total number of simulations to run
        `alleleFraction` - the allele fraction to evaluate sensitivity at
        `randomSeed` - random number seed to use for random number generator
      Returns:
        Theoretical sensitivity for the given arguments at a constant depth.

    - #### theoreticalSensitivity

          public static double theoreticalSensitivity​(htsjdk.samtools.util.Histogram<Integer> depthHistogram,
                                                      htsjdk.samtools.util.Histogram<Integer> qualityHistogram,
                                                      int sampleSize,
                                                      double logOddsThreshold,
                                                      double alleleFraction)

      Calculates the theoretical sensitivity with a given Phred-scaled quality score distribution and depth distribution.
      Parameters:
        `depthHistogram` - Depth histogram to compute theoretical sensitivity over
        `qualityHistogram` - Phred-scaled quality score histogram
        `sampleSize` - the total number of simulations to run
        `logOddsThreshold` - Log odds threshold necessary for variant to be called
        `alleleFraction` - the allele fraction to evaluate sensitivity at
      Returns:
        Theoretical sensitivity for the given arguments over a particular depth distribution.

    - #### calculateSensitivities

          public static List<TheoreticalSensitivityMetrics> calculateSensitivities​(int simulationSize,
                                                                                   htsjdk.samtools.util.Histogram<Integer> depthHistogram,
                                                                                   htsjdk.samtools.util.Histogram<Integer> baseQHistogram,
                                                                                   List<Double> alleleFractions)

      This is a utility function to calculate the metrics specific to running theoretical sensitivity over several different allele fractions.
      Parameters:
        `simulationSize` - Number of simulations to run at each depth.
        `depthHistogram` - Histogram of depth distribution.
        `baseQHistogram` - Histogram of Phred-scaled quality scores.
        `alleleFractions` - List of allele fractions to measure theoretical sensitivity over.