import charite.christo.strap.StrapProtein;
import static java.lang.System.*;
/*
  java   DemoProtein_gaps
  Gaps are used to align proteins.
  They account for inserts and deletions during evolution.
  This demo shows several ways how gaps are introduced in protein objects.
*/
public class DemoProtein_gaps {
    public static void main(String argv[]) {
        final StrapProtein p= new StrapProtein();
        p.setName("myName");
        p.setResidueType("ASDFG");
        out.println("There are several ways how gaps can be added to a sequence:");
        out.println();
        p.setResidueGap(3,2);
        out.println("p.setResidueGap(3,2) results in " +p.getGappedSequenceAsString());
        out.println();
        p.setResidueGap(new int[]{0,0,2,0,0});
        out.println("p.setResidueGap(new int[]{0,0,2,0,0}) results in " +p.getGappedSequenceAsString());
        out.println();
        p.setGappedSequence("AS  DFG");
        out.println("p.setGappedSequence(\"AS  DFG\"); results in " +p.getGappedSequenceAsString());
        out.println();
        /* The method applyGappedSequence infers the gaps from a given gapped sequence. */
        /* Any non-letter is a gap. What letters are used does not matter.  */
        p.inferGapsFromGappedSequence("AAAA A".getBytes());
        out.println("p.inferGapsFromGappedSequence(\"AAAA A\"); results in " +p.getGappedSequenceAsString());
        out.println();
        /* The residue column gives the horizontal position of a residue */
        out.println("The residue column is larger than the residue index when there are gaps:");
        out.println("getResidueColumn(3)="+p.getResidueColumn(3));
        out.println("getMaxColumn() is the total length minus 1: "+p.getMaxColumn());
        exit(0);
    }
}