import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.BitSet;
import java.util.List;
import java.util.Vector;
assertEquals("Gap interval 1 end wrong", 4, gapInt.get(0)[1]);
assertEquals("Gap interval 2 start wrong", 6, gapInt.get(1)[0]);
assertEquals("Gap interval 2 end wrong", 8, gapInt.get(1)[1]);
+
+ BitSet gapfield = aseq.getInsertionsAsBits();
+ BitSet expectedgaps = new BitSet();
+ expectedgaps.set(2, 5);
+ expectedgaps.set(6, 9);
+
+ assertEquals(6, expectedgaps.cardinality());
+
+ assertEquals("getInsertionsAsBits didn't mark expected number of gaps",
+ 6, gapfield.cardinality());
+
+ assertEquals("getInsertionsAsBits not correct.", expectedgaps, gapfield);
}
@Test(groups = ("Functional"))
seq.setDatasetSequence(seq2);
}
- @Test
- public void testFindPositions()
+ @Test(groups = { "Functional" })
+ public void testFindFeatures()
{
- SequenceI sq = new Sequence("Seq", "ABC--DE-F", 8, 13);
-
- Range range = sq.findPositions(1, 4); // BC
- assertEquals(new Range(9, 10), range);
-
- range = sq.findPositions(2, 4); // C
- assertEquals(new Range(10, 10), range);
-
- assertNull(sq.findPositions(3, 4)); // all gaps
+ SequenceI sq = new Sequence("test/8-16", "-ABC--DEF--GHI--");
+ sq.createDatasetSequence();
- range = sq.findPositions(2, 6); // CDE
- assertEquals(new Range(10, 12), range);
+ assertTrue(sq.findFeatures(1, 99).isEmpty());
- range = sq.findPositions(3, 7); // DE
- assertEquals(new Range(11, 12), range);
+ // add non-positional feature
+ SequenceFeature sf0 = new SequenceFeature("Cath", "desc", 0, 0, 2f,
+ null);
+ sq.addSequenceFeature(sf0);
+ // add feature on BCD
+ SequenceFeature sf1 = new SequenceFeature("Cath", "desc", 9, 11, 2f,
+ null);
+ sq.addSequenceFeature(sf1);
+ // add feature on DE
+ SequenceFeature sf2 = new SequenceFeature("Cath", "desc", 11, 12, 2f,
+ null);
+ sq.addSequenceFeature(sf2);
+ // add contact feature at [B, H]
+ SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", 9,
+ 15, 2f,
+ null);
+ sq.addSequenceFeature(sf3);
+ // add contact feature at [F, G]
+ SequenceFeature sf4 = new SequenceFeature("Disulfide Bond", "desc", 13,
+ 14, 2f,
+ null);
+ sq.addSequenceFeature(sf4);
+
+ // no features in columns 1-2 (-A)
+ List<SequenceFeature> found = sq.findFeatures(1, 2);
+ assertTrue(found.isEmpty());
+
+ // columns 1-6 (-ABC--) includes BCD and B/H feature but not DE
+ found = sq.findFeatures(1, 6);
+ assertEquals(2, found.size());
+ assertTrue(found.contains(sf1));
+ assertTrue(found.contains(sf3));
+
+ // columns 5-6 (--) includes (enclosing) BCD but not (contact) B/H feature
+ found = sq.findFeatures(5, 6);
+ assertEquals(1, found.size());
+ assertTrue(found.contains(sf1));
+
+ // columns 7-10 (DEF-) includes BCD, DE, F/G but not B/H feature
+ found = sq.findFeatures(7, 10);
+ assertEquals(3, found.size());
+ assertTrue(found.contains(sf1));
+ assertTrue(found.contains(sf2));
+ assertTrue(found.contains(sf4));
}
@Test(groups = { "Functional" })
}
@Test
- public void testFindPositions_withCursor()
- {
- Sequence sq = new Sequence("Seq", "ABC--DE-F", 8, 13);
-
- // find positions for columns 1-4 (BC--) given E cursor
- Range range = sq.findPositions(1, 4, new SequenceCursor(sq, 12, 7, 0)); // BC
- assertEquals(new Range(9, 10), range);
-
- // repeat using B cursor
- range = sq.findPositions(1, 4, new SequenceCursor(sq, 9, 2, 0)); // BC
- assertEquals(new Range(9, 10), range);
-
- // find positions for columns 2-4 (C--) given A cursor
- range = sq.findPositions(2, 4, new SequenceCursor(sq, 8, 1, 0)); // C
- assertEquals(new Range(10, 10), range);
-
- // gapped region
- assertNull(sq.findPositions(3, 4, new SequenceCursor(sq, 10, 3, 0)));
- assertNull(sq.findPositions(3, 4, new SequenceCursor(sq, 12, 7, 0)));
-
- // find positions for columns 2-6 (C--DE) given B cursor
- range = sq.findPositions(2, 6, new SequenceCursor(sq, 9, 2, 0)); // CDE
- assertEquals(new Range(10, 12), range);
-
- // repeat using C as cursor
- range = sq.findPositions(2, 6, new SequenceCursor(sq, 10, 3, 0));
- assertEquals(new Range(10, 12), range);
-
- // repeat using D as cursor
- range = sq.findPositions(2, 6, new SequenceCursor(sq, 11, 6, 0));
- assertEquals(new Range(10, 12), range);
-
- // repeat using E as cursor
- range = sq.findPositions(2, 6, new SequenceCursor(sq, 12, 7, 0));
- assertEquals(new Range(10, 12), range);
-
- // repeat using F as cursor
- range = sq.findPositions(2, 6, new SequenceCursor(sq, 13, 9, 0));
- assertEquals(new Range(10, 12), range);
- }
-
- @Test
public void testIsValidCursor()
{
Sequence sq = new Sequence("Seq", "ABC--DE-F", 8, 13);