3232
3333package org .cbioportal .genome_nexus .service .internal ;
3434
35+ import java .util .ArrayList ;
36+ import java .util .Collections ;
37+ import java .util .List ;
38+ import java .util .Map ;
39+ import java .util .NoSuchElementException ;
40+ import java .util .Optional ;
41+ import java .util .stream .Collectors ;
42+
3543import org .apache .commons .logging .Log ;
3644import org .apache .commons .logging .LogFactory ;
3745import org .cbioportal .genome_nexus .component .annotation .HugoGeneSymbolResolver ;
3846import org .cbioportal .genome_nexus .component .annotation .IndexBuilder ;
3947import org .cbioportal .genome_nexus .component .annotation .NotationConverter ;
4048import org .cbioportal .genome_nexus .component .annotation .ProteinChangeResolver ;
41- import org .cbioportal .genome_nexus .model .*;
49+ import org .cbioportal .genome_nexus .model .AnnotationField ;
50+ import org .cbioportal .genome_nexus .model .Index ;
51+ import org .cbioportal .genome_nexus .model .VariantAnnotation ;
52+ import org .cbioportal .genome_nexus .model .VariantType ;
4253import org .cbioportal .genome_nexus .persistence .IndexRepository ;
43- import org .cbioportal .genome_nexus .service .*;
44-
54+ import org .cbioportal .genome_nexus .service .CancerHotspotService ;
55+ import org .cbioportal .genome_nexus .service .ClinvarVariantAnnotationService ;
56+ import org .cbioportal .genome_nexus .service .EnrichmentService ;
57+ import org .cbioportal .genome_nexus .service .MutationAssessorService ;
58+ import org .cbioportal .genome_nexus .service .MyVariantInfoService ;
59+ import org .cbioportal .genome_nexus .service .NucleotideContextService ;
60+ import org .cbioportal .genome_nexus .service .OncokbService ;
61+ import org .cbioportal .genome_nexus .service .PostTranslationalModificationService ;
62+ import org .cbioportal .genome_nexus .service .SignalMutationService ;
63+ import org .cbioportal .genome_nexus .service .VariantAnnotationSummaryService ;
4564import org .cbioportal .genome_nexus .service .cached .CachedVariantAnnotationFetcher ;
4665import org .cbioportal .genome_nexus .service .cached .CachedVariantIdAnnotationFetcher ;
47- import org .cbioportal .genome_nexus .service .enricher .*;
66+ import org .cbioportal .genome_nexus .service .enricher .CanonicalTranscriptAnnotationEnricher ;
67+ import org .cbioportal .genome_nexus .service .enricher .ClinvarVariantAnnotationEnricher ;
68+ import org .cbioportal .genome_nexus .service .enricher .HotspotAnnotationEnricher ;
69+ import org .cbioportal .genome_nexus .service .enricher .MutationAssessorEnricher ;
70+ import org .cbioportal .genome_nexus .service .enricher .MyVariantInfoAnnotationEnricher ;
71+ import org .cbioportal .genome_nexus .service .enricher .NucleotideContextAnnotationEnricher ;
72+ import org .cbioportal .genome_nexus .service .enricher .OncokbAnnotationEnricher ;
73+ import org .cbioportal .genome_nexus .service .enricher .PostTranslationalModificationEnricher ;
74+ import org .cbioportal .genome_nexus .service .enricher .SignalAnnotationEnricher ;
4875import org .cbioportal .genome_nexus .service .exception .ResourceMappingException ;
4976import org .cbioportal .genome_nexus .service .exception .VariantAnnotationNotFoundException ;
5077import org .cbioportal .genome_nexus .service .exception .VariantAnnotationWebServiceException ;
5178import org .cbioportal .genome_nexus .service .factory .IsoformAnnotationEnricherFactory ;
79+ import org .cbioportal .genome_nexus .util .GenomicLocationUtil ;
5280import org .springframework .beans .factory .annotation .Value ;
5381import org .springframework .context .annotation .Lazy ;
5482import org .springframework .stereotype .Service ;
5583import org .springframework .web .client .HttpClientErrorException ;
5684import org .springframework .web .client .ResourceAccessException ;
5785
58- import java .util .*;
59- import java .util .stream .Collectors ;
60-
6186import com .google .gson .Gson ;
6287import com .mongodb .BasicDBObject ;
6388import com .mongodb .DBObject ;
@@ -130,13 +155,17 @@ public Index buildIndex(VariantAnnotation variantAnnotation) {
130155 public VariantAnnotation getAnnotation (String variant , VariantType variantType )
131156 throws VariantAnnotationNotFoundException , VariantAnnotationWebServiceException
132157 {
133- return this .fetchAnnotationExternally (variant , variantType );
158+ VariantAnnotation annotation = this .fetchAnnotationExternally (variant , variantType );
159+ normalizeStrand (annotation );
160+ return annotation ;
134161 }
135162
136163 public List <VariantAnnotation > getAnnotations (List <String > variants , VariantType variantType )
137164 {
138165 try {
139- return this .fetchAnnotationsExternally (variants , variantType );
166+ List <VariantAnnotation > annotations = this .fetchAnnotationsExternally (variants , variantType );
167+ normalizeStrands (annotations );
168+ return annotations ;
140169 } catch (VariantAnnotationWebServiceException e ) {
141170 LOG .warn (e .getLocalizedMessage ());
142171 return Collections .emptyList ();
@@ -147,6 +176,8 @@ public VariantAnnotation getAnnotation(String variant, VariantType variantType,
147176 throws VariantAnnotationWebServiceException , VariantAnnotationNotFoundException
148177 {
149178 VariantAnnotation annotation = this .fetchAnnotationExternally (variant , variantType );
179+ normalizeStrand (annotation );
180+
150181 EnrichmentService postEnrichmentService = this .initPostEnrichmentService (isoformOverrideSource , fields , token );
151182
152183 if (annotation != null &&
@@ -162,6 +193,7 @@ public List<VariantAnnotation> getAnnotations(List<String> variants, VariantType
162193 {
163194 try {
164195 List <VariantAnnotation > variantAnnotations = this .fetchAnnotationsExternally (variants , variantType );
196+ normalizeStrands (variantAnnotations );
165197 EnrichmentService postEnrichmentService = this .initPostEnrichmentService (isoformOverrideSource , fields , token );
166198 if (postEnrichmentService != null ) {
167199 postEnrichmentService .enrichAnnotations (variantAnnotations );
@@ -402,4 +434,16 @@ private void addAdditionalInformation(VariantAnnotation variantAnnotation, Varia
402434 variantAnnotation .setGenomicLocationExplanation (this .notationConverter .getGenomicLocationExplanation (originalVariantQuery ));
403435 }
404436 }
437+
438+ private void normalizeStrand (VariantAnnotation variantAnnotation ) {
439+ if (variantAnnotation .getStrand () != null && variantAnnotation .getStrand () == -1 ) {
440+ variantAnnotation .setAlleleString (GenomicLocationUtil .getReverseStrandAllele (variantAnnotation .getAlleleString ()));
441+ }
442+ }
443+
444+ private void normalizeStrands (List <VariantAnnotation > variantAnnotations ) {
445+ for (VariantAnnotation annotation : variantAnnotations ) {
446+ normalizeStrand (annotation );
447+ }
448+ }
405449}
0 commit comments