-
Notifications
You must be signed in to change notification settings - Fork 97
/
VariantAnnotationSnapshotTest.java
91 lines (74 loc) · 4.08 KB
/
VariantAnnotationSnapshotTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package org.opencb.opencga.storage.core.variant.annotation;
import org.junit.Test;
import org.opencb.biodata.models.variant.Variant;
import org.opencb.biodata.models.variant.avro.VariantAnnotation;
import org.opencb.commons.datastore.core.ObjectMap;
import org.opencb.commons.datastore.core.Query;
import org.opencb.opencga.storage.core.config.StorageConfiguration;
import org.opencb.opencga.storage.core.variant.VariantStorageBaseTest;
import org.opencb.opencga.storage.core.variant.VariantStorageEngine;
import org.opencb.opencga.storage.core.variant.annotation.annotators.VariantAnnotator;
import org.opencb.opencga.storage.core.variant.annotation.annotators.VariantAnnotatorFactory;
import java.util.List;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.opencb.opencga.storage.core.variant.annotation.VariantAnnotationManager.ANNOTATOR;
import static org.opencb.opencga.storage.core.variant.annotation.VariantAnnotationManager.VARIANT_ANNOTATOR_CLASSNAME;
/**
* Created on 24/04/18.
*
* @author Jacobo Coll <jacobo167@gmail.com>
*/
public abstract class VariantAnnotationSnapshotTest extends VariantStorageBaseTest {
@Test
public void testMultiAnnotations() throws Exception {
VariantStorageEngine variantStorageEngine = getVariantStorageEngine();
runDefaultETL(smallInputUri, variantStorageEngine, newStudyConfiguration(),
new ObjectMap(VariantStorageEngine.Options.ANNOTATE.key(), false));
variantStorageEngine.getOptions()
.append(VARIANT_ANNOTATOR_CLASSNAME, TestAnnotator.class.getName())
.append(ANNOTATOR, VariantAnnotatorFactory.AnnotationSource.OTHER);
variantStorageEngine.createAnnotationSnapshot("v0", new ObjectMap());
variantStorageEngine.annotate(new Query(), new ObjectMap(TestAnnotator.ANNOT_KEY, "v1"));
variantStorageEngine.createAnnotationSnapshot("v1", new ObjectMap());
variantStorageEngine.annotate(new Query(), new ObjectMap(TestAnnotator.ANNOT_KEY, "v2"));
variantStorageEngine.createAnnotationSnapshot("v2", new ObjectMap());
variantStorageEngine.annotate(new Query(), new ObjectMap(TestAnnotator.ANNOT_KEY, "v3"));
assertEquals(0, variantStorageEngine.getAnnotation("v0", null).getResult().size());
checkAnnotationSnapshot(variantStorageEngine, "v1", "v1");
checkAnnotationSnapshot(variantStorageEngine, "v2", "v2");
checkAnnotationSnapshot(variantStorageEngine, "LATEST", "v3");
variantStorageEngine.deleteAnnotationSnapshot("v1", new ObjectMap());
// FIXME: Should throw an exception?
assertEquals(0, variantStorageEngine.getAnnotation("v1", null).getResult().size());
}
public void checkAnnotationSnapshot(VariantStorageEngine variantStorageEngine, String name, String expectedId) throws Exception {
int count = 0;
for (VariantAnnotation annotation: variantStorageEngine.getAnnotation(name, null).getResult()) {
assertEquals(expectedId, annotation.getId());
count++;
}
assertEquals(count, variantStorageEngine.count(new Query()).first().intValue());
}
public static class TestAnnotator extends VariantAnnotator {
public static final String ANNOT_KEY = "ANNOT_KEY";
private String key;
public TestAnnotator(StorageConfiguration configuration, ObjectMap options) throws VariantAnnotatorException {
super(configuration, options);
key = options.getString(ANNOT_KEY);
}
@Override
public List<VariantAnnotation> annotate(List<Variant> variants) throws VariantAnnotatorException {
return variants.stream().map(v -> {
VariantAnnotation a = new VariantAnnotation();
a.setChromosome(v.getChromosome());
a.setStart(v.getStart());
a.setEnd(v.getEnd());
a.setReference(v.getReference());
a.setAlternate(v.getAlternate());
a.setId(key);
return a;
}).collect(Collectors.toList());
}
}
}