import charite.christo.strap.*;
import static java.lang.System.*;
/*
java DemoProtein_nucleotides_advanced
This demo shows advanced features of proteins
translated from nucleotide sequences.
*/
public class DemoProtein_nucleotides_advanced {
public static void main(String argv[]) {
final StrapProtein p=new StrapProtein();
out.println("Translate reverse complement");
p.setNucleotides("CCCACCCCACTT",StrapProtein.REVERSE_COMPLEMENT);
/* The original strand and the translated (current) strand are distinguished. */
/* The original strand is CCCACCCCACTT. */
/* The current strand is identical or the reverse complement AAGTGGGGTGGG. */
/* This depends on the parameters reverse and complement of the setNucleotides-method. */
out.println("The original NT sequence is "+p.getNucleotidesAsString());
out.println("The NT sequence of current strand is "+p.getNucleotidesCurrentStrandAsString());
out.println("The AA sequence is "+p.getResidueTypeAsString());
out.println();
out.println("You can request nucleotides at any position in the original or the current strand");
out.println("getNucleotide(2)="+(char)p.getNucleotide(2));
out.println("getNucleotideCurrentStrand(2)="+(char)p.getNucleotideCurrentStrand(2));
out.println();
/* By default all nucleotides code amino acids. */
/* But the coding nucleotides can be set explicitly.*/
out.println("The nucleotides 3, 4 and 5 are coding. AAG => Tryptophan");
p.setNucleotidesCurrentStrandTranslated(new boolean[]{false,false,false,true,true,true});
out.println("The NT sequence is "+p.getNucleotidesCurrentStrandAsString());
/* The three coding nucleotides make only one amino acid */
out.println("The AA sequence is "+p.getResidueTypeAsString());
out.println();
/* There are four sequence: */
/* 1. The original nucleotide sequence */
/* 2. The nucleotide sequence of the current strand. */
/* Usually the same or the reverse-complement of the original one. */
/* 3. The coding nucleotide sequence. The length can be divided by 3 */
/* 4. The amino acid sequence. */
/* The following demonstrates conversion of the coordinates. */
out.println("You can convert indices of the current strand to indices of the coding sequence");
out.println("This is like conversion beteen genomic and mRNA positions");
out.println("nucleotideIndices2translatedNucleotideIndices()="
+concat(p.nucleotideIndices2translatedNucleotideIndices(),p.countNucleotides())
+" ( -1 means not translated)");
out.println("translatedNucleotideIndices2nucleotideIndices()="
+concat(p.translatedNucleotideIndices2nucleotideIndices(),p.countCodingNucleotides()));
out.println();
out.println("You can convert indices of the current strand to indices of amino acids");
out.println("nucleotideIndex2aminoAcidIndex(6)="+p.nucleotideIndex2aminoAcidIndex(6));
out.println("aminoAcidIndex2nucleotideIndex(2)="+p.aminoAcidIndex2nucleotideIndex(2));
}
private static StringBuffer concat(int ii[],int count) {
final StringBuffer sb=new StringBuffer();
for(int i=0;i<Math.min(count,ii.length);i++)
sb.append(ii[i]).append(" ");
return sb;
}
}