Class BCF2FieldEncoder

    • Method Detail

      • getField

        public final String getField()
      • writeFieldKey

        public final void writeFieldKey​(BCF2Encoder encoder)
                                 throws IOException
        Write the field key (dictionary offset and type) into the BCF2Encoder stream
        Parameters:
        encoder - where we write our dictionary offset
        Throws:
        IOException
      • hasConstantNumElements

        public boolean hasConstantNumElements()
        Returns:
        True if this field has a constant, fixed number of elements (such as 1 for an atomic integer)
      • hasValueDeterminedNumElements

        public boolean hasValueDeterminedNumElements()
        Returns:
        True if the only way to determine how many elements this field contains is by inspecting the actual value directly, such as when the number of elements is a variable length list per site or per genotype.
      • hasContextDeterminedNumElements

        public boolean hasContextDeterminedNumElements()
        Returns:
        True if this field has a non-fixed number of elements that depends only on the properties of the current VariantContext, such as one value per Allele or per genotype configuration.
      • numElements

        public int numElements()
        Returns:
        the number of elements, assuming this field has a constant number of elements.
      • numElements

        public int numElements​(Object value)
        Returns:
        the number of elements by looking at the actual value provided
      • numElements

        public int numElements​(VariantContext vc)
        Returns:
        the number of elements, assuming this field has context-determined number of elements.
      • numElements

        public final int numElements​(VariantContext vc,
                                     Object value)
        A convenience access for the number of elements.
        Parameters:
        vc -
        value -
        Returns:
        the number of encoded elements, either from the fixed number it has, from the VC, or from the value itself.
      • numElementsFromValue

        protected int numElementsFromValue​(Object value)
        Given a value, return the number of elements we will encode for it. Assumes the value is encoded as a List
        Parameters:
        value -
        Returns:
        the number of elements we will encode for {@param value}.
      • isStaticallyTyped

        public final boolean isStaticallyTyped()
        Is the BCF2 type of this field static, or does it have to be determine from the actual field value itself?
        Returns:
        true if the field is static
      • isDynamicallyTyped

        public final boolean isDynamicallyTyped()
        Is the BCF2 type of this field static, or does it have to be determine from the actual field value itself?
        Returns:
        true if the field is not static
      • getType

        public final BCF2Type getType​(Object value)
        Get the BCF2 type for this field, either from the static type of the field itself or by inspecting the value itself.
        Returns:
        the BCF2 type for this field
      • getStaticType

        public final BCF2Type getStaticType()
      • encodeValue

        public abstract void encodeValue​(BCF2Encoder encoder,
                                         Object value,
                                         BCF2Type type,
                                         int minValues)
                                  throws IOException
        Key abstract method that should encode a value of the given type into the encoder. Value will be of a type appropriate to the underlying encoder. If the genotype field is represented as an int[], this will be value, and the encoder needs to handle encoding all of the values in the int[]. The argument should be used, not the getType() method in the superclass as an outer loop might have decided a more general type (int16) to use, even through this encoder could have been done with int8. If minValues > 0, then encodeValue must write in at least minValues items from value. If value is atomic, this means that minValues - 1 MISSING values should be added to the encoder. If minValues is a collection type (int[]) then minValues - values.length should be added. This argument is intended to handle padding of values in genotype fields.
        Parameters:
        encoder -
        value -
        type -
        minValues -
        Throws:
        IOException