Team:Freiburg software/Code/SequenceView.java

/*    Copyright: synbiowave License: GPL Authors: Jörg Walossek Version: 0.1 DESCRIPTION: This class can creates the standard view for the SynBioWave robot. */

package org.synbiowave.sequence;

import java.util.ArrayList; import java.util.List;

import org.biojava.bio.seq.DNATools; import org.biojava.bio.seq.ProteinTools; import org.biojava.bio.seq.RNATools; import org.biojava.bio.symbol.IllegalSymbolException;

import com.google.wave.api.Annotation; import com.google.wave.api.Range;

// TODO: Auto-generated Javadoc /** * The Class SequenceView. */ public class SequenceView {

/** The a color code. */	private static char[][] aColorCode={{'Y','F','A','I','L','M','V'}, {'W'}, {'G'}, {'P'}, {'S','D','E','T'}, {'R','N','K'}, {'H'}, {'Q'}, {'C'}}; /** The a colors. */	private static String[] aColors= {"green","mediumturquoise","magenta","gold","red","blue","cornflowerblue","gray","saddlebrown"}; /** The n color code. */	private static char[][] nColorCode={{'U','T'}, {'A'}, {'G'}, {'C'}};

/** The n colors. */	private static String[] nColors={"red","green","black","blue"};

/**	 * Instantiates a new sequence view. */	public SequenceView{} /**	 * Checks if is sequence. * 	 * @param sequence the sequence * 	 * @return the string */	public static String isSequence(String sequence){ String type="DNA"; try{DNATools.createDNA(sequence);} catch(IllegalSymbolException e){ type="RNA"; try{RNATools.createRNA(sequence);} catch(IllegalSymbolException se){ type="PROTEIN"; try{ProteinTools.createProtein(sequence);} catch(IllegalSymbolException ise){ type="null";}}} return type;} /**	 * Gets the color. * 	 * @param sequence the sequence * @param type the type * @param rShift the r shift * 	 * @return the color */	public static List getColor(String sequence,String type,int rShift){ List cAnnotations=new ArrayList; return getColor(sequence, type, rShift, cAnnotations);}

/**	 * Gets the color. * 	 * @param sequence the sequence * @param type the type * @param rShift the r shift * @param cAnnotations the c annotations * 	 * @return the color */	public static List getColor(String sequence, String type, int rShift,List cAnnotations) { char[][] colorCode=SequenceView.nColorCode; String[] colors=SequenceView.nColors; if(type.contains("PROTEIN")){ colorCode=SequenceView.aColorCode; colors=SequenceView.aColors;} boolean na=true; int position=rShift; char[] sa=sequence.toUpperCase.toCharArray; for(char sc:sa){ if(na){ for(int r=0;r getScale(int length){ ArrayList sScale=new ArrayList; StringBuffer scale=new StringBuffer; StringBuffer numbers=new StringBuffer; int wait=0; for(int i=1;i<length+1;i++){ if((i%5)==0){ scale.append('\u23AA'); numbers.append(i); wait=String.valueOf(i).length-1;} else{ scale.append('\''); if(wait==0){numbers.append(' ');} else{wait--;}} if((i%50)==0){ sScale.add(scale.append('\n').append(numbers.append('\n')).toString); scale=new StringBuffer; numbers=new StringBuffer; wait=0;}} sScale.add(scale.append('\n').append(numbers.append('\n')).toString); return sScale;} /**	 * Gets the hTML view. * 	 * @param sequence the sequence * @param type the type * 	 * @return the hTML view */	public static String getHTMLView(String sequence,String type){ StringBuffer scale=new StringBuffer; StringBuffer numbers=new StringBuffer; int wait=0; for(int i=1;i<sequence.length+1;i++){ if((i%5)==0){ scale.append('|'); numbers.append(i); wait=String.valueOf(i).length-1;} else{ scale.append('\''); if(wait==0){numbers.append(" ");} else{wait--;}}} String htmlView="(br /)"+scale+"(br /)"+numbers+"(br /)"; char[][] colorCode=SequenceView.nColorCode; String[] colors=SequenceView.nColors; if(type.contains("PROTEIN")){ colorCode=SequenceView.aColorCode; colors=SequenceView.aColors;} char[] sa=sequence.toUpperCase.toCharArray; for(char sc:sa){ for(int r=0;r sequences){ int maxLength=0; for(String sequence:sequences){if(sequence.length>maxLength){maxLength=sequence.length;}} StringBuffer scale=new StringBuffer; StringBuffer numbers=new StringBuffer; int wait=0; for(int i=1;i<maxLength+1;i++){ if((i%5)==0){ scale.append('|'); numbers.append(i); wait=String.valueOf(i).length-1;} else{ scale.append('\''); if(wait==0){numbers.append(" ");} else{wait--;}}} String htmlView="(br /)"+scale+"(br /)"+numbers+"(br /)"; for(String sequence:sequences){ String type=isSequence(sequence); char[][] colorCode=SequenceView.nColorCode; String[] colors=SequenceView.nColors; if(type.contains("PROTEIN")){ colorCode=SequenceView.aColorCode; colors=SequenceView.aColors;} char[] sa=sequence.toUpperCase.toCharArray; for(char sc:sa){ for(int r=0;r<colorCode.length;r++){ for(int c=0;c<colorCode[r].length;c++){ if(colorCode[r][c]==sc){ htmlView+="(span style='color:"+colors[r]+";')"+sc+"(/span)";}}}} htmlView+="(br /)";} return htmlView+"(br /)";} }