Team:Freiburg software/Code/DisplaySequence.java
From 2009.igem.org
org.synbiowave.biojava.DisplaySequence
/* Copyright: synbiowave License: GPL Authors: Paul Staab Version: 0.1 DESCRIPTION: This class can be used to create different visualizations of a DNA-Sequence */ package org.synbiowave.biojava; import org.biojava.bio.seq.DNATools; import org.biojava.bio.seq.RNATools; import org.biojava.bio.symbol.SymbolList; /** * <p>Class to create various visualizations of a DNA-Sequence</p> */ public class DisplaySequence { private SymbolList symL; public DisplaySequence(String[] args) throws Exception { } public DisplaySequence(SymbolList symL) throws Exception { //ToDo: Check for DNA and throw error this.symL = symL; } /** Setter for the DNA-Sequence stored in a SymbolList */ public void set_Sequenz(SymbolList symL) throws Exception { //ToDo: Check for DNA and throw error this.symL = symL; } /** Getter for the DNA-Sequence stored in a SymbolList */ public SymbolList get_Sequenz() throws Exception { return this.symL; } /** Displays a Single ReadingFrame (number in 1-6 with 1-3 * being forward and 4-6 being backward readingframes) plus the sequence */ public String displaySingleReadingFrame(int number) throws Exception { if (number > 3) return displaySingleReadingFrame(number-3,true); else return displaySingleReadingFrame(number,false); } /** Displays the Sequence and a single readingframe; * number is the number of the readingframe to display (1-3) * backwards = false means forward reading frames, true backward ones */ public String displaySingleReadingFrame(int number, boolean backwards) throws Exception { return generateReadingframe(number,backwards) + this.symL.seqString() + "\n" + addNumberation(this.symL.length()); } /** Displays the Sequence and the 3 forward readingframes */ public String displayFwReadingFrames() throws Exception { return generateReadingframe(1,false) + generateReadingframe(2,false) + generateReadingframe(3,false) + this.symL.seqString() + "\n" + addNumberation(this.symL.length()); } /** Displays the Sequence and the 3 backward readingframes */ public String displayRevReadingFrames() throws Exception { return generateReadingframe(1,true) + generateReadingframe(2,true) + generateReadingframe(3,true) + DNATools.reverseComplement(this.symL).seqString() + "\n" + addNumberation(this.symL.length()); } /** Displays the Sequence and all 6 readingframes */ public String displayAllReadingFrames() throws Exception { return generateReadingframe(1,false) + //"<br>" + generateReadingframe(2,false) + //"<br>" + generateReadingframe(3,false) + //"<br>" + this.symL.seqString() + //"<br>" + addNumberation(this.symL.length()) + //"<br>" + DNATools.reverseComplement(this.symL).seqString() + //"<br>" + generateReadingframe(3,true) + //"<br>" + generateReadingframe(2,true) + //"<br>" + generateReadingframe(1,true) ; //"<br>"; } static private String addNumberation(int end) { String returnvalue = "1"; for (int i = 2; i <= end; i++) { if (i%10 == 0) returnvalue += Integer.toString(i); else if (i%10 < Integer.toString(i).length()) ; else returnvalue += " "; } return returnvalue + "\n"; } /** Generates a basic formatted readingframe */ private String generateReadingframe(int number, boolean backwards) throws Exception { SymbolList symL; String formattedReadingframe = ""; //ToDo: FEHLER AUSGEBEN WENN NUMBER > 3 number --; if (backwards) symL = DNATools.reverseComplement(this.symL); else symL = this.symL; //Translate the DNA into AA symL = symL.subList(number+1, symL.length() - (symL.length() - number)%3); symL = DNATools.toRNA(symL); symL = RNATools.translate(symL); //Insert beginning spaces for (int i = 1; i < number + 1; i++) { formattedReadingframe += " "; } //Insert 2 spaces between each AA for (int i = 1; i <= symL.length() ; i++) { formattedReadingframe += symL.subStr(i, i) + " " ; } return formattedReadingframe + "\n"; } }