*/
package jalview.api;
+import java.awt.Color;
import java.util.Hashtable;
import java.util.Map;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AlignmentView;
+import jalview.datamodel.CigarArray;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.SequenceCollectionI;
+import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.schemes.ColourSchemeI;
void updateGroupAnnotationSettings(boolean applyGlobalSettings,
boolean preserveNewGroupSettings);
+
+ SequenceGroup getSelectionGroup();
+
+ SequenceI[] getSequenceSelection();
+
+
+ CigarArray getViewAsCigars(boolean selectedRegionOnly);
+
+ AlignmentView getAlignmentView(boolean selectedOnly);
+
+ AlignmentView getAlignmentView(boolean selectedOnly, boolean markGroups);
+
+ String[] getViewAsString(boolean selectedRegionOnly);
+
+ void setSelectionGroup(SequenceGroup sg);
+
+ char getGapCharacter();
+
+
}
hasRNAStructure = true;
}
}
+ @Override
+public int getEndRes()
+{
+ return getWidth()-1;
+}@Override
+public int getStartRes()
+{
+ return 0;
+}
}
int getWidth();
+ /**
+ * @return the first column included in this collection. Runs from 0<=i<N_cols
+ */
+ int getStartRes();
+
+
+ /**
+ *
+ * @return the last column in this collection. Runs from 0<=i<N_cols
+ */
+ int getEndRes();
+
}
}
/**
- * DOCUMENT ME!
*
- * @return DOCUMENT ME!
+ *
+ * @return the first column selected by this group. Runs from 0<=i<N_cols
*/
public int getStartRes()
{
}
/**
- * DOCUMENT ME!
*
- * @return DOCUMENT ME!
+ * @return the groups last selected column. Runs from 0<=i<N_cols
*/
public int getEndRes()
{
public String getSequenceAsString();
/**
- * get a range on the seuqence as a string
+ * get a range on the sequence as a string
*
* @param start
- * DOCUMENT ME!
+ * position relative to start of sequence including gaps (from 0)
* @param end
- * DOCUMENT ME!
+ * position relative to start of sequence including gaps (from 0)
*
- * @return DOCUMENT ME!
+ * @return String containing all gap and symbols in specified range
*/
public String getSequenceAsString(int start, int end);
/**
- * DOCUMENT ME!
+ * Get the sequence as a character array
*
- * @return DOCUMENT ME!
+ * @return seqeunce and any gaps
*/
public char[] getSequence();
import jalview.workers.StrucConsensusThread;
import java.util.ArrayList;
+import java.util.BitSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
*
* @return null or the currently selected sequence region
*/
+ @Override
public SequenceGroup getSelectionGroup()
{
return selectionGroup;
* - group holding references to sequences in this alignment view
*
*/
+ @Override
public void setSelectionGroup(SequenceGroup sg)
{
selectionGroup = sg;
*
* @return array of references to sequence objects
*/
+ @Override
public SequenceI[] getSequenceSelection()
{
SequenceI[] sequences = null;
*
* @return String[]
*/
+ @Override
public jalview.datamodel.CigarArray getViewAsCigars(
boolean selectedRegionOnly)
{
* boolean true to just return the selected view
* @return AlignmentView
*/
+ @Override
public jalview.datamodel.AlignmentView getAlignmentView(
boolean selectedOnly)
{
* is true)
* @return AlignmentView
*/
+ @Override
public jalview.datamodel.AlignmentView getAlignmentView(
boolean selectedOnly, boolean markGroups)
{
*
* @return String[]
*/
+ @Override
public String[] getViewAsString(boolean selectedRegionOnly)
{
String[] selection = null;
int charHeight = getCharHeight();
if (aa != null)
{
- boolean graphgrp[] = null;
+ BitSet graphgrp = new BitSet();
for (int i = 0; i < aa.length; i++)
{
if (aa[i] == null)
}
if (aa[i].graphGroup > -1)
{
- if (graphgrp == null)
- {
- graphgrp = new boolean[aa.length];
- }
- if (graphgrp[aa[i].graphGroup])
+ if (graphgrp.get(aa[i].graphGroup))
{
continue;
}
else
{
- graphgrp[aa[i].graphGroup] = true;
+ graphgrp.set(aa[i].graphGroup);
}
}
aa[i].height = 0;
{
boolean sameGroup = false;
SequenceI dseq, aseq, seq = seqNames.get(seqId);
- int base = seq.getStart() - 1;
+ int base = seq.findPosition(start)-1;
aseq = seq;
while ((dseq = seq).getDatasetSequence() != null)
{
import jalview.api.AlignmentViewPanel;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.AnnotatedCollectionI;
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
return;
}
List<compbio.data.sequence.FastaSequence> seqs = getInputSequences(alignViewport
- .getAlignment());
+ .getAlignment(), bySequence ? alignViewport.getSelectionGroup() : null);
if (seqs == null)
{
boolean[] gapMap;
int realw;
+
+ int start,end;
- public List<FastaSequence> getInputSequences(AlignmentI alignment)
+ public List<FastaSequence> getInputSequences(AlignmentI alignment, AnnotatedCollectionI inputSeqs)
{
if (alignment == null || alignment.getWidth() <= 0
|| alignment.getSequences() == null
{
return null;
}
+ if (inputSeqs==null || inputSeqs.getWidth()<=0 || inputSeqs.getSequences()==null || inputSeqs.getSequences().size()<1)
+ {
+ inputSeqs = alignment;
+ }
+
List<compbio.data.sequence.FastaSequence> seqs = new ArrayList<compbio.data.sequence.FastaSequence>();
int minlen = 10;
seqNames = new HashMap<String, SequenceI>();
}
gapMap = new boolean[0];
- for (SequenceI sq : ((List<SequenceI>) alignment.getSequences()))
+ start=inputSeqs.getStartRes();
+ end=inputSeqs.getEndRes();
+
+ for (SequenceI sq : (List<SequenceI>) inputSeqs.getSequences())
{
- if (sq.getEnd() - sq.getStart() > minlen - 1)
+ if (sq.findPosition(end+1) -sq.findPosition(start+1) > minlen - 1)
{
String newname = SeqsetUtils.unique_name(seqs.size() + 1);
// make new input sequence with or without gaps
{
seqs.add(seq = new compbio.data.sequence.FastaSequence(newname,
AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
- sq.getSequenceAsString())));
+ sq.getSequenceAsString(start,end+1))));
}
if (seq.getSequence().length() > ln)
{