protected Pair<Integer, Integer> adjustedVariantStart(VariantProto.Variant variant,
                                                          List<VariantProto.AlternateCoordinate> secAlts,
                                                          Map<Integer, Character> referenceAlleles) {
        if (variant.getType().equals(VariantProto.VariantType.NO_VARIATION)) {
            return new ImmutablePair<>(variant.getStart(), variant.getEnd());
        }
        MutablePair<Integer, Integer> pos = adjustedVariantStart(variant.getStart(), variant.getEnd(), variant.getReference(), variant.getAlternate(), referenceAlleles, null);

        for (VariantProto.AlternateCoordinate alternateCoordinate: secAlts) {
            adjustedVariantStart(alternateCoordinate.getStart(), alternateCoordinate.getEnd(), alternateCoordinate.getReference(), alternateCoordinate.getAlternate(), referenceAlleles, pos);
        }

        return pos;
    }
protected Pair < Integer , Integer > adjustedVariantStart ( VariantProto . Variant variant , List < VariantProto . AlternateCoordinate > secAlts , Map < Integer , Character > referenceAlleles ) { if ( variant . getType ( ) . equals ( VariantProto . VariantType . NO_VARIATION ) ) { return new ImmutablePair < > ( variant . getStart ( ) , variant . getEnd ( ) ) ; } MutablePair < Integer , Integer > pos = adjustedVariantStart ( variant . getStart ( ) , variant . getEnd ( ) , variant . getReference ( ) , variant . getAlternate ( ) , referenceAlleles , null ) ; for ( VariantProto . AlternateCoordinate alternateCoordinate : secAlts ) { adjustedVariantStart ( alternateCoordinate . getStart ( ) , alternateCoordinate . getEnd ( ) , alternateCoordinate . getReference ( ) , alternateCoordinate . getAlternate ( ) , referenceAlleles , pos ) ; } return pos ; }
Adjust start/end if a reference base is required due to an empty allele. All variants are checked due to SecAlts.
@param variant {@link VariantProto.Variant} object.
@param referenceAlleles
@return Pair<Integer, Integer> The adjusted (or same) start/end position e.g. SV and MNV as SecAlt, INDEL, etc.