# Enum Class IntervalListScatterMode

java.lang.Object
java.lang.Enum<IntervalListScatterMode>
picard.util.IntervalList.IntervalListScatterMode

All Implemented Interfaces:
  `Serializable, Comparable<IntervalListScatterMode>, Constable, org.broadinstitute.barclay.argparser.CommandLineParser.ClpEnum`

public enum IntervalListScatterMode extends Enum<IntervalListScatterMode> implements org.broadinstitute.barclay.argparser.CommandLineParser.ClpEnum
An enum to control the creation of the various IntervalListScatter objects

## Nested Class Summary

### Nested classes/interfaces inherited from class Enum

`Enum.EnumDesc<E>`

## Enum Constant Summary

Enum Constants
Enum Constant
Description
`BALANCING_WITHOUT_INTERVAL_SUBDIVISION`
A scatter approach that differs from `INTERVAL_SUBDIVISION` in a few ways.
`BALANCING_WITHOUT_INTERVAL_SUBDIVISION_WITH_OVERFLOW`
A scatter approach that differs from `BALANCING_WITHOUT_INTERVAL_SUBDIVISION`.
`INTERVAL_COUNT`
A scatter by interval **count** which attempts to fill each resulting interval list with the same number of intervals, disregarding the base count.
`INTERVAL_COUNT_WITH_DISTRIBUTED_REMAINDER`
A scatter by interval **count** which attempts to fill each resulting interval list with approximately equal numbers of intervals, disregarding the base count.
`INTERVAL_SUBDIVISION`
A simple scatter approach in which all output intervals have size equal to the total base count of the source list divide by the scatter count (except for possible variance in the final interval list).

## Method Summary

Modifier and Type
Method
Description
`String`
`getHelpDoc()`
`IntervalListScatterer`
`make()`
Create the scatterer
`static IntervalListScatterMode`
`valueOf(String name)`
Returns the enum constant of this class with the specified name.
`static IntervalListScatterMode[]`
`values()`
Returns an array containing the constants of this enum class, in the order they are declared.

### Methods inherited from class Enum

`clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

### Methods inherited from class Object

`getClass, notify, notifyAll, wait, wait, wait`

## Enum Constant Details

### INTERVAL_SUBDIVISION

public static final IntervalListScatterMode INTERVAL_SUBDIVISION
A simple scatter approach in which all output intervals have size equal to the total base count of the source list divide by the scatter count (except for possible variance in the final interval list).

### BALANCING_WITHOUT_INTERVAL_SUBDIVISION

public static final IntervalListScatterMode BALANCING_WITHOUT_INTERVAL_SUBDIVISION
A scatter approach that differs from `INTERVAL_SUBDIVISION` in a few ways.

1. No interval will be subdivided, and consequently, the requested scatter count is an upper bound of scatter count, not a guarantee as to how many `IntervalList`s will be produced (e.g., if scatterCount = 10 but there is only one input interval, only 1 interval list will be emitted).
2. When an interval would otherwise be split, it is instead deferred to the next scatter list.
3. The "target width" of each scatter list may be wider than what is computed for INTERVAL_SUBDIVISION. Specifically, if the widest interval in the source interval list is larger than what would otherwise be the target width, that interval's width is used.
   The reasoning for this is that this approach produces more consistently-sized interval lists, which is one of the objectives of scattering.

### BALANCING_WITHOUT_INTERVAL_SUBDIVISION_WITH_OVERFLOW

public static final IntervalListScatterMode BALANCING_WITHOUT_INTERVAL_SUBDIVISION_WITH_OVERFLOW
A scatter approach that differs from `BALANCING_WITHOUT_INTERVAL_SUBDIVISION`.

1. We try to balance the number of unique bases in each interval list by estimating the remaining interval lists sizes. This is computed from the total number of unique bases and the bases we have consumed. This means that the interval list with the most number of unique bases is at most the ideal split length larger than the smallest interval list (unique # of bases).

### INTERVAL_COUNT

public static final IntervalListScatterMode INTERVAL_COUNT
A scatter by interval **count** which attempts to fill each resulting interval list with the same number of intervals, disregarding the base count. This approach can be useful for tools that operate on the interval level rather than the base level, for example CNV calling.

### INTERVAL_COUNT_WITH_DISTRIBUTED_REMAINDER

public static final IntervalListScatterMode INTERVAL_COUNT_WITH_DISTRIBUTED_REMAINDER
A scatter by interval **count** which attempts to fill each resulting interval list with approximately equal numbers of intervals, disregarding the base count. This approach distributes the remainder intervals across the initial interval lists. This is the preferred mode for whole genome joint calling and other scenarios where the interval list to be split contains a large number of intervals that should be distributed equally by count.

## Method Details

### values

public static IntervalListScatterMode[] values()
Returns an array containing the constants of this enum class, in the order they are declared.

Returns:
  an array containing the constants of this enum class, in the order they are declared

### valueOf

public static IntervalListScatterMode valueOf(String name)
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)

Parameters:
  `name` - the name of the enum constant to be returned.
Returns:
  the enum constant with the specified name
Throws:
  `IllegalArgumentException` - if this enum class has no constant with the specified name
  `NullPointerException` - if the argument is null

### getHelpDoc

public String getHelpDoc()

Specified by:
  `getHelpDoc` in interface `org.broadinstitute.barclay.argparser.CommandLineParser.ClpEnum`

### make

public IntervalListScatterer make()
Create the scatterer

Returns:
  a newly minted Scatterer