package nl.tudelft.lifetiles.graph.traverser; import static org.junit.Assert.assertEquals; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import nl.tudelft.lifetiles.core.util.Logging; import nl.tudelft.lifetiles.graph.model.FactoryProducer; import nl.tudelft.lifetiles.graph.model.Graph; import nl.tudelft.lifetiles.graph.model.GraphFactory; import nl.tudelft.lifetiles.sequence.model.DefaultSequence; import nl.tudelft.lifetiles.sequence.model.SegmentEmpty; import nl.tudelft.lifetiles.sequence.model.SegmentString; import nl.tudelft.lifetiles.sequence.model.Sequence; import nl.tudelft.lifetiles.sequence.model.SequenceSegment; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class ReferencePositionTraverserTest { GraphFactory<SequenceSegment> gf; static Set<Sequence> s1, s2, s3; SequenceSegment v1, v4; Graph<SequenceSegment> gr; static Sequence reference; @BeforeClass public static void runOnce() { Logging.setLevel(Level.SEVERE); reference = new DefaultSequence("reference"); Sequence ss2 = new DefaultSequence("mutation"); s1 = new HashSet<Sequence>(); s1.add(reference); s1.add(ss2); s2 = new HashSet<Sequence>(); s2.add(reference); s3 = new HashSet<Sequence>(); s3.add(ss2); } @Before public void setUp() throws Exception { gf = FactoryProducer.getFactory("JGraphT"); v1 = new SequenceSegment(s1, 1, 11, new SegmentString("AAAAAAAAAA")); v4 = new SequenceSegment(s1, 21, 31, new SegmentString("AAAAAAAAAA")); gr = gf.getGraph(); gr.addVertex(v1); gr.addVertex(v4); } @Test public void testTraverseReferenceGapGraph() { SequenceSegment v3 = new SequenceSegment(s3, 11, 21, new SegmentEmpty( 10)); SequenceSegment v6 = new SequenceSegment(s3, 11, 21, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v3); gr.addVertex(v6); gr.addEdge(v1, v3); gr.addEdge(v1, v6); gr.addEdge(v3, v4); gr.addEdge(v6, v4); ReferencePositionTraverser.referenceMapGraph(gr, reference); assertEquals(1, v1.getReferenceStart()); assertEquals(10, v1.getReferenceEnd()); assertEquals(11, v3.getReferenceStart()); assertEquals(10, v3.getReferenceEnd()); assertEquals(11, v4.getReferenceStart()); assertEquals(20, v4.getReferenceEnd()); assertEquals(11, v6.getReferenceStart()); assertEquals(10, v6.getReferenceEnd()); } @Test public void testTraverseGapGraph() { SequenceSegment v2 = new SequenceSegment(s2, 11, 21, new SegmentString( "AAAAAAAAAA")); SequenceSegment v5 = new SequenceSegment(s2, 11, 21, new SegmentEmpty( 10)); gr.addVertex(v2); gr.addVertex(v5); gr.addEdge(v1, v2); gr.addEdge(v1, v5); gr.addEdge(v2, v4); gr.addEdge(v5, v4); ReferencePositionTraverser.referenceMapGraph(gr, reference); assertEquals(1, v1.getReferenceStart()); assertEquals(10, v1.getReferenceEnd()); assertEquals(11, v2.getReferenceStart()); assertEquals(20, v2.getReferenceEnd()); assertEquals(21, v4.getReferenceStart()); assertEquals(30, v4.getReferenceEnd()); assertEquals(11, v5.getReferenceStart()); assertEquals(20, v5.getReferenceEnd()); } @Test public void testTraverseParallelGraph() { SequenceSegment v2 = new SequenceSegment(s2, 11, 21, new SegmentString( "AAAAAAAAAA")); SequenceSegment v6 = new SequenceSegment(s3, 11, 21, new SegmentString( "AAAAAAAAAA")); gr.addVertex(v2); gr.addVertex(v6); gr.addEdge(v1, v2); gr.addEdge(v1, v6); gr.addEdge(v2, v4); gr.addEdge(v6, v4); ReferencePositionTraverser.referenceMapGraph(gr, reference); assertEquals(1, v1.getReferenceStart()); assertEquals(10, v1.getReferenceEnd()); assertEquals(11, v2.getReferenceStart()); assertEquals(20, v2.getReferenceEnd()); assertEquals(21, v4.getReferenceStart()); assertEquals(30, v4.getReferenceEnd()); assertEquals(11, v6.getReferenceStart()); assertEquals(20, v6.getReferenceEnd()); } }