}\r
else\r
{\r
- String output = new FormatAdapter().formatSequences(format,\r
- viewport.getAlignment().\r
- getSequences());\r
+\r
+ String[] omitHidden = null;\r
+\r
+ if (viewport.hasHiddenColumns)\r
+ {\r
+ System.out.println("PROMPT USER HERE");\r
+ omitHidden = viewport.getSelectionAsString();\r
+ }\r
+\r
+ String output = new FormatAdapter().formatSequences(\r
+ format,\r
+ viewport.getSelectionAsNewSequence(),\r
+ omitHidden) ;\r
+\r
+\r
if (output == null)\r
{\r
return false;\r
protected void outputText_actionPerformed(ActionEvent e)\r
{\r
CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
- Desktop.addInternalFrame(cap,\r
- "Alignment output - " + e.getActionCommand(), 600,\r
- 500);\r
- cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),\r
- viewport.getAlignment().\r
- getSequences()));\r
+\r
+\r
+ String [] omitHidden = null;\r
+\r
+ if(viewport.hasHiddenColumns)\r
+ {\r
+ System.out.println("PROMPT USER HERE");\r
+ omitHidden = viewport.getSelectionAsString();\r
+ }\r
+\r
+ cap.setText(new FormatAdapter().formatSequences(\r
+ e.getActionCommand(),\r
+ viewport.getSelectionAsNewSequence(),\r
+ omitHidden));\r
}\r
\r
/**\r
{\r
return;\r
}\r
-\r
- SequenceGroup sg = viewport.getSelectionGroup();\r
-\r
- Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
-\r
- Hashtable orderedSeqs = new Hashtable();\r
- SequenceI[] seqs = new SequenceI[sg.getSize(false)];\r
-\r
- for (int i = 0; i < sg.getSize(false); i++)\r
+ SequenceI [] seqs;\r
+ if(viewport.getSelectionGroup()==null)\r
{\r
- SequenceI seq = sg.getSequenceAt(i);\r
- int index = viewport.alignment.findIndex(seq);\r
- orderedSeqs.put(index + "", seq);\r
+ seqs = viewport.alignment.getSequencesArray();\r
}\r
-\r
- int index = 0, startRes, endRes;\r
- char ch;\r
-\r
- for (int i = 0; i < sg.getSize(false); i++)\r
+ else\r
{\r
- SequenceI seq = null;\r
-\r
- while (seq == null)\r
- {\r
- if (orderedSeqs.containsKey(index + ""))\r
- {\r
- seq = (SequenceI) orderedSeqs.get(index + "");\r
- index++;\r
-\r
- break;\r
- }\r
- else\r
- {\r
- index++;\r
- }\r
- }\r
+ seqs = viewport.getSelectionGroup().getSequencesInOrder(viewport.alignment);\r
+ }\r
\r
- //FIND START RES\r
- //Returns residue following index if gap\r
- startRes = seq.findPosition(sg.getStartRes());\r
+ Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
\r
- //FIND END RES\r
- //Need to find the residue preceeding index if gap\r
- endRes = 0;\r
+ FastaFile ff = new FastaFile();\r
+ ff.addJVSuffix( viewport.showJVSuffix );\r
\r
- for (int j = 0; j < sg.getEndRes() + 1 && j < seq.getLength(); j++)\r
- {\r
- ch = seq.getCharAt(j);\r
- if (!jalview.util.Comparison.isGap( (ch)))\r
- {\r
- endRes++;\r
- }\r
- }\r
+ c.setContents(new StringSelection(ff.print(seqs)), Desktop.instance);\r
\r
- if (endRes > 0)\r
+ Vector hiddenColumns = null;\r
+ if(viewport.hasHiddenColumns && viewport.getSelectionGroup()!=null)\r
+ {\r
+ hiddenColumns =new Vector();\r
+ int hiddenOffset = viewport.getSelectionGroup().getStartRes();\r
+ for(int i=0; i<viewport.getColumnSelection().getHiddenColumns().size(); i++)\r
{\r
- endRes += seq.getStart() - 1;\r
- }\r
+ int[] region = (int[])\r
+ viewport.getColumnSelection().getHiddenColumns().elementAt(i);\r
\r
- seqs[i] = new Sequence(seq.getName(),\r
- seq.getSequence(sg.getStartRes(), sg.getEndRes() + 1),\r
- startRes,\r
- endRes);\r
- seqs[i].setDescription(seq.getDescription());\r
- seqs[i].setDBRef(seq.getDBRef());\r
- seqs[i].setSequenceFeatures(seq.getSequenceFeatures());\r
- seqs[i].setDatasetSequence(seq.getDatasetSequence());\r
- if(seq.getAnnotation()!=null)\r
- {\r
- for(int a=0; a<seq.getAnnotation().length; a++)\r
- seqs[i].addAlignmentAnnotation(seq.getAnnotation()[a]);\r
+ hiddenColumns.addElement(new int[]{region[0]-hiddenOffset,\r
+ region[1]-hiddenOffset});\r
}\r
}\r
-\r
- FastaFile ff = new FastaFile();\r
- ff.addJVSuffix( viewport.showJVSuffix );\r
- c.setContents(new StringSelection( ff.print(seqs)), Desktop.instance);\r
- Desktop.jalviewClipboard = new Object[]{seqs, viewport.alignment.getDataset()};\r
+ Desktop.jalviewClipboard = new Object[]{ seqs,\r
+ viewport.alignment.getDataset(),\r
+ hiddenColumns};\r
}\r
\r
/**\r
AlignFrame af = new AlignFrame(alignment);\r
String newtitle = new String("Copied sequences");\r
\r
+ if(Desktop.jalviewClipboard[2]!=null)\r
+ {\r
+ Vector hc = (Vector)Desktop.jalviewClipboard[2];\r
+ for(int i=0; i<hc.size(); i++)\r
+ {\r
+ int [] region = (int[]) hc.elementAt(i);\r
+ for(int j=region[0]; j<region[1]+1; j++)\r
+ af.viewport.getColumnSelection().addElement(j);\r
+ af.viewport.getColumnSelection().hideColumns(region[0], af.viewport);\r
+ }\r
+ }\r
+\r
\r
//>>>This is a fix for the moment, until a better solution is found!!<<<\r
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().transferSettings(\r
}\r
\r
title = title + " on region";\r
- tp = new TreePanel(viewport,\r
- viewport.getSelectionGroup().getSequences(false),\r
- type, pwType,\r
- sg.getStartRes(), sg.getEndRes());\r
+ tp = new TreePanel(viewport, type, pwType);\r
}\r
else\r
{\r
return;\r
}\r
\r
- tp = new TreePanel(viewport,\r
- viewport.getAlignment().getSequences(), type, pwType,\r
- 0,\r
- viewport.alignment.getWidth());\r
+ tp = new TreePanel(viewport, type, pwType);\r
}\r
\r
addTreeMenuItem(tp, title);\r
if (nf.getTree() != null)\r
{\r
tp = new TreePanel(viewport,\r
- viewport.getAlignment().getSequences(), nf,\r
+ nf,\r
"FromFile",\r
title);\r
\r
{\r
return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
}\r
+\r
+ /**\r
+ * This method returns the a new SequenceI [] with\r
+ * the selection sequence and start and end points adjusted\r
+ * @return String[]\r
+ */\r
+ public SequenceI[] getSelectionAsNewSequence()\r
+ {\r
+ SequenceI[] sequences;\r
+\r
+ if (selectionGroup == null)\r
+ sequences = alignment.getSequencesArray();\r
+ else\r
+ sequences = selectionGroup.getSelectionAsNewSequences(alignment);\r
+\r
+ return sequences;\r
+ }\r
+\r
+\r
+ /**\r
+ * This method returns the visible selected area as text, as\r
+ * seen on the GUI, ie if columns are hidden they will not\r
+ * be returned in the result.\r
+ * Use this for calculating trees, PCA, redundancy etc on views\r
+ * which contain hidden columns.\r
+ * @return String[]\r
+ */\r
+ public String [] getSelectionAsString()\r
+ {\r
+ String [] selection = null;\r
+ SequenceI [] seqs= null;\r
+ int i, iSize;\r
+ int start = 0, end = 0;\r
+ if(selectionGroup!=null)\r
+ {\r
+ iSize = selectionGroup.getSize(false);\r
+ seqs = selectionGroup.getSequencesInOrder(alignment);\r
+ start = selectionGroup.getStartRes();\r
+ end = selectionGroup.getEndRes()+1;\r
+ }\r
+ else\r
+ {\r
+ iSize = alignment.getHeight();\r
+ seqs = alignment.getSequencesArray();\r
+ end = alignment.getWidth();\r
+ }\r
+\r
+ selection = new String[iSize];\r
+\r
+\r
+ for(i=0; i<iSize; i++)\r
+ {\r
+ if (hasHiddenColumns)\r
+ {\r
+ StringBuffer visibleSeq = new StringBuffer();\r
+ Vector regions = colSel.getHiddenColumns();\r
+\r
+ int blockStart = start, blockEnd=end;\r
+ int [] region;\r
+ int hideStart, hideEnd;\r
+\r
+ for (int j = 0; j < regions.size(); j++)\r
+ {\r
+ region = (int[]) regions.elementAt(j);\r
+ hideStart = region[0];\r
+ hideEnd = region[1];\r
+\r
+ if(hideStart < start)\r
+ {\r
+ continue;\r
+ }\r
+\r
+ blockStart = Math.min(blockStart, hideEnd+1);\r
+ blockEnd = Math.min(blockEnd, hideStart);\r
+\r
+ if(blockStart>blockEnd)\r
+ {\r
+ break;\r
+ }\r
+\r
+\r
+ visibleSeq.append(seqs[i].getSequence(blockStart, blockEnd));\r
+\r
+ blockStart = hideEnd+1;\r
+ blockEnd = end;\r
+ }\r
+\r
+ if(end>blockStart)\r
+ visibleSeq.append(seqs[i].getSequence(blockStart, end));\r
+\r
+ selection[i] = visibleSeq.toString();\r
+ }\r
+ else\r
+ {\r
+ selection[i] = seqs[i].getSequence(start, end);\r
+ }\r
+\r
+ // System.out.println(seqs[i].getName()+"\t"+ selection[i]);\r
+ }\r
+\r
+ return selection;\r
+ }\r
}\r
\r
break;\r
\r
+ case KeyEvent.VK_B:\r
+ av.getSelectionAsString();\r
+ break;\r
+\r
case KeyEvent.VK_DOWN:\r
if(av.cursorMode)\r
{\r
selected.setElementAt(new Integer(temp - change), i);\r
}\r
}\r
+\r
+ if(hiddenColumns!=null)\r
+ {\r
+ for(int i=0; i<hiddenColumns.size(); i++)\r
+ {\r
+ int[] region = (int[]) hiddenColumns.elementAt(i);\r
+ if(region[0] > start)\r
+ {\r
+ region[0] -= change;\r
+ region[1] -= change;\r
+ }\r
+ if(region[0]<0)\r
+ region[0] = 0;\r
+ if(region[1] <0)\r
+ region[1] = 0;\r
+ }\r
+ }\r
}\r
\r
/**\r
\r
public void run()\r
{\r
- System.out.println("das source browser running");\r
+\r
addLocal.setVisible(false);\r
refresh.setVisible(false);\r
progressBar.setVisible(true);\r
int top;\r
RotatableCanvas rc;\r
AlignViewport av;\r
- SequenceI [] seqs;\r
+ String [] seqstrings;\r
+ SequenceI [] seqs;\r
\r
/**\r
* Creates a new PCAPanel object.\r
\r
boolean sameLength = true;\r
\r
- if ((av.getSelectionGroup() != null) &&\r
- (av.getSelectionGroup().getSize(false) > 3))\r
+ seqstrings = av.getSelectionAsString();\r
+\r
+ if (av.getSelectionGroup() == null)\r
{\r
- seqs = new Sequence[av.getSelectionGroup().getSize(false)];\r
- int length = av.getSelectionGroup().getSequenceAt(0).getLength();\r
- for (int i = 0; i < av.getSelectionGroup().getSize(false); i++)\r
- {\r
- seqs[i] = av.getSelectionGroup().getSequenceAt(i);\r
- if(seqs[i].getLength()!=length)\r
- {\r
- sameLength = false;\r
- break;\r
- }\r
- }\r
+ seqs = av.alignment.getSequencesArray();\r
}\r
else\r
{\r
- seqs = new Sequence[av.getAlignment().getHeight()];\r
- int length = av.alignment.getSequenceAt(0).getLength();\r
-\r
- for (int i = 0; i < av.getAlignment().getHeight(); i++)\r
- {\r
- seqs[i] = av.getAlignment().getSequenceAt(i);\r
- if(seqs[i].getLength()!=length)\r
- {\r
- sameLength = false;\r
- break;\r
- }\r
-\r
- }\r
+ seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);\r
+ }\r
+\r
+ int length = seqs[0].getLength();\r
+\r
+ for (int i = 0; i < seqs.length; i++)\r
+ {\r
+ if (seqs[i].getLength() != length)\r
+ {\r
+ sameLength = false;\r
+ break;\r
+ }\r
}\r
\r
if (!sameLength)\r
public void run()\r
{\r
try{\r
- pca = new PCA(seqs);\r
+ pca = new PCA(seqstrings);\r
pca.run();\r
\r
// Now find the component coordinates\r
\r
rc.setPoints(points, pca.getM().rows);\r
rc.repaint();\r
- seqs = null;\r
}\r
catch(OutOfMemoryError er)\r
{ JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
printer.start();\r
}\r
\r
+ public void originalSeqData_actionPerformed(ActionEvent e)\r
+ {\r
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
+ for(int i=0; i<seqs.length; i++)\r
+ cap.appendText(seqs[i].getName()+"\t"\r
+ +seqstrings[i]+"\n");\r
+\r
+ Desktop.addInternalFrame(cap, "Original Data",\r
+ 400, 400);\r
+\r
+ }\r
+\r
+\r
\r
class PCAPrinter extends Thread implements Printable\r
{\r
*/\r
public class PairwiseAlignPanel extends GPairwiseAlignPanel\r
{\r
- Vector sequences = new Vector();\r
+\r
AlignViewport av;\r
+ Vector sequences;\r
\r
/**\r
* Creates a new PairwiseAlignPanel object.\r
super();\r
this.av = av;\r
\r
- Vector selsubset = new Vector();\r
+ sequences = new Vector();\r
+\r
+ SequenceI [] seqs;\r
+ String [] seqStrings = av.getSelectionAsString();\r
\r
- for (int i = 0, j = av.getSelectionGroup().getSize(false); i < j; i++)\r
+ if(av.getSelectionGroup()==null)\r
{\r
- if (av.getAlignment().getSequences().contains(av.getSelectionGroup()\r
- .getSequenceAt(i)))\r
- {\r
- selsubset.add(av.getSelectionGroup().getSequenceAt(i));\r
- }\r
+ seqs = av.alignment.getSequencesArray();\r
+ }\r
+ else\r
+ {\r
+ seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);\r
}\r
\r
- float[][] scores = new float[selsubset.size()][selsubset.size()];\r
+\r
+ float[][] scores = new float[seqs.length][seqs.length];\r
double totscore = 0;\r
- int count = selsubset.size();\r
+ int count = seqs.length;\r
\r
int acount = 0;\r
Sequence seq;\r
{\r
acount++;\r
\r
- AlignSeq as = new AlignSeq((SequenceI) selsubset.elementAt(i),\r
- (SequenceI) selsubset.elementAt(j), "pep");\r
+ AlignSeq as = new AlignSeq(seqs[i], seqStrings[i],\r
+ seqs[j], seqStrings[j], "pep");\r
+\r
as.calcScoreMatrix();\r
as.traceAlignment();\r
as.printAlignment(System.out);\r
\r
seq = new Sequence(as.getS2().getName(),\r
as.getAStr2(),\r
- as.getS2().getStart(), as.getS2().getEnd()\r
- );\r
+ as.getS2().getStart(),\r
+ as.getS2().getEnd() );\r
sequences.add(seq);\r
}\r
}\r
{\r
jalview.util.Format.print(System.out, "%s \n",\r
("" + i) + " " +\r
- ((SequenceI) selsubset.elementAt(i)).getName());\r
+ seqs[i].getName());\r
}\r
\r
System.out.println("\n");\r
AlignmentPanel ap;\r
Stack historyList = new Stack(); // simpler than synching with alignFrame.\r
float [] redundancy;\r
- Vector originalSequences;\r
+ SequenceI [] originalSequences;\r
Hashtable originalColours;\r
JInternalFrame frame;\r
\r
\r
validate();\r
\r
- Vector sel = new Vector();\r
+ String[] omitHidden = null;\r
+\r
SequenceGroup sg = ap.av.getSelectionGroup();\r
int height;\r
- originalSequences = new Vector();\r
+\r
originalColours = new Hashtable();\r
+ int start, end;\r
\r
if ( (sg != null) && (sg.getSize(false) >= 1))\r
{\r
- height = sg.getSize(false);\r
- for (int i = 0; i < sg.getSize(false); i++)\r
- {\r
- sel.addElement(sg.getSequenceAt(i));\r
- }\r
+ originalSequences = sg.getSequencesInOrder(ap.av.alignment);\r
+ start = sg.getStartRes();\r
+ end = sg.getEndRes();\r
}\r
else\r
{\r
- height = ap.av.alignment.getHeight();\r
- for (int i = 0; i < ap.av.alignment.getHeight(); i++)\r
- {\r
- sel.addElement(ap.av.alignment.getSequenceAt(i));\r
- }\r
+ originalSequences = ap.av.alignment.getSequencesArray();\r
+ start = 0;\r
+ end = ap.av.alignment.getWidth();\r
}\r
\r
+ height = originalSequences.length;\r
+\r
redundancy = new float[height];\r
for (int i = 0; i < height; i++)\r
{\r
redundancy[i] = 0f;\r
}\r
\r
+ if (ap.av.hasHiddenColumns)\r
+ {\r
+ omitHidden = ap.av.getSelectionAsString();\r
+ }\r
+\r
\r
// long start = System.currentTimeMillis();\r
\r
float pid;\r
- SequenceI seqi, seqj;\r
- for (int i = 0; i < sel.size(); i++)\r
+ String seqi, seqj;\r
+ for (int i = 0; i < height; i++)\r
{\r
- originalSequences.addElement(sel.elementAt(i));\r
- originalColours.put(sel.elementAt(i),\r
- ((SequenceI) sel.elementAt(i)).getColor());\r
+ originalColours.put(originalSequences[i],\r
+ originalSequences[i].getColor());\r
\r
for (int j = 0; j < i; j++)\r
{\r
if(i==j)\r
continue;\r
\r
- seqi = (SequenceI) sel.elementAt(i);\r
- seqj = (SequenceI) sel.elementAt(j);\r
-\r
- if (sg != null)\r
- pid = Comparison.PID( seqi,\r
- seqj,\r
- sg.getStartRes(), sg.getEndRes());\r
+ if(omitHidden==null)\r
+ {\r
+ seqi = originalSequences[i].getSequence(start, end);\r
+ seqj = originalSequences[j].getSequence(start, end);\r
+ }\r
else\r
- pid = Comparison.PID( seqi, seqj );\r
+ {\r
+ seqi = omitHidden[i];\r
+ seqj = omitHidden[j];\r
+ }\r
\r
+ pid = Comparison.PID( seqi, seqj );\r
\r
- if(seqj.getLength() < seqi.getLength())\r
+ if(seqj.length() < seqi.length())\r
redundancy[j] = Math.max(pid, redundancy[j]);\r
else\r
redundancy[i] = Math.max(pid, redundancy[i]);\r
}\r
}\r
\r
-\r
progress.setIndeterminate(false);\r
progress.setVisible(false);\r
progress = null;\r
valueField.setVisible(true);\r
\r
validate();\r
- // System.out.println("blob done "+ (System.currentTimeMillis()-start));\r
+ // System.out.println((System.currentTimeMillis()-start));\r
}\r
\r
void sliderValueChanged()\r
for(int i=0; i<redundancy.length; i++)\r
{\r
if (value > redundancy[i])\r
- ((SequenceI)originalSequences.elementAt(i)).setColor(java.awt.Color.white);\r
+ originalSequences[i].setColor(java.awt.Color.white);\r
else\r
- ((SequenceI)originalSequences.elementAt(i)).setColor(java.awt.Color.red);\r
+ originalSequences[i].setColor(java.awt.Color.red);\r
}\r
\r
PaintRefresher.Refresh(null,ap.av.alignment);\r
{\r
if (value <= redundancy[i])\r
{\r
- SequenceI seq = (SequenceI) originalSequences.elementAt(i);\r
+ SequenceI seq = originalSequences[i];\r
ap.av.alignment.deleteSequence(seq);\r
del.add(seq);\r
if (sg != null)\r
\r
void resetColours()\r
{\r
- for(int i=0; i<originalSequences.size(); i++)\r
+ for(int i=0; i<originalSequences.length; i++)\r
{\r
- SequenceI seq = (SequenceI)originalSequences.elementAt(i);\r
+ SequenceI seq = originalSequences[i];\r
seq.setColor( (java.awt.Color)originalColours.get(seq));\r
}\r
\r
\r
import jalview.math.*;\r
\r
-import jalview.util.*;\r
-\r
import java.awt.*;\r
import java.awt.event.*;\r
\r
{\r
if(startres>=y2)\r
{\r
- System.out.println("left of line");\r
fixedLeft = y2;\r
}\r
else\r
- {\r
- System.out.println("right of line");\r
+ {\r
fixedRight = y2 - 1;\r
}\r
}\r
\r
if (!blank)\r
{\r
- if(sg.getSize(false) == av.alignment.getHeight())\r
+ if(sg.getSize(false) == av.alignment.getHeight() )\r
{\r
+ if((av.hasHiddenColumns\r
+ && startres<av.getColumnSelection().getHiddenBoundaryRight(startres)))\r
+ {\r
+ endEditing();\r
+ return;\r
+ }\r
+\r
//We can still insert gaps if the selectionGroup\r
//contains all the sequences\r
sg.setEndRes(sg.getEndRes()+startres-lastres);\r
*/\r
public class TreePanel extends GTreePanel\r
{\r
- SequenceI[] seq;\r
String type;\r
String pwtype;\r
- int start;\r
- int end;\r
TreeCanvas treeCanvas;\r
NJTree tree;\r
AlignViewport av;\r
* @param s DOCUMENT ME!\r
* @param e DOCUMENT ME!\r
*/\r
- public TreePanel(AlignViewport av, Vector seqVector, String type,\r
- String pwtype, int s, int e)\r
+ public TreePanel(AlignViewport av, String type, String pwtype)\r
{\r
super();\r
- initTreePanel(av, seqVector, type, pwtype, s, e, null);\r
+ initTreePanel(av, type, pwtype, null);\r
\r
// We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default\r
showDistances(true);\r
* @param type DOCUMENT ME!\r
* @param pwtype DOCUMENT ME!\r
*/\r
- public TreePanel(AlignViewport av, Vector seqVector, NewickFile newtree,\r
- String type, String pwtype)\r
+ public TreePanel(AlignViewport av,\r
+ NewickFile newtree,\r
+ String type,\r
+ String pwtype)\r
{\r
super();\r
- initTreePanel(av, seqVector, type, pwtype, 0, seqVector.size(), newtree);\r
+ initTreePanel(av, type, pwtype, newtree);\r
}\r
\r
public AlignmentI getAlignment()\r
}\r
\r
\r
- void initTreePanel(AlignViewport av, Vector seqVector, String type,\r
- String pwtype, int s, int e, NewickFile newTree)\r
+ void initTreePanel(AlignViewport av, String type, String pwtype,\r
+ NewickFile newTree)\r
{\r
\r
this.type = type;\r
this.pwtype = pwtype;\r
\r
- start = s;\r
- end = e;\r
-\r
- seq = new Sequence[seqVector.size()];\r
- seqVector.toArray(seq);\r
-\r
-\r
treeCanvas = new TreeCanvas(av, scrollPane);\r
scrollPane.setViewportView(treeCanvas);\r
\r
\r
public void run()\r
{\r
+\r
if(newtree!=null)\r
- tree = new NJTree(seq, newtree);\r
+ tree = new NJTree(av.alignment.getSequencesArray(),\r
+ newtree);\r
else\r
- tree = new NJTree(seq, type, pwtype, start, end);\r
+ {\r
+ int start, end;\r
+ SequenceI [] seqs;\r
+ String [] seqStrings = null;\r
+ if (av.hasHiddenColumns)\r
+ {\r
+ seqStrings = av.getSelectionAsString();\r
+ }\r
+\r
+ if(av.getSelectionGroup()==null)\r
+ {\r
+ start = 0;\r
+ end = av.alignment.getWidth();\r
+ seqs = av.alignment.getSequencesArray();\r
+ }\r
+ else\r
+ {\r
+ start = av.getSelectionGroup().getStartRes();\r
+ end = av.getSelectionGroup().getEndRes()+1;\r
+ seqs = av.getSelectionGroup().getSequencesInOrder(av.alignment);\r
+ }\r
+\r
+ tree = new NJTree(seqs, seqStrings, type, pwtype, start, end);\r
+ }\r
+\r
\r
tree.reCount(tree.getTopNode());\r
tree.findHeight(tree.getTopNode());\r
treeCanvas.startPrinting();\r
}\r
\r
+\r
+ public void originalSeqData_actionPerformed(ActionEvent e)\r
+ {\r
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
+ cap.setText(tree.printOriginalSequenceData());\r
+ Desktop.addInternalFrame(cap, "Original Data",\r
+ 400, 400);\r
+ }\r
+\r
+\r
/**\r
* DOCUMENT ME!\r
*\r