// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
//
// Contact: phylosoft @ gmail . com
-// WWW: www.phylosoft.org/forester
+// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.sequence;
import org.forester.util.ForesterUtil;
-public class BasicSequence implements Sequence {
+public class BasicSequence implements MolecularSequence {
private final char[] _mol_sequence;
- private final String _identifier;
+ private String _identifier;
private final TYPE _type;
- private BasicSequence( final String identifier, final String mol_sequence, final TYPE type ) {
+ /**
+ * Only use if you know what you are doing!
+ *
+ */
+ public BasicSequence( final String identifier, final String mol_sequence, final TYPE type ) {
if ( ForesterUtil.isEmpty( identifier ) ) {
throw new IllegalArgumentException( "identifier of sequence cannot be empty" );
}
_type = type;
}
- // Only use if you know what you are doing!
+ /**
+ * Only use if you know what you are doing!
+ *
+ */
public BasicSequence( final String identifier, final char[] mol_sequence, final TYPE type ) {
if ( ForesterUtil.isEmpty( identifier ) ) {
throw new IllegalArgumentException( "identifier of sequence cannot be empty" );
_type = type;
}
+ public void setIdentifier( final String id ) {
+ _identifier = id;
+ }
+
@Override
public String getIdentifier() {
return _identifier;
@Override
public int getNumberOfGapResidues() {
int gaps = 0;
- for( int i = 0; i < _mol_sequence.length; ++i ) {
- if ( _mol_sequence[ i ] == GAP ) {
+ for( final char element : _mol_sequence ) {
+ if ( element == GAP ) {
++gaps;
}
}
if ( obj.getClass() != getClass() ) {
return false;
}
- final Sequence other = ( Sequence ) obj;
+ final MolecularSequence other = ( MolecularSequence ) obj;
if ( getMolecularSequenceAsString().equals( other.getMolecularSequenceAsString() ) ) {
return true;
}
return sb.toString();
}
- public static Sequence copySequence( final Sequence seq ) {
+ public static MolecularSequence copySequence( final MolecularSequence seq ) {
final char[] s = new char[ seq.getMolecularSequence().length ];
for( int i = 0; i < seq.getMolecularSequence().length; i++ ) {
s[ i ] = seq.getMolecularSequence()[ i ];
return new BasicSequence( new String( seq.getIdentifier() ), s, seq.getType() );
}
- public static Sequence createAaSequence( final String identifier, final String mol_sequence ) {
+ public static MolecularSequence createAaSequence( final String identifier, final String mol_sequence ) {
return new BasicSequence( identifier, mol_sequence.toUpperCase().replaceAll( "\\.", GAP_STR )
- .replaceAll( AA_REGEXP, Character.toString( UNSPECIFIED_AA ) ), TYPE.AA );
+ .replaceAll( AA_REGEXP, Character.toString( UNSPECIFIED_AA ) ), TYPE.AA );
}
- public static Sequence createDnaSequence( final String identifier, final String mol_sequence ) {
+ public static MolecularSequence createDnaSequence( final String identifier, final String mol_sequence ) {
return new BasicSequence( identifier, mol_sequence.toUpperCase().replaceAll( "\\.", GAP_STR )
- .replaceAll( DNA_REGEXP, Character.toString( UNSPECIFIED_NUC ) ), TYPE.DNA );
+ .replaceAll( DNA_REGEXP, Character.toString( UNSPECIFIED_NUC ) ), TYPE.DNA );
}
- public static Sequence createRnaSequence( final String identifier, final String mol_sequence ) {
+ public static MolecularSequence createRnaSequence( final String identifier, final String mol_sequence ) {
return new BasicSequence( identifier, mol_sequence.toUpperCase().replaceAll( "\\.", GAP_STR )
- .replaceAll( RNA_REGEXP, Character.toString( UNSPECIFIED_NUC ) ), TYPE.RNA );
+ .replaceAll( RNA_REGEXP, Character.toString( UNSPECIFIED_NUC ) ), TYPE.RNA );
}
@Override
public String getMolecularSequenceAsString() {
return new String( getMolecularSequence() );
}
+
+ @Override
+ public boolean isGapAt( final int position ) {
+ return getResidueAt( position ) == GAP;
+ }
}