All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.broadinstitute.hellbender.transformers.VariantTransformer Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.transformers;

import htsjdk.variant.variantcontext.VariantContext;
import org.broadinstitute.hellbender.utils.SerializableFunction;

import java.util.Objects;
import java.util.function.UnaryOperator;

/**
 * Classes which perform transformations from {@link htsjdk.variant.variantcontext.VariantContext} -> {@link htsjdk.variant.variantcontext.VariantContext}
 * should implement this interface by overriding {@link SerializableFunction < VariantContext ,VariantContext>#apply(VariantContext)}
 * Created by jonn on 6/26/18.
 */
@FunctionalInterface
public interface VariantTransformer extends UnaryOperator, SerializableFunction {
    public static final long serialVersionUID = 1L;

    //HACK: These methods are a hack to get to get the type system to accept compositions of VariantTransformers.
    @SuppressWarnings("overloads")
    default VariantTransformer andThen(final VariantTransformer after) {
        Objects.requireNonNull(after);
        return (VariantContext vc) -> after.apply(apply(vc));
    }

    @SuppressWarnings("overloads")
    default VariantTransformer compose(final VariantTransformer before) {
        Objects.requireNonNull(before);
        return (VariantContext vc) -> apply(before.apply(vc));
    }

    static VariantTransformer identity(){
        return variantContext -> variantContext;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy