- protected void showProductsFor(SequenceI[] sel, Alignment ds,
- boolean isRegSel, boolean dna, String source)
- {
- final boolean fisRegSel = isRegSel;
- final boolean fdna = dna;
- final String fsrc = source;
- final AlignFrame ths = this;
- final SequenceI[] fsel = sel;
- Runnable foo = new Runnable()
- {
-
- @Override
- public void run()
- {
- final long sttime = System.currentTimeMillis();
- ths.setProgressBar("Searching for sequences from " + fsrc, sttime);
- try
- {
- Alignment ds = ths.getViewport().getAlignment().getDataset(); // update
- // our local
- // dataset
- // reference
- Alignment prods = CrossRef
- .findXrefSequences(fsel, fdna, fsrc, ds);
- if (prods != null)
- {
- SequenceI[] sprods = new SequenceI[prods.getHeight()];
- for (int s = 0; s < sprods.length; s++)
- {
- sprods[s] = (prods.getSequenceAt(s)).deriveSequence();
- if (ds.getSequences() == null
- || !ds.getSequences().contains(
- sprods[s].getDatasetSequence()))
- ds.addSequence(sprods[s].getDatasetSequence());
- sprods[s].updatePDBIds();
- }
- Alignment al = new Alignment(sprods);
- AlignedCodonFrame[] cf = prods.getCodonFrames();
- al.setDataset(ds);
- for (int s = 0; cf != null && s < cf.length; s++)
- {
- al.addCodonFrame(cf[s]);
- cf[s] = null;
- }
- AlignFrame naf = new AlignFrame(al, DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
- String newtitle = "" + ((fdna) ? "Proteins " : "Nucleotides ")
- + " for " + ((fisRegSel) ? "selected region of " : "")
- + getTitle();
- Desktop.addInternalFrame(naf, newtitle, DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
- }
- else
- {
- System.err.println("No Sequences generated for xRef type "
- + fsrc);
- }
- } catch (Exception e)
- {
- jalview.bin.Cache.log.error(
- "Exception when finding crossreferences", e);
- } catch (OutOfMemoryError e)
- {
- new OOMWarning("whilst fetching crossreferences", e);
- } catch (Error e)
- {
- jalview.bin.Cache.log.error("Error when finding crossreferences",
- e);
- }
- ths.setProgressBar("Finished searching for sequences from " + fsrc,
- sttime);
- }
-
- };
- Thread frunner = new Thread(foo);
- frunner.start();
- }
-
- public boolean canShowTranslationProducts(SequenceI[] selection,
- AlignmentI alignment)
- {
- // old way
- try
- {
- return (jalview.analysis.Dna.canTranslate(selection,
- viewport.getViewAsVisibleContigs(true)));
- } catch (Exception e)
- {
- jalview.bin.Cache.log
- .warn("canTranslate threw an exception - please report to help@jalview.org",
- e);
- return false;
- }
- }
-
- @Override
- public void showProducts_actionPerformed(ActionEvent e)
+ /**
+ * Finds and displays cross-references for the selected sequences (protein
+ * products for nucleotide sequences, dna coding sequences for peptides).
+ *
+ * @param sel
+ * the sequences to show cross-references for
+ * @param dna
+ * true if from a nucleotide alignment (so showing proteins)
+ * @param source
+ * the database to show cross-references for
+ */
+ protected void showProductsFor(final SequenceI[] sel,
+ final boolean _odna, final String source)