*/
package jalview.datamodel;
-import jalview.datamodel.features.SequenceFeaturesI;
-import jalview.util.MapList;
-
import java.util.BitSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import fr.orsay.lri.varna.models.rna.RNA;
+import jalview.datamodel.Sequence.DBModList;
+import jalview.datamodel.features.SequenceFeaturesI;
+import jalview.util.MapList;
+import jalview.ws.params.InvalidArgumentException;
/**
* Methods for manipulating a sequence, its metadata and related annotation in
* @author $author$
* @version $Revision$
*/
-public interface SequenceI extends ASequenceI
+public interface SequenceI extends ASequenceI, ContactMapHolderI
{
/**
* Set the display name for the sequence
* get a range on the sequence as a string
*
* @param start
- * position relative to start of sequence including gaps (from 0)
+ * (inclusive) position relative to start of sequence including gaps
+ * (from 0)
* @param end
- * position relative to start of sequence including gaps (from 0)
+ * (exclusive) position relative to start of sequence including gaps
+ * (from 0)
*
* @return String containing all gap and symbols in specified range
*/
public int findPosition(int i);
/**
- * Returns the from-to sequence positions (start..) for the given column
- * positions (1..), or null if no residues are included in the range
+ * Returns the sequence positions for first and last residues lying within the
+ * given column positions [fromColum,toColumn] (where columns are numbered
+ * from 1), or null if no residues are included in the range
*
* @param fromColum
+ * - first column base 1
* @param toColumn
+ * - last column, base 1
* @return
*/
- public Range findPositions(int fromColum, int toColumn);
+ public ContiguousI findPositions(int fromColum, int toColumn);
/**
* Returns an int array where indices correspond to each residue in the
public int[] gapMap();
/**
+ * Build a bitset corresponding to sequence gaps
+ *
+ * @return a BitSet where set values correspond to gaps in the sequence
+ */
+ public BitSet gapBitset();
+
+ /**
* Returns an int array where indices correspond to each position in sequence
* char array and the element value gives the result of findPosition for that
* index in the sequence.
/**
* set the array of Database references for the sequence.
*
+ * BH 2019.02.04 changes param to DBModlist
+ *
* @param dbs
* @deprecated - use is discouraged since side-effects may occur if DBRefEntry
* set are not normalised.
+ * @throws InvalidArgumentException
+ * if the is not one created by Sequence itself
*/
@Deprecated
- public void setDBRefs(DBRefEntry[] dbs);
+ public void setDBRefs(DBModList<DBRefEntry> dbs);
- public DBRefEntry[] getDBRefs();
+ public DBModList<DBRefEntry> getDBRefs();
/**
* add the given entry to the list of DBRefs for this sequence, or replace a
/**
* Derive a sequence (using this one's dataset or as the dataset)
*
- * @return duplicate sequence with valid dataset sequence
+ * @return duplicate sequence and any annotation present with valid dataset sequence
*/
public SequenceI deriveSequence();
String label);
/**
+ * Returns a (possibly empty) list of any annotations that match on given
+ * calcId (source), label (type) and description (observation instance). Null
+ * values do not match.
+ *
+ * @param calcId
+ * @param label
+ * @param description
+ */
+ public List<AlignmentAnnotation> getAlignmentAnnotations(String calcId,
+ String label, String description);
+
+ /**
* create a new dataset sequence (if necessary) for this sequence and sets
* this sequence to refer to it. This call will move any features or
* references on the sequence onto the dataset. It will also make a duplicate
* optional feature types to restrict results to
* @return
*/
- List<SequenceFeature> findFeatures(int fromCol, int toCol, String... types);
+ List<SequenceFeature> findFeatures(int fromCol, int toCol,
+ String... types);
/**
* Method to call to indicate that the sequence (characters or alignment/gaps)
* positions to be invalidated.
*/
void sequenceChanged();
-
+
/**
*
* @return BitSet corresponding to index [0,length) where Comparison.isGap()
* @param chromosomeId
* @param map
*/
- void setGeneLoci(String speciesId, String assemblyId,
- String chromosomeId, MapList map);
+ void setGeneLoci(String speciesId, String assemblyId, String chromosomeId,
+ MapList map);
+
+ /**
+ * Returns the sequence string constructed from the substrings of a sequence
+ * defined by the int[] ranges provided by an iterator. E.g. the iterator
+ * could iterate over all visible regions of the alignment
+ *
+ * @param it
+ * the iterator to use
+ * @return a String corresponding to the sequence
+ */
+ public String getSequenceStringFromIterator(Iterator<int[]> it);
+
+ /**
+ * Locate the first position in this sequence which is not contained in an
+ * iterator region. If no such position exists, return 0
+ *
+ * @param it
+ * iterator over regions
+ * @return first residue not contained in regions
+ */
+ public int firstResidueOutsideIterator(Iterator<int[]> it);
+
+ public void addContactListFor(AlignmentAnnotation annotation,
+ ContactMatrixI cm);
+
}