import jalview.datamodel.SequenceI;
import jalview.gui.ColourMenuHelper.ColourChangeListener;
import jalview.gui.ViewSelectionMenu.ViewSetProvider;
-import jalview.hmmer.HMMAlign;
-import jalview.hmmer.HMMBuild;
-import jalview.hmmer.HMMERParamStore;
-import jalview.hmmer.HMMERPreset;
-import jalview.hmmer.HMMSearch;
-import jalview.hmmer.HmmerCommand;
import jalview.io.AlignmentProperties;
import jalview.io.AnnotationFile;
import jalview.io.BioJsHTMLOutput;
import jalview.ws.jws1.Discoverer;
import jalview.ws.jws2.Jws2Discoverer;
import jalview.ws.jws2.jabaws2.Jws2Instance;
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.ParamDatastoreI;
-import jalview.ws.params.WsParamSetI;
import jalview.ws.seqfetcher.DbSourceProxy;
import java.awt.BorderLayout;
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.HashSet;
+import java.util.Enumeration;
+import java.util.Hashtable;
import java.util.List;
-import java.util.Set;
import java.util.Vector;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JEditorPane;
-import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class AlignFrame extends GAlignFrame implements DropTargetListener,
IProgressIndicator, AlignViewControllerGuiI, ColourChangeListener
{
+
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.
*
ap.av.updateConservation(ap);
ap.av.updateConsensus(ap);
ap.av.updateStrucConsensus(ap);
- ap.av.initInformationWorker(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(boolean withDefaults)
- {
- if (!alignmentIsSufficient(1))
- {
- return;
- }
-
- /*
- * get default parameters, and optionally show a dialog
- * to allow them to be modified
- */
- ParamDatastoreI store = HMMERParamStore.forBuild(viewport);
- List<ArgumentI> args = store.getServiceParameters();
-
- if (!withDefaults)
- {
- WsParamSetI set = new HMMERPreset();
- WsJobParameters params = new WsJobParameters(store, set, args);
- if (params.showRunDialog())
- {
- args = params.getJobParams();
- }
- else
- {
- return; // user cancelled
- }
- }
- new Thread(new HMMBuild(this, args)).start();
- }
-
- @Override
- public void hmmAlign_actionPerformed(boolean withDefaults)
- {
- if (!(checkForHMM() && alignmentIsSufficient(2)))
- {
- return;
- }
-
- /*
- * get default parameters, and optionally show a dialog
- * to allow them to be modified
- */
- ParamDatastoreI store = HMMERParamStore.forAlign(viewport);
- List<ArgumentI> args = store.getServiceParameters();
-
- if (!withDefaults)
- {
- WsParamSetI set = new HMMERPreset();
- WsJobParameters params = new WsJobParameters(store, set, args);
- if (params.showRunDialog())
- {
- args = params.getJobParams();
- }
- else
- {
- return; // user cancelled
- }
- }
- new Thread(new HMMAlign(this, args)).start();
- }
-
- @Override
- public void hmmSearch_actionPerformed(boolean withDefaults)
- {
- if (!checkForHMM())
- {
- return;
- }
-
- /*
- * get default parameters, and (if requested) show
- * dialog to allow modification
- */
- ParamDatastoreI store = HMMERParamStore.forSearch(viewport);
- List<ArgumentI> args = store.getServiceParameters();
-
- if (!withDefaults)
- {
- WsParamSetI set = new HMMERPreset();
- WsJobParameters params = new WsJobParameters(store, set, args);
- if (params.showRunDialog())
- {
- args = params.getJobParams();
- }
- else
- {
- return; // user cancelled
- }
- }
- new Thread(new HMMSearch(this, args)).start();
- alignPanel.repaint();
- }
-
- /**
- * Checks if the alignment has at least one hidden Markov model, if not shows
- * a dialog advising to run hmmbuild or load an HMM profile
- *
- * @return
- */
- private boolean checkForHMM()
- {
- if (viewport.getAlignment().getHmmSequences().isEmpty())
- {
- JOptionPane.showMessageDialog(this,
- MessageManager.getString("warn.no_hmm"));
- return false;
- }
- return true;
- }
-
- /**
- * Checks if the alignment contains the required number of sequences.
- *
- * @param required
- * @return
- */
- public boolean alignmentIsSufficient(int required)
- {
- if (getViewport().getAlignment().getSequences().size() < required)
- {
- JOptionPane.showMessageDialog(this,
- MessageManager.getString("label.not_enough_sequences"));
- return false;
- }
- return true;
- }
-
- /**
- * Opens a file browser and adds the selected file, if in Fasta, Stockholm or
- * Pfam format, to the list held under preference key "HMMSEARCH_DBS" (as a
- * comma-separated list)
- */
- @Override
- public void addDatabase_actionPerformed() throws IOException
- {
- if (Cache.getProperty(Preferences.HMMSEARCH_DBS) == null)
- {
- Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
- }
-
- String path = openFileChooser(false);
- if (path != null && new File(path).exists())
- {
- IdentifyFile identifier = new IdentifyFile();
- FileFormatI format = identifier.identify(path, DataSourceType.FILE);
- if (format == FileFormat.Fasta || format == FileFormat.Stockholm
- || format == FileFormat.Pfam)
- {
- String currentDbPaths = Cache
- .getProperty(Preferences.HMMSEARCH_DBS);
- currentDbPaths += Preferences.COMMA + path;
- Cache.setProperty(Preferences.HMMSEARCH_DBS, currentDbPaths);
- }
- else
- {
- JOptionPane.showMessageDialog(this,
- MessageManager.getString("warn.invalid_format"));
- }
- }
- }
-
- /**
- * Opens a file chooser, optionally restricted to selecting folders
- * (directories) only. Answers the path to the selected file or folder, or
- * null if none is chosen.
- *
- * @param
- * @return
- */
- protected String openFileChooser(boolean forFolder)
- {
- // TODO duplicates GPreferences method - relocate to JalviewFileChooser?
- String choice = null;
- JFileChooser chooser = new JFileChooser();
- if (forFolder)
- {
- chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- }
- chooser.setDialogTitle(
- MessageManager.getString("label.open_local_file"));
- chooser.setToolTipText(MessageManager.getString("action.open"));
-
- int value = chooser.showOpenDialog(this);
-
- if (value == JFileChooser.APPROVE_OPTION)
- {
- choice = chooser.getSelectedFile().getPath();
- }
- return choice;
- }
-
- @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(
*
* @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) throws IOException, InterruptedException
+ void paste(boolean newAlignment)
{
boolean externalPaste = true;
try
System.out.println("Exception whilst pasting: " + ex);
// could be anything being pasted in here
}
+
}
@Override
}
if (viewport.getAlignment().getAlignmentAnnotation()
- .hashCode() == _annotationScoreVectorHash)
+ .hashCode() != _annotationScoreVectorHash)
{
- return;
- }
-
- sortByAnnotScore.removeAll();
- Set<String> scoreSorts = new HashSet<>();
- for (SequenceI sqa : viewport.getAlignment().getSequences())
- {
- AlignmentAnnotation[] anns = sqa.getAnnotation();
- for (int i = 0; anns != null && i < anns.length; i++)
+ sortByAnnotScore.removeAll();
+ // almost certainly a quicker way to do this - but we keep it simple
+ Hashtable scoreSorts = new Hashtable();
+ AlignmentAnnotation aann[];
+ for (SequenceI sqa : viewport.getAlignment().getSequences())
{
- AlignmentAnnotation aa = anns[i];
- if (aa != null && aa.hasScore() && aa.sequenceRef != null)
+ aann = sqa.getAnnotation();
+ for (int i = 0; aann != null && i < aann.length; i++)
{
- scoreSorts.add(aa.label);
+ if (aann[i].hasScore() && aann[i].sequenceRef != null)
+ {
+ scoreSorts.put(aann[i].label, aann[i].label);
+ }
}
}
- }
- for (String label : scoreSorts)
- {
- addSortByAnnotScoreMenuItem(sortByAnnotScore, label);
- }
- sortByAnnotScore.setVisible(!scoreSorts.isEmpty());
+ Enumeration labels = scoreSorts.keys();
+ while (labels.hasMoreElements())
+ {
+ addSortByAnnotScoreMenuItem(sortByAnnotScore,
+ (String) labels.nextElement());
+ }
+ sortByAnnotScore.setVisible(scoreSorts.size() > 0);
+ scoreSorts.clear();
- _annotationScoreVectorHash = viewport.getAlignment()
- .getAlignmentAnnotation().hashCode();
+ _annotationScoreVectorHash = viewport.getAlignment()
+ .getAlignmentAnnotation().hashCode();
+ }
}
/**
*
* @param file
* either a filename or a URL string.
- * @throws InterruptedException
- * @throws IOException
*/
public void loadJalviewDataFile(String file, DataSourceType sourceType,
FileFormatI format, SequenceI assocSeq)
}
if (isAnnotation)
{
+
alignPanel.adjustAnnotationHeight();
viewport.updateSequenceIdColours();
buildSortByAnnotationScoresMenu();
}
}
- /**
- * Sets the status of the HMMER menu
- */
- public void updateHMMERStatus()
- {
- hmmerMenu.setEnabled(HmmerCommand.isHmmerAvailable());
- }
-
@Override
protected void loadVcf_actionPerformed()
{