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

org.broadinstitute.hellbender.cmdline.argumentcollections.SequenceDictionaryValidationArgumentCollection Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.cmdline.argumentcollections;

import org.broadinstitute.barclay.argparser.Argument;
import org.broadinstitute.hellbender.cmdline.StandardArgumentDefinitions;

/**
 * interface for argument collections that control how sequence dictionary validation should be handled
 */
public interface SequenceDictionaryValidationArgumentCollection {

    /**
     * Should sequence dictionary validation be performed
     * @return true if the tool should perform sequence dictionary validation
     */
    boolean performSequenceDictionaryValidation();


    /**
     * most tools will want to use this, it defaults to performing sequence dictionary validation but provides the option
     * to disable it
     */
    class StandardValidationCollection implements SequenceDictionaryValidationArgumentCollection {
        @Argument(fullName = StandardArgumentDefinitions.DISABLE_SEQUENCE_DICT_VALIDATION_NAME, shortName = StandardArgumentDefinitions.DISABLE_SEQUENCE_DICT_VALIDATION_NAME, doc = "If specified, do not check the sequence dictionaries from our inputs for compatibility. Use at your own risk!", optional = true)
        private boolean disableSequenceDictionaryValidation = false;

        @Override
        public boolean performSequenceDictionaryValidation() {
            return !disableSequenceDictionaryValidation;
        }
    }

    /**
     * doesn't provide a configuration argument, and always returns false, useful for tools that do not want to perform
     * sequence dictionary validation, like aligners
     */
    class NoValidationCollection implements SequenceDictionaryValidationArgumentCollection {
        @Override
        public boolean performSequenceDictionaryValidation() {
            return false;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy