001package org.biojava.bio.program.unigene;
002
003import org.biojava.bio.Annotatable;
004import org.biojava.bio.seq.Sequence;
005import org.biojava.bio.seq.db.SequenceDB;
006
007/**
008 * <p>
009 * A single unigene cluster.
010 * </p>
011 *
012 * <p>
013 * This represents all of the information available about a single unigene
014 * cluster. This includes the sequences that are in it, the unique sequence that
015 * is its representative, the cluster id and all the annotation available via
016 * the data file. Much of the annotation may be accessible via the
017 * getAnnotation() method.
018 * </p>
019 *
020 * <p>
021 * There is much more information in the Unigene clusters than just the id,
022 * title and sequences. This is all stoored in the annotation associated with
023 * the cluster. The annotation bundle conforms to the schema in 
024 * <code>UnigeneTools.UNIGENE_ANNOTATION</code>.
025 * </p>
026 *
027 * @author Matthew Pocock
028 */
029public interface UnigeneCluster
030extends Annotatable {
031  /**
032   * The public unigene ID.
033   *
034   * @return get the cluster ID as a String
035   */
036  public String getID();
037  
038  /**
039   * The cluster title.
040   *
041   * @return the cluster title as a String
042   */
043  public String getTitle();
044  
045  /**
046   * All sequences that map to this cluster.
047   *
048   * @return a SequenceDB of all sequences mapping to this cluster.
049   */
050  public SequenceDB getAll();
051  
052  /**
053   * The unique sequence that is used as a representative for this cluster.
054   *
055   * @return the cluster's unique Sequence
056   */
057  public Sequence getUnique();
058}