public abstract class MergeableMetricBase
extends htsjdk.samtools.metrics.MetricBase
MergeByAdding
). It also provides an interface
for calculating derived fields calculateDerivedFields()
(and an annotation that informs that said fields are derived NoMergingIsDerived
). Finally, it also allows for an annotation
that suggests that a field will be used as an ID and thus merging will simply ensure that these fields are equal MergeByAssertEquals
. Other annotations are available,
though they all currently imply that no MergingIsManual
and NoMergingKeepsValue
.
MergeByAdding
is only enabled for the following types: int, Integer, float, Float, double, Double, short, Short, long, Long, byte, Byte.
Overflow will be detected (for the short, and byte types) and an exception thrown.
Every (non-static) field in this class MergeByAdding
,
MergeByAssertEquals
, NoMergingIsDerived
, MergingIsManual
, NoMergingKeepsValue
.
Static fields may be annotated, but not with MergeByAdding
, there will be no automatic modification of static fields
MergeByAdding
MergeByAssertEquals
NoMergingIsDerived
MergingIsManual
NoMergingKeepsValue
Modifier and Type | Class and Description |
---|---|
protected static interface |
MergeableMetricBase.MergeByAdding
Metrics whose values can be merged by adding.
|
protected static interface |
MergeableMetricBase.MergeByAssertEquals
Metrics whose values should be equal when merging.
|
protected static interface |
MergeableMetricBase.MergingIsManual
Metrics that are merged manually in the
merge(MergeableMetricBase) ()}. |
protected static interface |
MergeableMetricBase.NoMergingIsDerived
Metrics that are not merged, but are subsequently derived from other metrics, for example by
calculateDerivedFields() . |
protected static interface |
MergeableMetricBase.NoMergingKeepsValue
Metrics that are not merged.
|
Constructor and Description |
---|
MergeableMetricBase() |
Modifier and Type | Method and Description |
---|---|
void |
calculateDerivedFields()
Placeholder method that will calculate the derived fields from the other ones.
|
boolean |
canMerge(MergeableMetricBase other)
Checks if this instance can be merged with another
Other must have all the fields that this instance has, and
the fields that are annotated as MergeByAssertEquals must contain the same value
|
MergeableMetricBase |
merge(java.util.Collection<? extends MergeableMetricBase> many)
for a collection of MergeableMetricBase, merge them all into "this" one.
|
MergeableMetricBase |
merge(MergeableMetricBase other)
Merge another metric into this one
|
boolean |
mergeIfCan(MergeableMetricBase other)
Merges another MergableMetricBase if possible
|
public boolean canMerge(MergeableMetricBase other)
other
- metric that will be merged into this one.public boolean mergeIfCan(MergeableMetricBase other)
other
- another MergableMetricBase instance to merge, must of the same class as this.public MergeableMetricBase merge(java.util.Collection<? extends MergeableMetricBase> many)
many
- a Collection of MergeableMetricBasepublic MergeableMetricBase merge(MergeableMetricBase other)
other
- metric to merge into this one.public void calculateDerivedFields()
NoMergingKeepsValue
.