import jalview.datamodel.AlignmentOrder;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.HiddenMarkovModel;
import jalview.datamodel.HiddenSequences;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SeqCigar;
import jalview.io.FileLoader;
import jalview.io.FileParse;
import jalview.io.FormatAdapter;
+import jalview.io.HMMFile;
import jalview.io.HtmlSvgOutput;
import jalview.io.IdentifyFile;
import jalview.io.JPredFile;
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;
public AlignViewControllerI avc;
- List<AlignmentPanel> alignPanels = new ArrayList<AlignmentPanel>();
+ List<AlignmentPanel> alignPanels = new ArrayList<>();
/**
* Last format used to load or save alignments in this window
*/
String fileName = null;
+
/**
* Creates a new AlignFrame object with specific width and height.
*
* @param height
* height of frame.
*/
- public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns,
+ public AlignFrame(AlignmentI al, HiddenColumns hiddenColumns,
int width, int height)
{
this(al, hiddenColumns, width, height, null);
* @param sequenceSetId
* (may be null)
*/
- public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns,
+ public AlignFrame(AlignmentI al, HiddenColumns hiddenColumns,
int width, int height, String sequenceSetId)
{
this(al, hiddenColumns, width, height, sequenceSetId, null);
* @param viewId
* (may be null)
*/
- public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns,
+ public AlignFrame(AlignmentI al, HiddenColumns hiddenColumns,
int width, int height, String sequenceSetId, String viewId)
{
setSize(width, height);
}
public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs,
- ColumnSelection hiddenColumns, int width, int height)
+ HiddenColumns hiddenColumns, int width, int height)
{
setSize(width, height);
addKeyListener();
- final List<AlignmentPanel> selviews = new ArrayList<AlignmentPanel>();
- final List<AlignmentPanel> origview = new ArrayList<AlignmentPanel>();
+ final List<AlignmentPanel> selviews = new ArrayList<>();
+ final List<AlignmentPanel> origview = new ArrayList<>();
final String menuLabel = MessageManager
.getString("label.copy_format_from");
ViewSelectionMenu vsel = new ViewSelectionMenu(menuLabel,
origview.clear();
origview.add(alignPanel);
// make an array of all alignment panels except for this one
- List<AlignmentPanel> aps = new ArrayList<AlignmentPanel>(
+ List<AlignmentPanel> aps = new ArrayList<>(
Arrays.asList(Desktop.getAlignmentPanels(null)));
aps.remove(AlignFrame.this.alignPanel);
return aps.toArray(new AlignmentPanel[aps.size()]);
case KeyEvent.VK_PAGE_UP:
if (viewport.getWrapAlignment())
{
- alignPanel.scrollUp(true);
+ vpRanges.scrollUp(true);
}
else
{
- alignPanel.setScrollValues(vpRanges.getStartRes(),
- 2 * vpRanges.getStartSeq() - vpRanges.getEndSeq());
+ vpRanges.pageUp();
}
break;
case KeyEvent.VK_PAGE_DOWN:
if (viewport.getWrapAlignment())
{
- alignPanel.scrollUp(false);
+ vpRanges.scrollUp(false);
}
else
{
- alignPanel.setScrollValues(vpRanges.getStartRes(),
- vpRanges.getEndSeq());
+ vpRanges.pageDown();
}
break;
}
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());
exportData.getAlignment(), // class cast exceptions will
// occur in the distant future
exportData.getOmitHidden(), exportData.getStartEndPostions(),
- f.getCacheSuffixDefault(format),
- viewport.getColumnSelection());
+ f.getCacheSuffixDefault(format), viewport.getAlignment()
+ .getHiddenColumns());
if (output == null)
{
cap.setText(new FormatAdapter(alignPanel, exportData.getSettings())
.formatSequences(format, exportData.getAlignment(),
exportData.getOmitHidden(),
- exportData.getStartEndPostions(),
- viewport.getColumnSelection()));
+ exportData
+ .getStartEndPostions(), viewport
+ .getAlignment().getHiddenColumns()));
Desktop.addInternalFrame(cap, MessageManager.formatMessage(
"label.alignment_output_command",
new Object[] { e.getActionCommand() }), 600, 500);
alignmentToExport = viewport.getAlignment();
}
alignmentStartEnd = alignmentToExport
- .getVisibleStartAndEndIndex(viewport.getColumnSelection()
- .getHiddenColumns());
+ .getVisibleStartAndEndIndex(viewport.getAlignment()
+ .getHiddenColumns()
+ .getHiddenRegions());
AlignmentExportData ed = new AlignmentExportData(alignmentToExport,
omitHidden, alignmentStartEnd, settings);
return ed;
synchronized void slideSequences(boolean right, int size)
{
- List<SequenceI> sg = new ArrayList<SequenceI>();
+ List<SequenceI> sg = new ArrayList<>();
if (viewport.cursorMode)
{
sg.add(viewport.getAlignment().getSequenceAt(
return;
}
- List<SequenceI> invertGroup = new ArrayList<SequenceI>();
+ List<SequenceI> invertGroup = new ArrayList<>();
for (SequenceI seq : viewport.getAlignment().getSequences())
{
ArrayList<int[]> hiddenColumns = null;
if (viewport.hasHiddenColumns())
{
- hiddenColumns = new ArrayList<int[]>();
+ hiddenColumns = new ArrayList<>();
int hiddenOffset = viewport.getSelectionGroup().getStartRes(), hiddenCutoff = viewport
.getSelectionGroup().getEndRes();
- for (int[] region : viewport.getColumnSelection().getHiddenColumns())
+ for (int[] region : viewport.getAlignment().getHiddenColumns()
+ .getHiddenRegions())
{
if (region[0] >= hiddenOffset && region[1] <= hiddenCutoff)
{
}
int alwidth = 0;
- ArrayList<Integer> newGraphGroups = new ArrayList<Integer>();
+ ArrayList<Integer> newGraphGroups = new ArrayList<>();
int fgroup = -1;
if (newAlignment)
*/
protected List<String> getExistingViewNames(List<Component> comps)
{
- List<String> existingNames = new ArrayList<String>();
+ List<String> existingNames = new ArrayList<>();
for (Component comp : comps)
{
if (comp instanceof AlignmentPanel)
frame.setContentPane(overview);
Desktop.addInternalFrame(frame, MessageManager.formatMessage(
"label.overview_params", new Object[] { this.getTitle() }),
- frame.getWidth(), frame.getHeight());
+ true, frame.getWidth(), frame.getHeight(), true, true);
frame.pack();
frame.setLayer(JLayeredPane.PALETTE_LAYER);
frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
if (viewport.getSelectionGroup() != null
&& viewport.getSelectionGroup().getSize() > 0)
{
- if (viewport.getSelectionGroup().getSize() < 3)
- {
- JvOptionPane
- .showMessageDialog(
- Desktop.desktop,
- MessageManager
- .getString("label.you_need_more_two_sequences_selected_build_tree"),
- MessageManager
- .getString("label.not_enough_sequences"),
- JvOptionPane.WARNING_MESSAGE);
- return;
- }
-
SequenceGroup sg = viewport.getSelectionGroup();
/* Decide if the selection is a column region */
List<Component> comps = PaintRefresher.components.get(viewport
.getSequenceSetId());
- List<TreePanel> treePanels = new ArrayList<TreePanel>();
+ List<TreePanel> treePanels = new ArrayList<>();
for (Component comp : comps)
{
if (comp instanceof TreePanel)
@Override
public void run()
{
- final List<JMenuItem> legacyItems = new ArrayList<JMenuItem>();
+ final List<JMenuItem> legacyItems = new ArrayList<>();
try
{
// System.err.println("Building ws menu again "
// TODO: group services by location as well as function and/or
// introduce
// object broker mechanism.
- final Vector<JMenu> wsmenu = new Vector<JMenu>();
+ final Vector<JMenu> wsmenu = new Vector<>();
final IProgressIndicator af = me;
/*
// Java's Transferable for native dnd
evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
Transferable t = evt.getTransferable();
- List<String> files = new ArrayList<String>();
- List<DataSourceType> protocols = new ArrayList<DataSourceType>();
+ List<String> files = new ArrayList<>();
+ List<DataSourceType> protocols = new ArrayList<>();
try
{
/**
* Object[] { String,SequenceI}
*/
- ArrayList<Object[]> filesmatched = new ArrayList<Object[]>();
- ArrayList<String> filesnotmatched = new ArrayList<String>();
+ ArrayList<Object[]> filesmatched = new ArrayList<>();
+ ArrayList<String> filesnotmatched = new ArrayList<>();
for (int i = 0; i < files.size(); i++)
{
String file = files.get(i).toString();
"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))
{
JPredFile predictions = new JPredFile(file, sourceType);
viewport.getAlignment(), 0, false);
SequenceI repseq = viewport.getAlignment().getSequenceAt(0);
viewport.getAlignment().setSeqrep(repseq);
- ColumnSelection cs = new ColumnSelection();
+ HiddenColumns cs = new HiddenColumns();
cs.hideInsertionsFor(repseq);
- viewport.setColumnSelection(cs);
+ viewport.getAlignment().setHiddenColumns(cs);
isAnnotation = true;
}
// else if (IdentifyFile.FeaturesFile.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());
{
return;
}
- List<SequenceI> cdnaSeqs = new ArrayList<SequenceI>();
+ List<SequenceI> cdnaSeqs = new ArrayList<>();
for (SequenceI aaSeq : alignment.getSequences())
{
for (AlignedCodonFrame acf : mappings)