firstUngappedPos++;
}
- /*
- * If this sequence is only gaps in the selected range, skip it
- */
- if (firstUngappedPos > selectionEndRes)
- {
- continue;
- }
+ boolean allGapped = (firstUngappedPos > selectionEndRes);
int lastUngappedPos = selectionEndRes;
- while (lastUngappedPos >= selectionStartRes
- && Comparison.isGap(selected.getCharAt(lastUngappedPos)))
+ if (!allGapped)
{
- lastUngappedPos--;
+ while (lastUngappedPos >= selectionStartRes
+ && Comparison.isGap(selected.getCharAt(lastUngappedPos)))
+ {
+ lastUngappedPos--;
+ }
}
/*
* Find the selected start/end residue positions in sequence
*/
- int startResiduePos = selected.findPosition(firstUngappedPos);
- int endResiduePos = selected.findPosition(lastUngappedPos);
+ int startResiduePos = allGapped ? 0 : selected.findPosition(firstUngappedPos);
+ int endResiduePos = allGapped ? 0 : selected.findPosition(lastUngappedPos);
for (AlignedCodonFrame acf : codonFrames)
{
{
continue;
}
+ mappedGroup.addSequence(seq, false);
+ if (allGapped)
+ {
+ /*
+ * sequence is mapped but includes no mapped residues
+ */
+ continue;
+ }
int mappedStartResidue = 0;
int mappedEndResidue = 0;
List<AlignedCodonFrame> mapping = Arrays.asList(acf);
int mappedEndCol = seq.findIndex(mappedEndResidue) - 1;
maxEndCol = maxEndCol == -1 ? mappedEndCol
: Math.max(maxEndCol, mappedEndCol);
- mappedGroup.addSequence(seq, false);
break;
}
}
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
-
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import java.awt.Color;
.asList(new AlignedCodonFrame[]
{ acf });
- AlignViewportI dnaView = new AlignViewport(cdna);
- AlignViewportI proteinView = new AlignViewport(protein);
+ AlignViewportI theDnaView = new AlignViewport(cdna);
+ AlignViewportI theProteinView = new AlignViewport(protein);
protein.setCodonFrames(acfList);
/*
* Verify the mapped sequence group in dna
*/
SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg,
- proteinView, dnaView);
+ theProteinView, theDnaView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
sg.addSequence(cdna.getSequenceAt(0), false);
sg.setStartRes(0);
sg.setEndRes(2);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, dnaView, proteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
.asList(new AlignedCodonFrame[]
{ acf });
- AlignViewportI dnaView = new AlignViewport(cdna);
- AlignViewportI proteinView = new AlignViewport(protein);
+ AlignViewportI theDnaView = new AlignViewport(cdna);
+ AlignViewportI theProteinView = new AlignViewport(protein);
protein.setCodonFrames(acfList);
/*
* Verify the mapped sequence group in dna
*/
SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg,
- proteinView, dnaView);
+ theProteinView, theDnaView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
// select columns 2 and 3 in DNA which span protein columns 0 and 1
sg.setStartRes(2);
sg.setEndRes(3);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, dnaView, proteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
* viewport).
*/
AlignmentI cdna = loadAlignment(
- ">Seq1\nA-CG-GC--AT-CA\n>Seq2\n-TG-AC-AG-T-AT\n>Seq3\n-T--ACG-TAAT-G\n",
+ ">Cds11\nA-CG-GC--AT-CA\n>Cds2\n-TG-AC-AG-T-AT\n>Cds3\n-T--ACG-TAAT-G\n",
FileFormat.Fasta);
cdna.setDataset(null);
AlignmentI protein = loadAlignment(
- ">Seq1\n-KA-S\n>Seq2\n--L-QY\n>Seq3\nQ-V-M\n",
+ ">Pep1\n-KA-S\n>Pep2\n--L-QY\n>Pep3\nQ-V-M\n",
FileFormat.Fasta);
protein.setDataset(null);
AlignedCodonFrame acf = new AlignedCodonFrame();
.asList(new AlignedCodonFrame[]
{ acf });
- AlignViewportI dnaView = new AlignViewport(cdna);
- AlignViewportI proteinView = new AlignViewport(protein);
+ AlignViewportI theDnaView = new AlignViewport(cdna);
+ AlignViewportI theProteinView = new AlignViewport(protein);
protein.setCodonFrames(acfList);
/*
- * Select Seq1 and Seq2 in the protein, column 1 (K/-). Expect mapped
- * sequence group to cover Seq1, columns 0-3 (ACG). Because the selection
- * only includes a gap in Seq2 there is no mappable selection region in the
- * corresponding DNA.
+ * Select Pep1 and Pep2 in the protein, column 1 (K/-). Expect mapped
+ * sequence group to cover Cds1, columns 0-3 (ACG). Although the selection
+ * only includes a gap in Cds2, mapped Cds2 is included with 'no columns'
*/
SequenceGroup sg = new SequenceGroup();
sg.setColourText(true);
* Verify the mapped sequence group in dna
*/
SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg,
- proteinView, dnaView);
+ theProteinView, theDnaView);
assertTrue(mappedGroup.getColourText());
assertSame(sg.getIdColour(), mappedGroup.getIdColour());
assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour());
- assertEquals(1, mappedGroup.getSequences().size());
+ assertEquals(2, mappedGroup.getSequences().size());
assertSame(cdna.getSequenceAt(0), mappedGroup.getSequences().get(0));
- // Seq2 in protein has a gap in column 1 - ignored
- // Seq1 has K which should map to columns 0-3 in Seq1
+ assertSame(cdna.getSequenceAt(1), mappedGroup.getSequences().get(1));
+ // Pep2 in protein has a gap in column 1 - doesn't map to any column
+ // Pep1 has K which should map to columns 0-3 in Cds1
assertEquals(0, mappedGroup.getStartRes());
assertEquals(3, mappedGroup.getEndRes());
*/
sg.setStartRes(2);
sg.setEndRes(4);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, proteinView, dnaView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theProteinView, theDnaView);
assertEquals(1, mappedGroup.getStartRes());
assertEquals(13, mappedGroup.getEndRes());
// select columns 4,5 - includes Seq1:codon2 (A) only
sg.setStartRes(4);
sg.setEndRes(5);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, dnaView, proteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
assertEquals(2, mappedGroup.getStartRes());
assertEquals(2, mappedGroup.getEndRes());
// add Seq2 to dna selection cols 4-5 include codons 1 and 2 (LQ)
sg.addSequence(cdna.getSequenceAt(1), false);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, dnaView, proteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
assertEquals(2, mappedGroup.getStartRes());
assertEquals(4, mappedGroup.getEndRes());
// add Seq3 to dna selection cols 4-5 include codon 1 (Q)
sg.addSequence(cdna.getSequenceAt(2), false);
- mappedGroup = MappingUtils.mapSequenceGroup(sg, dnaView, proteinView);
+ mappedGroup = MappingUtils.mapSequenceGroup(sg, theDnaView, theProteinView);
assertEquals(0, mappedGroup.getStartRes());
assertEquals(4, mappedGroup.getEndRes());
}