package nl.tudelft.lifetiles.annotation.model;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
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.graph.traverser.UnifiedPositionTraverser;
import nl.tudelft.lifetiles.sequence.model.DefaultSequence;
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 GeneAnnotationMapperTest {
static final String testGenomesFilename = "/data/test_annotations/simple_annotations.gff";
static final String testGenomeFilename = "/data/test_annotations/simple_annotation.gff";
private List<GeneAnnotation> genomes;
GraphFactory<SequenceSegment> gf;
static Set<Sequence> s1;
static DefaultSequence reference;
SequenceSegment v1, v2, v3;
Graph<SequenceSegment> gr;
@BeforeClass
public static void runOnce() {
reference = new DefaultSequence("reference");
s1 = new HashSet<Sequence>();
s1.add(reference);
}
@Before
public void setUp() throws Exception {
gf = FactoryProducer.getFactory("JGraphT");
v1 = new SequenceSegment(s1, 1, 10001, new SegmentString("AAAAAAAAAA"));
v2 = new SequenceSegment(s1, 10001, 20001, new SegmentString(
"AAAAAAAAAA"));
v3 = new SequenceSegment(s1, 20001, 30001, new SegmentString(
"AAAAAAAAAA"));
gr = gf.getGraph();
gr.addVertex(v1);
gr.addVertex(v2);
gr.addVertex(v3);
gr.addEdge(v1, v2);
gr.addEdge(v2, v3);
UnifiedPositionTraverser.unifyGraph(gr);
File genomesFile = new File(this.getClass()
.getResource(testGenomesFilename).toURI());
genomes = GeneAnnotationParser.parseGeneAnnotations(genomesFile);
}
@Test
public void mapAnnotationsTest() throws URISyntaxException, IOException {
File genomeFile = new File(this.getClass()
.getResource(testGenomeFilename).toURI());
List<GeneAnnotation> genome = GeneAnnotationParser.parseGeneAnnotations(genomeFile);
Map<SequenceSegment, List<GeneAnnotation>> mappedAnnotations = GeneAnnotationMapper
.mapAnnotations(gr, genome, reference);
assertEquals(1, mappedAnnotations.size());
assertEquals(1, mappedAnnotations.get(v1).get(0).getUnifiedPosition());
}
}