int[][] cons2;
+ private String[] consSymbs;
+
/**
* Creates a new Conservation object.
*
{
consString.append('-');
}
-
+ consSymbs = new String[end-start+1];
for (int i = start; i <= end; i++)
{
gapcons = countConsNGaps(i);
totGaps = gapcons[1];
pgaps = ((float) totGaps * 100) / (float) sequences.length;
-
+ consSymbs[i-start]=new String();
+
if (percentageGaps > pgaps)
{
resultHash = total[i - start];
-
// Now find the verdict
count = 0;
enumeration = resultHash.keys();
{
type = (String) enumeration.nextElement();
result = (Integer) resultHash.get(type);
-
// Do we want to count +ve conservation or +ve and -ve cons.?
if (consflag)
{
if (result.intValue() == 1)
{
+ consSymbs[i-start] = type+" "+consSymbs[i-start];
count++;
}
}
{
if (result.intValue() != -1)
{
+ {
+ if (result.intValue()==0) {
+ consSymbs[i-start] = consSymbs[i-start]+ " !"+type;
+ } else {
+ consSymbs[i-start] = type+" "+consSymbs[i-start];
+ }
+ }
+
count++;
}
}
float vprop = value - min;
vprop /= max;
conservation.annotations[i] = new Annotation(String.valueOf(c),
- String.valueOf(value), ' ', value, new Color(minR
+ consSymbs[i-start], ' ', value, new Color(minR
+ (maxR * vprop), minG + (maxG * vprop), minB
+ (maxB * vprop)));
{
continue;
}
-
+// if invalid string used, then regex has no matched to/from
int sres = seq
.findPosition(resIndex
+ Integer.parseInt(spaces.elementAt(resIndex)
// TODO: deal with ID collisions - SequenceI should be appended to list
// associated with this key.
names.put(new SeqIdName(seqs[i].getDisplayId(true)), seqs[i]);
+ SequenceI dbseq = seqs[i];
+ while (dbseq.getDatasetSequence()!=null)
+ {
+ dbseq = dbseq.getDatasetSequence();
+ }
// add in any interesting identifiers
- if (seqs[i].getDBRef() != null)
+ if (dbseq.getDBRef() != null)
{
- DBRefEntry dbr[] = seqs[i].getDBRef();
+ DBRefEntry dbr[] = dbseq.getDBRef();
SeqIdName sid = null;
for (int r = 0; r < dbr.length; r++)
{
--- /dev/null
+package jalview.analysis.scoremodels;
+
+import java.awt.Color;
+
+import jalview.analysis.AlignSeq;
+import jalview.api.analysis.ScoreModelI;
+import jalview.api.analysis.ViewBasedAnalysisI;
+import jalview.datamodel.AlignmentView;
+import jalview.datamodel.SeqCigar;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.util.Comparison;
+
+public class FeatureScoreModel implements ScoreModelI,ViewBasedAnalysisI
+{
+ jalview.api.FeatureRenderer fr;
+
+ @Override
+ public boolean configureFromAlignmentView(jalview.api.AlignmentViewPanel view)
+ {
+ fr = view.cloneFeatureRenderer();
+ return true;
+ }
+
+ @Override
+ public float[][] findDistances(AlignmentView seqData)
+ {
+
+ SequenceI[] sequenceString = seqData
+ .getVisibleAlignment(Comparison.GapChars.charAt(0)).getSequencesArray();
+ int noseqs = sequenceString.length;
+ int cpwidth = seqData.getWidth();
+ float[][] distance = new float[noseqs][noseqs];
+ float max=0;
+ for (int cpos = 0;cpos<cpwidth;cpos++)
+ {
+ // get visible features at cpos under view's display settings and compare them
+ for (int i = 0; i < (noseqs - 1); i++)
+ {
+ SequenceFeature[] sf = fr.getVisible(sequenceString[i],cpos);
+ for (int j=i+1;j<noseqs;j++)
+ {
+ SequenceFeature[] jsf = fr.getVisible(sequenceString[i],cpos);
+
+
+ if (max < distance[i][j])
+ {
+ max = distance[i][j];
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < (noseqs - 1); i++)
+ {
+ for (int j = i; j < noseqs; j++)
+ {
+ distance[i][j] = max - distance[i][j];
+ distance[j][i] = distance[i][j];
+ }
+ }
+
+ return distance;
+ }
+
+ @Override
+ public String getName()
+ {
+ return "Smith Waterman Score";
+ }
+ @Override
+ public boolean isDNA()
+ {
+ return true;
+ }
+ @Override
+ public boolean isProtein()
+ {
+ return true;
+ }
+ public String toString() {
+ return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix";
+ }
+}
* ensuring the alignment is still visible.
*/
void adjustAnnotationHeight();
+
+ FeatureRenderer getFeatureRenderer();
+
+ FeatureRenderer cloneFeatureRenderer();
+
}
*/
package jalview.api;
+import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+import jalview.schemes.GraduatedColor;
import java.awt.Color;
void featuresAdded();
+ Object getFeatureStyle(String ft);
+
+ void setColour(String ft, Object ggc);
+
}
--- /dev/null
+package jalview.api.analysis;
+
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+
+public interface ViewBasedAnalysisI
+{
+
+ /**
+ * Parameterise the analysis model using the current view
+ * @param view
+ * @return true if model is applicable and calculation should procede
+ */
+
+ boolean configureFromAlignmentView(AlignmentViewPanel view);
+
+}
{
return seqPanel.seqCanvas.sr;
}
-
- public FeatureRenderer getFeatureRenderer()
+ @Override
+ public jalview.api.FeatureRenderer getFeatureRenderer()
{
return seqPanel.seqCanvas.fr;
}
-
+ @Override
+ public jalview.api.FeatureRenderer cloneFeatureRenderer()
+ {
+ FeatureRenderer nfr = new FeatureRenderer(av);
+ nfr.transferSettings(seqPanel.seqCanvas.fr);
+ return nfr;
+ }
public void alignmentChanged()
{
av.alignmentChanged(this);
}
}
- public void transferSettings(FeatureRenderer fr)
+ public void transferSettings(jalview.api.FeatureRenderer _fr)
{
- renderOrder = fr.renderOrder;
- featureGroups = fr.featureGroups;
- featureColours = fr.featureColours;
- transparency = fr.transparency;
- if (av != null && fr.av != null && fr.av != av)
+ if (_fr instanceof FeatureRenderer)
{
- if (fr.av.featuresDisplayed != null)
+ FeatureRenderer fr = (FeatureRenderer) _fr;
+ renderOrder = fr.renderOrder;
+ featureGroups = fr.featureGroups;
+ featureColours = fr.featureColours;
+ transparency = fr.transparency;
+ if (av != null && fr.av != null && fr.av != av)
{
- if (av.featuresDisplayed == null)
- {
- av.featuresDisplayed = new Hashtable();
- }
- else
+ if (fr.av.featuresDisplayed != null)
{
- av.featuresDisplayed.clear();
- }
- Enumeration en = fr.av.featuresDisplayed.keys();
- while (en.hasMoreElements())
- {
- av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE);
+ if (av.featuresDisplayed == null)
+ {
+ av.featuresDisplayed = new Hashtable();
+ }
+ else
+ {
+ av.featuresDisplayed.clear();
+ }
+ Enumeration en = fr.av.featuresDisplayed.keys();
+ while (en.hasMoreElements())
+ {
+ av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE);
+ }
}
}
}
+ else
+ {
+ throw new Error(
+ "Implementation error: cannot port feature settings from implementation of type "
+ + _fr.getClass() + " to " + getClass());
+ }
}
static String lastFeatureAdded;
new OOMWarning(string, error, this);
}
- public FeatureRenderer cloneFeatureRenderer()
+ @Override
+ public jalview.api.FeatureRenderer cloneFeatureRenderer()
{
return new FeatureRenderer(this);
}
-
+ @Override
+ public jalview.api.FeatureRenderer getFeatureRenderer()
+ {
+ return seqPanel.seqCanvas.getFeatureRenderer();
+ }
public void updateFeatureRenderer(FeatureRenderer fr)
{
fr.transferSettings(seqPanel.seqCanvas.getFeatureRenderer());
}
- public void updateFeatureRendererFrom(FeatureRenderer fr)
+ public void updateFeatureRendererFrom(jalview.api.FeatureRenderer fr)
{
if (seqPanel.seqCanvas.getFeatureRenderer() != null)
{
{
if (fr == null)
{
- fr = ap.cloneFeatureRenderer();
+ fr = (jalview.gui.FeatureRenderer) ap.cloneFeatureRenderer();
}
else
{
* @author $author$
* @version $Revision$
*/
-public class FeatureRenderer implements jalview.api.FeatureRenderer
+public class FeatureRenderer extends jalview.viewmodel.FeatureRenderer implements jalview.api.FeatureRenderer
{
AlignmentPanel ap;
* @param fr
* settings to copy
*/
- public void transferSettings(FeatureRenderer fr)
+ public void transferSettings(jalview.api.FeatureRenderer _fr)
{
+ FeatureRenderer fr = (FeatureRenderer) _fr;
FeatureRendererSettings frs = new FeatureRendererSettings(fr);
this.renderOrder = frs.renderOrder;
this.featureGroups = frs.featureGroups;
public Color findColour(char c, int j, SequenceI seq)
{
Color currentColour = Color.white;
- AlignmentAnnotation annotation = (seqAssociated ? seqannot.get(seq)
+ AlignmentAnnotation annotation = (seqAssociated && seqannot!=null ? seqannot.get(seq)
: this.annotation);
if (annotation == null)
{
--- /dev/null
+package jalview.viewmodel;
+
+import jalview.datamodel.SequenceFeature;
+
+import java.awt.Color;
+
+public class FeatureRenderer
+{
+}
{
if (dispFeatures)
{
- jalview.gui.FeatureRenderer fr = ((jalview.gui.AlignmentPanel) ap)
+ jalview.api.FeatureRenderer fr = ((jalview.gui.AlignmentPanel) ap)
.cloneFeatureRenderer();
for (String ft : fc.keySet())
{