+ if (FileFormat.ScoreMatrix == format)
+ {
+ ScoreMatrixFile sm = new ScoreMatrixFile(new FileParse(file,
+ sourceType));
+ sm.parse();
+ // todo: i18n this message
+ statusBar
+ .setText(MessageManager.formatMessage(
+ "label.successfully_loaded_matrix",
+ sm.getMatrixName()));
+ }
+ else if (FileFormat.HMMER3.equals(format))
+ {
+ HMMFile hmmFile = new HMMFile(new FileParse(file, sourceType)); // TODO
+ // need
+ // to
+ // follow
+ // standard
+ // pipeline
+ hmmFile.parse();
+ HiddenMarkovModel hmm = hmmFile.getHMM();
+ AlignmentAnnotation annotation = hmm.createAnnotation(
+ getViewport().getAlignment().getWidth());
+ 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))