X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=9762258403bb4d2f6d08efd6937b499f150d52cb;hb=ceb4fd3a8909862e45ac79b242ed112a15998d84;hp=ba9237b00933ca6cb8c70cfcb9596c95ac54c166;hpb=9be70e5fd6d8a50a4989ca230dda0f7c6e7d2852;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index ba9237b..9762258 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -68,6 +68,17 @@ public class AlignFrame { viewport = new AlignViewport(al); + if(viewport.vconsensus==null) + { + //Out of memory caluclating consensus. + BLOSUM62Colour.setEnabled(false); + PIDColour.setEnabled(false); + conservationMenuItem.setEnabled(false); + modifyConservation.setEnabled(false); + abovePIDThreshold.setEnabled(false); + modifyPID.setEnabled(false); + } + alignPanel = new AlignmentPanel(this, viewport); alignPanel.annotationPanel.adjustPanelHeight(); alignPanel.annotationSpaceFillerHolder.setPreferredSize(alignPanel. @@ -96,6 +107,7 @@ public class AlignFrame } }); + addServiceListeners(); } @@ -548,15 +560,16 @@ public class AlignFrame { if (viewport.getSelectionGroup() == null) { + System.out.println("null here"); return; } SequenceGroup sg = viewport.getSelectionGroup(); Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); - StringBuffer buffer = new StringBuffer(); Hashtable orderedSeqs = new Hashtable(); + SequenceI [] seqs = new SequenceI[sg.getSize()]; for (int i = 0; i < sg.getSize(); i++) { @@ -586,6 +599,8 @@ public class AlignFrame index++; } } + + //FIND START RES //Returns residue following index if gap startRes = seq.findPosition(sg.getStartRes()); @@ -608,14 +623,15 @@ public class AlignFrame endRes += seq.getStart() - 1; } - buffer.append(seq.getName() + "\t" + - startRes + "\t" + - endRes + "\t" + - seq.getSequence(sg.getStartRes(), - sg.getEndRes() + 1) + "\n"); + seqs[i] = new Sequence(seq.getName(), + seq.getSequence(sg.getStartRes(), sg.getEndRes()+1), + startRes, + endRes); } - c.setContents(new StringSelection(buffer.toString()), null); + System.out.println("BLOBL"+FastaFile.print(seqs)); + + c.setContents(new StringSelection(FastaFile.print(seqs)), null); } /** @@ -658,33 +674,14 @@ public class AlignFrame } String str = (String) contents.getTransferData(DataFlavor.stringFlavor); - StringTokenizer st = new StringTokenizer(str); - ArrayList seqs = new ArrayList(); - while (st.hasMoreElements()) - { - String name = st.nextToken(); - int start = Integer.parseInt(st.nextToken()); - int end = Integer.parseInt(st.nextToken()); - Sequence sequence = new Sequence(name, st.nextToken(), start, - end); + String format = IdentifyFile.Identify(str, "Paste"); + SequenceI[] sequences = FormatAdapter.readFile(str, "Paste", format); - if (!newAlignment) - { - viewport.alignment.addSequence(sequence); - } - else - { - seqs.add(sequence); - } - } if (newAlignment) { - SequenceI[] newSeqs = new SequenceI[seqs.size()]; - seqs.toArray(newSeqs); - - AlignFrame af = new AlignFrame(new Alignment(newSeqs)); + AlignFrame af = new AlignFrame(new Alignment(sequences)); String newtitle = new String("Copied sequences"); if (title.startsWith("Copied sequences")) @@ -701,6 +698,10 @@ public class AlignFrame } else { + //!newAlignment + for (int i = 0; i < sequences.length; i++) + viewport.alignment.addSequence(sequences[i]); + viewport.setEndSeq(viewport.alignment.getHeight()); viewport.alignment.getWidth(); viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); @@ -732,7 +733,6 @@ public class AlignFrame */ protected void delete_actionPerformed(ActionEvent e) { - boolean seqsdeleted = false; if (viewport.getSelectionGroup() == null) { @@ -764,7 +764,6 @@ public class AlignFrame if (seq.getSequence().length() < 1) { - seqsdeleted = true; viewport.getAlignment().deleteSequence(seq); } else @@ -993,7 +992,7 @@ public class AlignFrame { seqs = viewport.getSelectionGroup().sequences; start = viewport.getSelectionGroup().getStartRes(); - end = viewport.getSelectionGroup().getEndRes(); + end = viewport.getSelectionGroup().getEndRes()+1; } else { @@ -1005,32 +1004,63 @@ public class AlignFrame current = (SequenceI) seqs.elementAt(i); jSize = current.getLength(); + // Removing a range is much quicker than removing gaps + // one by one for long sequences int j = start; + int rangeStart=-1, rangeEnd=-1; do { if (jalview.util.Comparison.isGap(current.getCharAt(j))) { - current.deleteCharAt(j); - j--; - jSize--; + if(rangeStart==-1) + { + rangeStart = j; + rangeEnd = j+1; + } + else + { + rangeEnd++; + } + j++; + } + else + { + if(rangeStart>-1) + { + current.deleteChars(rangeStart, rangeEnd); + j-=rangeEnd-rangeStart; + jSize-=rangeEnd-rangeStart; + rangeStart = -1; + rangeEnd = -1; + } + else + j++; } - j++; } while (j < end && j < jSize); + if(rangeStart>-1) + { + current.deleteChars(rangeStart, rangeEnd); + } } viewport.setStartRes(seq.findIndex(startRes)-1); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } public void alignmentChanged() { - viewport.updateConsensus(); - viewport.updateConservation(); + if(viewport.vconsensus!=null) + { + viewport.updateConsensus(); + viewport.updateConservation(); + } resetAllColourSchemes(); + if(alignPanel.overviewPanel!=null) + alignPanel.overviewPanel.updateOverviewImage(); + alignPanel.repaint(); } @@ -1808,21 +1838,11 @@ public class AlignFrame return; } - try - { PCAPanel pcaPanel = new PCAPanel(viewport, null); JInternalFrame frame = new JInternalFrame(); frame.setContentPane(pcaPanel); Desktop.addInternalFrame(frame, "Principal component analysis", 400, 400); - } - catch (java.lang.OutOfMemoryError ex) - { - JOptionPane.showInternalMessageDialog(this, - "Too many sequences selected\nfor Principal Component Analysis!!", - "Out of memory", - JOptionPane.WARNING_MESSAGE); - } } /** @@ -2004,17 +2024,6 @@ public class AlignFrame } ; }); - viewport.addPropertyChangeListener(new java.beans.PropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent evt) - { - if (evt.getPropertyName().equals("alignment")) - { - treePanel.getTree().UpdatePlaceHolders( (Vector) evt.getNewValue()); - treePanel.repaint(); - } - } - }); } /**