Hi, we have encountered a problem with our Apollo instance, where we get an error when dragging an exon from a multi-exon gene into the annotation area. When we drag a single exon into the Apollo User-created
annotations area, we are getting a greyed out gene model. If we double click and highlight the entire gene and drag it up to the 'user created annotations' area it works ok. If we right click on an exon and then “Create new annotation”, it also creates a greyed-out
gene model.
Checking the logs, we see the request that fails (for the get sequence) is a POST to https://apollo-dev.veupathdb.org/16527608489344273811224875979/AnnotationEditorService.
This causes a 500 error in the app, which logs:
2021-04-28 19:35:09,229 [http-nio-8080-exec-803] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [POST] /16527608489344273811224875979/AnnotationEditorService Cannot get property 'fmin' on null object. Stacktrace follows: java.lang.NullPointerException: Cannot get property 'fmin' on null object at org.bbop.apollo.FeatureService.$tt__getSequenceAlterationsForFeature(FeatureService.groovy:2931) at org.bbop.apollo.FeatureService.$tt__getResiduesWithAlterationsAndFrameshifts(FeatureService.groovy:1070) at org.bbop.apollo.SequenceService.$tt__getSequenceForFeature(SequenceService.groovy:524) at org.bbop.apollo.SequenceService.$tt__getSequenceForFeatures(SequenceService.groovy:654) at org.bbop.apollo.AnnotationEditorController.getSequence(AnnotationEditorController.groovy:1035) at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) at org.grails.plugins.web.rest.api.ControllersRestApi.forward(ControllersRestApi.groovy:53) at org.bbop.apollo.AnnotationEditorController.handleOperation(AnnotationEditorController.groovy:72) at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
The configuration of the draggable track looks like:
{
"maxFeatureSizeForUnderlyingRefSeq": 250000,
"subfeatureDetailLevel": 2,
"maxFeatureScreenDensity": 0.5,
"maxHeight": 1000,
"style": {
"arrowheadClass": "transcript-arrowhead",
"className": "transcript",
"_defaultHistScale": 4,
"_defaultLabelScale": 30,
"_defaultDescriptionScale": 120,
"minSubfeatureWidth": 1,
"maxDescriptionLength": 70,
"showLabels": true,
"label": "name,id",
"description": "note, description",
"centerChildrenVertically": false,
"renderClassName": "gray-center-30pct annot-apollo",
"subfeatureClasses": {
"UTR": "transcript-UTR",
"CDS": "transcript-CDS",
"exon": "container-100pct",
"intron": null,
"wholeCDS": null,
"start_codon": null,
"stop_codon": null,
"match_part": "darkblue-80pct"
}
},
"hooks": {},
"events": {},
"menuTemplate": [
{
"label": "View Details",
"title": "{type} {name}",
"action": "contentDialog",
"iconClass": "dijitIconTask"
},
{
"label": "View Gene Page",
"action": "newWindow",
"iconClass": "dijitIconDatabase"
}
],
"query": {
"feature": "gene:annotation"
},
"category": "Draggable Annotation",
"key": "Annotated Transcripts",
"storeClass": "JBrowse/Store/SeqFeature/REST",
"baseUrl": "https://toxodb.org/a/service/jbrowse",
"type": "WebApollo/View/Track/DraggableNeatHTMLFeatures",
"glyph": "JBrowse/View/FeatureGlyph/ProcessedTranscript",
"metadata": {
"subcategory": "Transcripts",
"trackType": "Processed Transcript"
},
"label": "processed_transcripts",
"index": 657
}