- iSize = selectionGroup.getSize(false);
- seqs = selectionGroup.getSequencesInOrder(alignment);
- start = selectionGroup.getStartRes();
- end = selectionGroup.getEndRes(); // inclusive for start and end in SeqCigar constructor
- }
- else
- {
- iSize = alignment.getHeight();
- seqs = alignment.getSequencesArray();
- end = alignment.getWidth()-1;
- }
- SeqCigar[] selseqs = new SeqCigar[iSize];
- for(i=0; i<iSize; i++)
- {
- selseqs[i] = new SeqCigar(seqs[i], start, end);
- }
- selection=new CigarArray(selseqs);
- // now construct the CigarArray operations
- if (hasHiddenColumns) {
- Vector regions = colSel.getHiddenColumns();
- int [] region;
- int hideStart, hideEnd;
- int last=start;
- for (int j = 0; last<end & j < regions.size(); j++)
- {
- region = (int[]) regions.elementAt(j);
- hideStart = region[0];
- hideEnd = region[1];
- // edit hidden regions to selection range
- if(hideStart<last) {
- if (hideEnd > last)
- {
- hideStart = last;
- } else
- continue;
- }
-
- if (hideStart>end)
- break;
-
- if (hideEnd>end)
- hideEnd=end;
-
- if (hideStart>hideEnd)
- break;
- /**
- * form operations...
- */
- if (last<hideStart)
- selection.addOperation(CigarArray.M, hideStart-last);
- selection.addOperation(CigarArray.D, 1+hideEnd-hideStart);
- last = hideEnd+1;
- }
- // Final match if necessary.
- if (last<end)
- selection.addOperation(CigarArray.M, end-last+1);
- } else {
- selection.addOperation(CigarArray.M, end-start+1);
- }
- return selection;
- }
- /**
- * return a compact representation of the current alignment selection to
- * pass to an analysis function
- * @param selectedOnly boolean true to just return the selected view
- * @return AlignmentView
- */
- jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly) {
- // JBPNote:
- // this is here because the AlignmentView constructor modifies the CigarArray
- // object. Refactoring of Cigar and alignment view representation should
- // be done to remove redundancy.
- CigarArray aligview = getViewAsCigars(selectedOnly);
- if (aligview!=null) {
- return new AlignmentView(aligview,
- (selectedOnly && selectionGroup!=null) ? selectionGroup.getStartRes() : 0);
- }
- return null;
- }
- /**
- * This method returns the visible alignment as text, as
- * seen on the GUI, ie if columns are hidden they will not
- * be returned in the result.
- * Use this for calculating trees, PCA, redundancy etc on views
- * which contain hidden columns.
- * @return String[]
- */
- public String [] getViewAsString(boolean selectedRegionOnly)
- {
- String [] selection = null;
- SequenceI [] seqs= null;
- int i, iSize;
- int start = 0, end = 0;
- if(selectedRegionOnly && selectionGroup!=null)
- {
- iSize = selectionGroup.getSize(false);
- seqs = selectionGroup.getSequencesInOrder(alignment);
- start = selectionGroup.getStartRes();
- end = selectionGroup.getEndRes()+1;
- }
- else
- {
- iSize = alignment.getHeight();
- seqs = alignment.getSequencesArray();
- end = alignment.getWidth();