Package org.broadinstitute.gatk.engine.filters

Source Code of org.broadinstitute.gatk.engine.filters.PlatformUnitFilterHelper

/*
* Copyright (c) 2012 The Broad Institute
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

package org.broadinstitute.gatk.engine.filters;

import org.broadinstitute.gatk.utils.exceptions.UserException;
import org.broadinstitute.gatk.utils.text.XReadLines;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.regex.Pattern;

/**
* This is a utility class, its sole purpose is to populate PlatformUnitFilter with data. When a command line argument
* (@Argument) of the type PlatformUnitFilterHelper is declared in an application (walker), its constuctor
* PlatformUnitFilterHelper(String) automatically called by the argument system will parse its String argument
* and set up static fields of PlatformUnitFilter object.
*
* The String argument can be either a name of existing file, or a list of comma-separated lane (Platform Unit) names.
* First, the constructor will check if a file with specified name exists. If it does, then it is assumed that each line
* in the file contains one name of a lane (Platfor Unit) to filter out. If such file does not exist, then the argument is
* interpreted as a comma-separated list. Blank spaces around lane names are allowed in both cases and will be trimmed out.
*
* In other words, all it takes to request filtering out reads from specific lane(s) is
*
* 1) declare filter usage in the walker
*
* @ReadFilters({PlatformUnitFilter.class,...})
*
* 2) specify the argument that will take the list of lanes to filter:
*
* @Argument(fullName="filterLanes", shortName="FL", doc="all specified lanes will be ignored", required=false)
*   PlatformUnitFilterHelper dummy;
*
* After that, the walker can be invoked with "--filterLanes 302UBAAXX090508.8,302YAAAXX090427.8" argument.
*
* Created by IntelliJ IDEA.
* User: asivache
* Date: Sep 22, 2009
* Time: 11:11:48 AM
* To change this template use File | Settings | File Templates.
*/
public class PlatformUnitFilterHelper {
    final public static Pattern EMPTYLINE_PATTERN = Pattern.compile("^\\s*$");

    public PlatformUnitFilterHelper(String arg) {
         File f = new File(arg);

         if ( f.exists() ) {
             try {
                 XReadLines reader = new XReadLines(f);
                 for ( String line : reader ) {
                     if ( EMPTYLINE_PATTERN.matcher(line).matches() ) continue; // skip empty lines
                     PlatformUnitFilter.addBlackListedLane(line); // PlatformUnitFilter will trim the line as needed
                 }
             } catch ( FileNotFoundException e) { throw new UserException.CouldNotReadInputFile(f, e); } // this should NEVER happen
             return;
         }

        // no such file, must be a comma-separated list:

        PlatformUnitFilter.setBlackListedLanes(arg); // PlatformUnitFilter will split on commas and trim as needed

    }
}
TOP

Related Classes of org.broadinstitute.gatk.engine.filters.PlatformUnitFilterHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.