setAlignment(al);\r
init();\r
}\r
+ /**\r
+ * Create a new AlignViewport with hidden regions\r
+ * @param al AlignmentI\r
+ * @param hiddenColumns ColumnSelection\r
+ */\r
+ public AlignViewport(AlignmentI al, ColumnSelection hiddenColumns) {\r
+ setAlignment(al);\r
+ if (hiddenColumns!=null) {\r
+ this.colSel = hiddenColumns;\r
+ if (hiddenColumns.getHiddenColumns() != null)\r
+ hasHiddenColumns = true;\r
+ }\r
+ init();\r
+ }\r
\r
void init()\r
{\r
}\r
}\r
\r
+ public void invertColumnSelection()\r
+ {\r
+ int column;\r
+ for(int i=0; i<alignment.getWidth(); i++)\r
+ {\r
+ column = i;\r
+\r
+ if(colSel.contains(column))\r
+ colSel.removeElement(column);\r
+ else\r
+ colSel.addElement(column);\r
+\r
+ }\r
+\r
+ }\r
+\r
public int adjustForHiddenSeqs(int alignmentIndex)\r
{\r
return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
iSize = selectionGroup.getSize(false);\r
seqs = selectionGroup.getSequencesInOrder(alignment);\r
start = selectionGroup.getStartRes();\r
- end = selectionGroup.getEndRes()+1;\r
+ end = selectionGroup.getEndRes(); // inclusive for start and end in SeqCigar constructor\r
}\r
else\r
{\r
iSize = alignment.getHeight();\r
seqs = alignment.getSequencesArray();\r
- end = alignment.getWidth();\r
+ end = alignment.getWidth()-1;\r
}\r
SeqCigar[] selseqs = new SeqCigar[iSize];\r
for(i=0; i<iSize; i++)\r
selseqs[i] = new SeqCigar(seqs[i], start, end);\r
}\r
selection=new CigarArray(selseqs);\r
-\r
- int[] hiddenregions = null;\r
- char[] hr_ops = null;\r
+ // now construct the CigarArray operations\r
if (hasHiddenColumns) {\r
- Vector _hiddenregions = new Vector();\r
Vector regions = colSel.getHiddenColumns();\r
- int blockStart = start, blockEnd=end;\r
int [] region;\r
int hideStart, hideEnd;\r
int last=start;\r
}\r
return selection;\r
}\r
-\r
+ /**\r
+ * return a compact representation of the current alignment selection to\r
+ * pass to an analysis function\r
+ * @param selectedOnly boolean true to just return the selected view\r
+ * @return AlignmentView\r
+ */\r
+ jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly) {\r
+ // JBPNote:\r
+ // this is here because the AlignmentView constructor modifies the CigarArray\r
+ // object. Refactoring of Cigar and alignment view representation should\r
+ // be done to remove redundancy.\r
+ CigarArray aligview = getViewAsCigars(selectedOnly);\r
+ if (aligview!=null)\r
+ return new AlignmentView(aligview);\r
+ return null;\r
+ }\r
/**\r
* This method returns the visible alignment as text, as\r
* seen on the GUI, ie if columns are hidden they will not\r