public static List<CRAIEntry> find(final List<CRAIEntry> list, final int seqId, final int start, final int span) { final boolean whole = start < 1 || span < 1; final CRAIEntry query = new CRAIEntry(); query.sequenceId = seqId; query.alignmentStart = start < 1 ? 1 : start; query.alignmentSpan = span < 1 ? Integer.MAX_VALUE : span; query.containerStartOffset = Long.MAX_VALUE; query.sliceOffset = Integer.MAX_VALUE; query.sliceSize = Integer.MAX_VALUE; final List<CRAIEntry> l = new ArrayList<>(); for (final CRAIEntry e : list) { if (e.sequenceId != seqId) { continue; } if (whole || CRAIEntry.intersect(e, query)) { l.add(e); } } Collections.sort(l, CRAIEntry.byStart); return l; }
public static List<CRAIEntry> find(final List<CRAIEntry> list, final int seqId, final int start, final int span) { final boolean whole = start < 1 || span < 1; final CRAIEntry query = new CRAIEntry(seqId, start < 1 ? 1 : start, span < 1 ? Integer.MAX_VALUE : span, Long.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); final List<CRAIEntry> l = new ArrayList<>(); for (final CRAIEntry e : list) { if (e.getSequenceId() != seqId) { continue; } if (whole || CRAIEntry.intersect(e, query)) { l.add(e); } } Collections.sort(l, CRAIEntry.byStart); return l; }
@Test public void testIntersectsZeroSpan() { Assert.assertFalse(CRAIEntry.intersect(newEntry(1, 1, 1), newEntry(1, 1, 0))); }
@Test public void testIntersectsOvertlaping() { Assert.assertFalse(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 0, 1))); Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 0, 2))); Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 2, 1))); Assert.assertFalse(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 3, 1))); }
@Test public void testIntersectsSame() { Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 1), newEntry(1, 1, 1))); }
@Test public void testIntersectsIncluded() { Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 1, 1))); Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 2), newEntry(1, 2, 1))); // is symmetrical? Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 1, 1), newEntry(1, 1, 2))); Assert.assertTrue(CRAIEntry.intersect(newEntry(1, 2, 1), newEntry(1, 1, 2))); }