import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemes;
import jalview.schemes.ResidueColourScheme;
+import jalview.schemes.ResidueProperties;
import jalview.schemes.TCoffeeColourScheme;
+import jalview.util.Comparison;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
import jalview.viewmodel.ViewportRanges;
import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import java.beans.PropertyChangeEvent;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.net.URL;
import java.util.Arrays;
import java.util.Deque;
import java.util.Enumeration;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
import java.util.Vector;
import javax.swing.JCheckBoxMenuItem;
IProgressIndicator, AlignViewControllerGuiI, ColourChangeListener
{
+ Map<String, Float> distribution = new HashMap<>(); // temporary
+
public static final int DEFAULT_WIDTH = 700;
public static final int DEFAULT_HEIGHT = 500;
*/
String fileName = null;
+
/**
* Creates a new AlignFrame object with specific width and height.
*
showConsensusHistogram.setSelected(av.isShowConsensusHistogram());
showSequenceLogo.setSelected(av.isShowSequenceLogo());
normaliseSequenceLogo.setSelected(av.isNormaliseSequenceLogo());
+ showInformationHistogram.setSelected(av.isShowInformationHistogram());
+ showHMMSequenceLogo.setSelected(av.isShowHMMSequenceLogo());
+ normaliseHMMSequenceLogo.setSelected(av.isNormaliseHMMSequenceLogo());
ColourMenuHelper.setColourSelected(colourMenu,
av.getGlobalColourScheme());
getViewport().getAlignment().addAnnotation(annotation);
annotation.setHMM(hmm);
isAnnotation = true;
+
+ BufferedReader input = new BufferedReader(new FileReader(
+ "H:/Desktop/Distributions/BadAlignment-8.csv"));
+ String line = input.readLine();
+
+ while (!("".equals(line)) && line != null)
+ {
+ Scanner scanner = new Scanner(line);
+ if (scanner.hasNext())
+ {
+ scanner.useDelimiter(",");
+ String value = scanner.next();
+
+ distribution.put(value, scanner.nextFloat());
+ line = input.readLine();
+ }
+ }
+
+
+ AlignmentI alignment = getViewport().getAlignment();
+ Integer alpha = 0;
+ final int AMINO = 0;
+ final int DNA = 1;
+ if ("amino".equals(hmm.getAlphabetType()))
+ {
+ alpha = AMINO;
+ }
+ else if ("DNA".equals(hmm.getAlphabetType()))
+ {
+ alpha = DNA;
+ }
+
+
+ int size = 0;
+
+ for (int l = 1; l < hmm.getLength() + 1; l++)
+ {
+ for (int n = 0; n < alignment.getHeight(); n++)
+ {
+
+ char character = alignment.getSequenceAt(n)
+ .getCharAt(hmm.getNodeAlignmentColumn(l));
+ character = Character.toUpperCase(character);
+
+ boolean containedN;
+ boolean containedA;
+
+ containedN = ResidueProperties.nucleotideBackgroundFrequencies
+ .containsKey(character);
+ containedA = ResidueProperties.aminoBackgroundFrequencies
+ .containsKey(character);
+
+ if (!Comparison.isGap(character)
+ && ((alpha == DNA && containedN)
+ || (alpha == AMINO && containedA)))
+ {
+ size++;
+ }
+
+ }
+ }
+
+ for (int l = 1; l < hmm.getLength() + 1; l++)
+ {
+ for (int n = 0; n < alignment.getHeight(); n++)
+ {
+ Double prob;
+ char character;
+ character = alignment.getSequenceAt(n)
+ .getCharAt(hmm.getNodeAlignmentColumn(l));
+ character = Character.toUpperCase(character);
+ boolean containedN;
+ boolean containedA;
+
+ containedN = ResidueProperties.nucleotideBackgroundFrequencies
+ .containsKey(character);
+ containedA = ResidueProperties.aminoBackgroundFrequencies
+ .containsKey(character);
+
+ if (!Comparison.isGap(character)
+ && ((alpha == DNA && containedN)
+ || (alpha == AMINO && containedA)))
+ {
+ prob = hmm.getMatchEmissionProbability(
+ hmm.getNodeAlignmentColumn(l), character);
+ if (prob == 0d)
+ {
+ System.out.println("?");
+ }
+
+ double freq = 0;
+ if (alpha == AMINO)
+ {
+ freq = ResidueProperties.aminoBackgroundFrequencies
+ .get(character);
+ }
+ if (alpha == DNA)
+ {
+ freq = ResidueProperties.nucleotideBackgroundFrequencies
+ .get(character);
+ }
+ Double doubleValue = Math.log(prob / freq);
+
+ String value = String.format("%.1f", doubleValue);
+ if ("-0.0".equals(value))
+ {
+ value = "0.0";
+ }
+ if (distribution.containsKey(value))
+ {
+ float prev = distribution.get(value);
+ prev = prev + (10000f / size);
+ distribution.put(value, prev);
+ }
+ else
+ {
+ distribution.put(value, 10000f / size);
+ }
+
+
+ }
+
+ }
+ }
+
+ PrintWriter writer = new PrintWriter(
+ new File(
+ "H:/Desktop/Distributions/BadAlignment-8.csv"));
+ for (Map.Entry<String, Float> entry : distribution
+ .entrySet())
+ {
+ writer.println(entry.getKey() + "," + entry.getValue());
+
+ }
+
+ writer.close();
+
+
}
else if (FileFormat.Jnet.equals(format))
{
}
@Override
+ protected void showInformationHistogram_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowInformationHistogram(
+ showInformationHistogram.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ @Override
+ protected void showHMMSequenceLogo_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowHMMSequenceLogo(showHMMSequenceLogo.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ @Override
+ protected void normaliseHMMSequenceLogo_actionPerformed(ActionEvent e)
+ {
+ showHMMSequenceLogo.setState(true);
+ viewport.setShowHMMSequenceLogo(true);
+ viewport.setNormaliseHMMSequenceLogo(normaliseSequenceLogo.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ @Override
protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e)
{
alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());