com.hfg.bio.seq.pattern.PrositePatternPosition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com_hfg Show documentation
Show all versions of com_hfg Show documentation
com.hfg xml, html, svg, and bioinformatics utility library
package com.hfg.bio.seq.pattern;
import com.hfg.math.Range;
import com.hfg.util.StringBuilderPlus;
//------------------------------------------------------------------------------
/**
Prosite pattern position.
@author J. Alex Taylor, hairyfatguy.com
*/
//------------------------------------------------------------------------------
// com.hfg Library
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
// [email protected]
//------------------------------------------------------------------------------
public class PrositePatternPosition
{
private PrositePatternPositionType mType;
private String mResidues;
private Range mCountRange;
private boolean mLazyMatchMode;
private boolean mMismatchNotAllowed;
//###########################################################################
// PACKAGE METHODS
//###########################################################################
//------------------------------------------------------------------------
@Override
public String toString()
{
StringBuilderPlus buffer = new StringBuilderPlus();
if (getType().equals(PrositePatternPositionType.NOT))
{
buffer.append("^");
}
else if (getType().equals(PrositePatternPositionType.ONE_OF))
{
buffer.append("[");
}
String residues = getResidues();
buffer.append(residues != null ? residues : "x");
if (getType().equals(PrositePatternPositionType.ONE_OF))
{
buffer.append("]");
}
Range countRange = getCountRange();
if (countRange != null)
{
buffer.append("(")
.append(countRange.getStart())
.delimitedAppend(countRange.length() > 1 ? countRange.getEnd() : "")
.append(")");
}
return buffer.toString();
}
//------------------------------------------------------------------------
void setType(PrositePatternPositionType inValue)
{
mType = inValue;
}
//------------------------------------------------------------------------
PrositePatternPositionType getType()
{
return mType;
}
//------------------------------------------------------------------------
void setResidues(String inValue)
{
mResidues = inValue;
}
//------------------------------------------------------------------------
String getResidues()
{
return mResidues;
}
//------------------------------------------------------------------------
boolean matchesResidue(char inTargetResidue)
{
boolean result = false;
switch (mType)
{
case IS_ANY:
result = true;
break;
case IS:
case ONE_OF:
result = mResidues.contains(inTargetResidue + "");
break;
case NOT:
result = ! mResidues.contains(inTargetResidue + "");
break;
}
return result;
}
//------------------------------------------------------------------------
void setCountRange(Range inValue)
{
mCountRange = inValue;
}
//------------------------------------------------------------------------
boolean hasCountRange()
{
return mCountRange != null;
}
//------------------------------------------------------------------------
Range getCountRange()
{
return mCountRange;
}
//------------------------------------------------------------------------
void setUseLazyMatchMode(boolean inValue)
{
mLazyMatchMode = inValue;
}
//------------------------------------------------------------------------
boolean useLazyMatchMode()
{
return mLazyMatchMode;
}
//------------------------------------------------------------------------
void setMismatchNotAllowed(boolean inValue)
{
mMismatchNotAllowed = inValue;
}
//------------------------------------------------------------------------
boolean mismatchNotAllowed()
{
return mMismatchNotAllowed;
}
}