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.datamodel.SequenceI;
import jalview.gui.ColourMenuHelper.ColourChangeListener;
import jalview.gui.ViewSelectionMenu.ViewSetProvider;
+import jalview.hmmer.HMMAlignThread;
+import jalview.hmmer.HMMBuildThread;
import jalview.io.AlignmentProperties;
import jalview.io.AnnotationFile;
import jalview.io.BioJsHTMLOutput;
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 java.beans.PropertyChangeEvent;
import java.io.File;
import java.io.FileWriter;
+import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.util.ArrayList;
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.Vector;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
IProgressIndicator, AlignViewControllerGuiI, ColourChangeListener
{
+ Map<String, Float> distribution = new HashMap<>(); // temporary
+
public static final int DEFAULT_WIDTH = 700;
public static final int DEFAULT_HEIGHT = 500;
+ boolean autoAlignNewSequences;
+
+ boolean recurring;
+
/*
* The currently displayed panel (selected tabbed view if more than one)
*/
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.
*
init();
}
+ public void setIsRecurring(boolean status)
+ {
+ recurring = status;
+ }
+
/**
* initalise the alignframe from the underlying viewport data and the
* configurations
}
});
buildColourMenu();
+ buildHMMERMenu();
if (Desktop.desktop != null)
{
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()]);
}
+ private void buildHMMERMenu()
+ {
+ hmmerMenu.removeAll();
+
+ hmmerMenu.add(changeHMMERLocation);
+ hmmerMenu.addSeparator();
+
+ hmmerMenu.add(autoAlignSeqs);
+ hmmerMenu.addSeparator();
+
+ hmmerMenu.add(hmmAlign);
+ hmmerMenu.add(hmmBuild);
+ hmmerMenu.add(hmmSearch);
+
+ }
+
/**
* Change the filename and format for the alignment, and enable the 'reload'
* button functionality.
ap.av.updateConservation(ap);
ap.av.updateConsensus(ap);
ap.av.updateStrucConsensus(ap);
+ ap.av.updateInformation(ap);
}
}
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());
}
@Override
+ public void hmmBuild_actionPerformed(ActionEvent e)
+ throws IOException, InterruptedException
+ {
+ new Thread(new HMMBuildThread(this)).start();
+ alignPanel.repaint();
+
+ }
+
+ @Override
+ public void hmmAlign_actionPerformed(ActionEvent e)
+ throws IOException, InterruptedException
+ {
+ new Thread(new HMMAlignThread(this, true)).start();
+ alignPanel.repaint();
+ }
+
+ @Override
+ public void changeHMMERLocation_actionPerformed(ActionEvent e)
+ {
+ String location = JOptionPane.showInputDialog(
+ MessageManager.getString("label.enter_location"));
+ Cache.setProperty(Preferences.HMMER_PATH, location);
+ }
+
+ @Override
+ public void autoAlignSeqs_actionPerformed(boolean autoAlignSeqs)
+ {
+ autoAlignNewSequences = autoAlignSeqs;
+ alignPanel.repaint();
+ }
+
+ @Override
+ public void hmmSearch_actionPerformed(ActionEvent e)
+ {
+ alignPanel.repaint();
+ }
+
+ @Override
public void reload_actionPerformed(ActionEvent e)
{
if (fileName != null)
@Override
public void associatedData_actionPerformed(ActionEvent e)
+ throws IOException, InterruptedException
{
// Pick the tree file
JalviewFileChooser chooser = new JalviewFileChooser(
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.getAlignment().getHiddenColumns()
*
* @param e
* DOCUMENT ME!
+ * @throws InterruptedException
+ * @throws IOException
*/
@Override
protected void pasteNew_actionPerformed(ActionEvent e)
+ throws IOException, InterruptedException
{
paste(true);
}
*
* @param e
* DOCUMENT ME!
+ * @throws InterruptedException
+ * @throws IOException
*/
@Override
protected void pasteThis_actionPerformed(ActionEvent e)
+ throws IOException, InterruptedException
{
paste(false);
}
*
* @param newAlignment
* true to paste to a new alignment, otherwise add to this.
+ * @throws InterruptedException
+ * @throws IOException
*/
- void paste(boolean newAlignment)
+ void paste(boolean newAlignment) throws IOException, InterruptedException
{
boolean externalPaste = true;
try
}
int alwidth = 0;
- ArrayList<Integer> newGraphGroups = new ArrayList<Integer>();
+ ArrayList<Integer> newGraphGroups = new ArrayList<>();
int fgroup = -1;
if (newAlignment)
System.out.println("Exception whilst pasting: " + ex);
// could be anything being pasted in here
}
-
}
@Override
*/
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)
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();
*
* @param file
* either a filename or a URL string.
+ * @throws InterruptedException
+ * @throws IOException
*/
public void loadJalviewDataFile(String file, DataSourceType sourceType,
FileFormatI format, SequenceI assocSeq)
+ throws IOException, InterruptedException
{
try
{
"label.successfully_loaded_matrix",
sm.getMatrixName()));
}
+ else if (FileFormat.HMMER3.equals(format))
+ {
+ HMMFile hmmFile = new HMMFile(new FileParse(file, sourceType));
+ HiddenMarkovModel hmm = hmmFile.getHMM();
+ SequenceI hmmSeq = hmm.initHMMSequence(this, 0);
+ getViewport().initInformation(hmmSeq);
+ getViewport().updateInformation(alignPanel);
+
+ isAnnotation = true;
+
+ }
else if (FileFormat.Jnet.equals(format))
{
JPredFile predictions = new JPredFile(file, sourceType);
else
{
new FileLoader().LoadFile(viewport, file, sourceType, format);
+ if (autoAlignNewSequences && !recurring)
+ {
+ new Thread(new HMMAlignThread(this, false)).start();
+ }
}
}
}
if (isAnnotation)
{
-
alignPanel.adjustAnnotationHeight();
viewport.updateSequenceIdColours();
buildSortByAnnotationScoresMenu();
}
@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)
}
}
}
+
+
}