001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021
022package org.biojava.bio.search;
023
024import org.biojava.bio.symbol.IllegalAlphabetException;
025import org.biojava.bio.symbol.SymbolList;
026
027/**
028 * This class permits searching a SymbolList with another SymbolList while
029 * permitting a specified number of mismatches.  The search pattern can
030 * include ambiguity Symbols.
031 *
032 * @author Matthew Pocock (wrote original MaxMissmatchPattern class)
033 * @author David Huen (debugging and extension to permit ambiguity symbols)
034 */
035public class MaxMismatchPattern
036implements BioPattern {
037  private int mismatches;
038  private SymbolList pattern;
039
040  public MaxMismatchPattern() {}
041
042  public MaxMismatchPattern(SymbolList pattern, int mismatches) {
043    this.pattern = pattern;
044    this.mismatches = mismatches;
045  }
046
047  public int getMismatches() {
048    return mismatches;
049  }
050
051  public void setMismatches(int mismatches) {
052    this.mismatches = mismatches;
053  }
054
055  public SymbolList getPattern() {
056    return pattern;
057  }
058
059  public void setPattern(SymbolList pattern) {
060    this.pattern = pattern;
061  }
062
063  public BioMatcher matcher(SymbolList symList)
064          throws IllegalAlphabetException {
065    return new MaxMismatchMatcher(symList, pattern, mismatches);
066  }
067}
068
069