## org.biojava.bio.molbio
Class RestrictionMapper

    java.lang.Object
      org.biojava.bio.molbio.RestrictionMapper

All Implemented Interfaces:
  SequenceAnnotator

    public class RestrictionMapper

extends Object
implements SequenceAnnotator

`RestrictionMapper` is a class for annotating `Sequence`s with `Feature`s which represent restriction sites. Calling `annotate(Sequence sequence)` will annotate the `Sequence` with the sites of any `RestrictionEnzyme`s which have been added to the `RestrictionMapper`. The returned `Sequence` is a `ViewSequence` wrapping the original.

The `Feature`s created are `RestrictionSite`s which have a flyweight `Annotation` containing a single `String` property "dbxref" whose value is "REBASE:" plus name of the enzyme (e.g. EcoRI).

The mapper will by default map only those sites which have both their recognition sites and their cut sites within the `Sequence`. This behaviour may be changed to map all sites which have their recognition sites within the `Sequence` using the `setMapAll(boolean on)` method.

The current implementation requires that `RestrictionEnzyme`s to be searched must first be registered with the `RestrictionEnzymeManager`.

Since:
  1.3
Author:
  Keith James

Field Summary
`static String` `SITE_FEATURE_SOURCE` `SITE_FEATURE_SOURCE` the source `String` used by `RestrictionMapper` when creating restriction site `Feature`s.
`static String` `SITE_FEATURE_TYPE` `SITE_FEATURE_TYPE` the type `String` used by `RestrictionMapper` when creating restriction site `Feature`s.

Constructor Summary
`RestrictionMapper(ThreadPool threadPool)` Creates a new `RestrictionMapper` which will use the specified `ThreadPool`.

Method Summary
`void` `addEnzyme(RestrictionEnzyme enzyme)` `addEnzyme` adds an enzyme to be searched for in the `Sequence`.
`Sequence` `annotate(Sequence sequence)` `annotate` adds `Feature`s which represent restriction sites.
`void` `clearEnzymes()` `clearEnzymes` removes all enzymes from those to be searched for in the `Sequence`.
`boolean` `getMapAll()` `getMapAll` returns whether all sites should be marked, including those which have recognition sites within the sequence, but cut outside it.
`void` `removeEnzyme(RestrictionEnzyme enzyme)` `removeEnzyme` removes an enzyme from those to be searched for in the `Sequence`.
`void` `setMapAll(boolean on)` `setMapAll` sets whether all sites should be marked, including those which have recognition sites within the sequence, but cut outside it.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### SITE_FEATURE_SOURCE

    public static final String SITE_FEATURE_SOURCE

  `SITE_FEATURE_SOURCE` the source `String` used by `RestrictionMapper` when creating restriction site `Feature`s. This is the `String` which is returned when a `Feature`'s `getSource()` method is called.

  See Also:
    Constant Field Values

### SITE_FEATURE_TYPE

    public static final String SITE_FEATURE_TYPE

  `SITE_FEATURE_TYPE` the type `String` used by `RestrictionMapper` when creating restriction site `Feature`s. This is the `String` which is returned when a `Feature`'s `getType()` method is called.

  See Also:
    Constant Field Values

Constructor Detail

### RestrictionMapper

    public RestrictionMapper(ThreadPool threadPool)

  Creates a new `RestrictionMapper` which will use the specified `ThreadPool`. Do not share one pool between a number of `RestrictionMapper`s because `annotate(Sequence sequence)` waits for all threads in the pool to finish work before returning and this will lead to a race condition between mappers. One mapper could end up waiting for another mapper's threads before returning.

  Parameters:
    `threadPool` - a `ThreadPool`.

Method Detail

### annotate

    public Sequence annotate(Sequence sequence)

  `annotate` adds `Feature`s which represent restriction sites.

  Specified by:
    `annotate` in interface `SequenceAnnotator`
  Parameters:
    `sequence` - a `Sequence`.
  Returns:
    a `Sequence` view with restriction sites marked.

### getMapAll

    public boolean getMapAll()

  `getMapAll` returns whether all sites should be marked, including those which have recognition sites within the sequence, but cut outside it. The default is false, indicating only sites which can actually be cut are mapped.

  Returns:
    a `boolean`.

### setMapAll

    public void setMapAll(boolean on)

  `setMapAll` sets whether all sites should be marked, including those which have recognition sites within the sequence, but cut outside it. The default is false, indicating only sites which can actually be cut are mapped.

  Parameters:
    `on` - a `boolean`.

### addEnzyme

    public void addEnzyme(RestrictionEnzyme enzyme)

  `addEnzyme` adds an enzyme to be searched for in the `Sequence`.

  Parameters:
    `enzyme` - a `RestrictionEnzyme`.

### removeEnzyme

    public void removeEnzyme(RestrictionEnzyme enzyme)

  `removeEnzyme` removes an enzyme from those to be searched for in the `Sequence`.

  Parameters:
    `enzyme` - a `RestrictionEnzyme`.

### clearEnzymes

    public void clearEnzymes()

  `clearEnzymes` removes all enzymes from those to be searched for in the `Sequence`.