org.biojavax.ga.functions
Interface MutationFunction

All Superinterfaces:
Changeable
All Known Implementing Classes:
AbstractMutationFunction, MutationFunction.NoMutation, SimpleMutationFunction, SwapMutationFunction

public interface MutationFunction
extends Changeable

A class that mutates a SymbolList

Since:
1.5
Version:
1.0
Author:
Mark Schreiber

Nested Class Summary
static class MutationFunction.NoMutation
           Place Holder class that doesn't mutate its SymbolLists
 
Field Summary
static double[] DEFAULT_MUTATION_PROBS
           
static ChangeType MUTATION_PROBS
           
static ChangeType MUTATION_SPECTRUM
           
static MutationFunction NO_MUTATION
           
 
Method Summary
 double[] getMutationProbs()
           
 OrderNDistribution getMutationSpectrum()
           
 SymbolList mutate(SymbolList seq)
          Produces a new SymbolList by mutation.
 void setMutationProbs(double[] mutationProbs)
          Set the probability of a mutation occuring at a certain position Position 0 in the array corresponds to the probability of the first residue of seq mutating.
 void setMutationSpectrum(OrderNDistribution mutationSpectrum)
          Sets the Distribution of Symbols that will be selected from when a mutation occurs.
 
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
 

Field Detail

DEFAULT_MUTATION_PROBS

static final double[] DEFAULT_MUTATION_PROBS

MUTATION_PROBS

static final ChangeType MUTATION_PROBS

MUTATION_SPECTRUM

static final ChangeType MUTATION_SPECTRUM

NO_MUTATION

static final MutationFunction NO_MUTATION
Method Detail

mutate

SymbolList mutate(SymbolList seq)
                  throws IllegalAlphabetException,
                         ChangeVetoException,
                         IllegalSymbolException
Produces a new SymbolList by mutation. Each position i in the SymbolList seq is mutated with probability getMutationProbs[i]. The new residue is selected at random from the Distribution mutation. The use of an array of probabilities allows the modelling of mutational hotspots. Position 0 in the array corresponds to the probability of the first residue of seq mutating. If the length of the array defined in getMutationProbs() is shorter than the length of the sequence the default behaivour of implementations will be to apply the last probability to each subsequence residue. A single member array will mutate all bases with equal probability.

Parameters:
seq - the sequence to mutate
Returns:
The mutated sequence.
Throws:
IllegalAlphabetException - If the mutationSpectrum Distribution is not emitting Symbols from the same Alphabet as seq.
IllegalSymbolException - if the mutationSpectrum Distribution is not conditioned with the same Alphabet as the seq Alphabet.
ChangeVetoException - if seq is unmodifiable

setMutationProbs

void setMutationProbs(double[] mutationProbs)
                      throws ChangeVetoException
Set the probability of a mutation occuring at a certain position Position 0 in the array corresponds to the probability of the first residue of seq mutating. If the length of the array defined in getMutationProbs() is shorter than the length of the sequence the default behaivour of implementations will be to apply the last probability to each subsequence residue. A single member array will mutate all bases with equal probability.

Parameters:
mutationProbs - an array of double values representing mutation probabilities
Throws:
ChangeVetoException - if a ChangeListener vetoes the change.

getMutationProbs

double[] getMutationProbs()

setMutationSpectrum

void setMutationSpectrum(OrderNDistribution mutationSpectrum)
                         throws ChangeVetoException
Sets the Distribution of Symbols that will be selected from when a mutation occurs. An OrderNDistribution is used so that you can model a situation where the identity of the 'mutant' Symbol is dependent on the original Symbol. The primary use is to prevent Symbols mutating to themselves. Another use would be to model transitions and transversions.

Parameters:
mutationSpectrum - the Distribution of 'mutant' bases to choose from.
Throws:
ChangeVetoException - if a ChangeListener vetoes the change.

getMutationSpectrum

OrderNDistribution getMutationSpectrum()
Returns:
null if the Distribution has not been set.