GMOD / Apollo

Genome annotation editor with a Java Server backend and a Javascript client that runs in a web browser as a JBrowse plugin.
http://genomearchitect.readthedocs.io/
Other
124 stars 85 forks source link

Offending exon with "non canonical" (and non existent) boundaries, and an artificial intron #16

Closed monicacecilia closed 9 years ago

monicacecilia commented 10 years ago

After inspecting a gene model on the bedbug instance of Web Apollo, I learned that Apollo is acting as though there is an intron of length = 0bp. (the previous exon "ends" one position (bp) before). I discovered the error by using the square brackets [] to move between exons.

Below are Console erros, as well as the fragment of the .css that describes non-canonical warning in the offending exon.

This is what the "non canonical" image looks like, located in the middle of an exon. Apollo seems to think that there is an intron of length = 0bp, and it is indicating that it has non-canonical splice sites.

The element in the css style sheet is identified as:

Elements element.style { left: 3.333818605328286%; width: 0%; } .noncanonical-splice-site, .plus-noncanonical-splice-site, .minus-noncanonical-splice-site { margin-left: -8px; /* margin-top: -11px; _/ margin-top: 9px; padding-left: 8px; padding-right: 8px; position: absolute; height: 16px; z-index: 100; background-color: transparent; background-image: url('../img/exclamation_circleorange.png'); pointer-events: none; / background-image: url('img/exclamation_circleorange.png'); / /_ background-image: url('img/warning_exclamationsmall.png'); / /_ background-image: url('img/warningexclamation.png'); / /_ background-image: url('img/marker_roundedred.png'); / /_ background-image: url('img/marker_squared_red.png'); */ } .subfeature, .plus-subfeature, .minus-subfeature { position: absolute; background-color: #dadada; height: 7px; min-width: 1px; z-index: 12; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; } body, div, dl, dt, dd, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { margin: 0; padding: 0; } user agent stylesheetdiv { display: block; } Inherited from div.feature.plus-annot.ui-droppable .feature, .plus-feature, .minus-feature { position: absolute; height: 7px; background-repeat: repeat-x; cursor: pointer; min-width: 1px; z-index: 10; background-color: #eee; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; } Inherited from div.trackContainer.innerTrackContainer.draggable.dojoDndSource.dojoDndTarget.dojoDndContainerOver .draggable { cursor: move; } Inherited from body.tundra html, body { height: 100%; width: 100%; padding: 0; border: 0; font-size: 12px; font-family: Univers,Trebuchet MS,Helvetica,Arial,sans-serif; } body { font: 12px Myriad,Helvetica,Tahoma,Arial,clean,sans-serif; } Inherited from html.dj_webkit.dj_chrome.dj_contentbox.has-webkit.has-no-quirks html, body { height: 100%; width: 100%; padding: 0; border: 0; font-size: 12px; font-family: Univers,Trebuchet MS,Helvetica,Arial,sans-serif; }

The error console looks like this:

Error Console: loaded WebApollo plugin main.js:36 In JBrowse configuration, datasets specified, but dataset_id not set. Dataset selector will not be shown. Browser.js:550 The page at 'https://apollo.nal.usda.gov/cimlec/jbrowse/?loc=Scaffold4%3A8930608..894284…%2CTranscriptome%20models%2Ccimlec_RNA_female%2Ccimlec_RNA_male&highlight=' was loaded over HTTPS, but displayed insecure content from 'http://jbrowse.org/analytics/clientReport?ver=development&refSeqs-count=140…FWiggle%2FDensity=2&track-types-JBrowse%2FView%2FTrack%2FWiggle%2FXYPlot=1': this content should also be loaded over HTTPS. ?loc=Scaffold4%3A8930608..8942847&tracks=DNA%2CAnnotations%2Ccimlec_current_models%2Caugustus_maske…:1 Store statistics: Clec_RNA-Adult-Female_300Bp_ICD_CLI5RP.bam Object GlobalStatsEstimationMixin.js:55 Store statistics: Clec_RNA-Adult-Male_300Bp_ICD_CLI5RP.bam Object {featureDensity: 0.0253515625, _statsSampleFeatures: 649, _statsSampleInterval: Object} GlobalStatsEstimationMixin.js:55 GET https://apollo.nal.usda.gov/cimlec/jbrowse/data/seq/140/168/b9/Scaffold4-446.txt net::ERR_CONNECTION_TIMED_OUT xhr.js:206 xhr xhr.js:206 provider.(anonymous function) util.js:101 declare._fetchChunk SequenceChunks.js:113 (anonymous function) SequenceChunks.js:86 declare.getFeatures SequenceChunks.js:105 declare.getReferenceSequence SeqFeature.js:169 declare.fillBlock SequenceTrack.js:380 declare._showBlock BlockBased.js:554 declare.showRange BlockBased.js:281 inherited declare.js:189 declare.showRange DraggableHTMLFeatures.js:1092 (anonymous function) GenomeView.js:2000 declare.trackIterate GenomeView.js:2249 declare.showVisibleBlocks GenomeView.js:1999 declare.zoomUpdate GenomeView.js:1913 (anonymous function) GenomeView.js:1792 Animation.stop Animation.js:62 Animation.animate Animation.js:30 Animation.animFunction

After attempting to modify the boundary to go from 5' end towards the 3' end of the offending exon, and trying to pass the 'non-canonical' features, the error log included a "SyntaxError" due to an "Unexpected token", which I imagine was caused by the non-canonical signal.

This is the error log in the console:

SyntaxError {stack: (...), message: "Unexpected token <"} message: "Unexpected token <" stack: (...) get stack: function () { [native code] } set stack: function () { [native code] } proto: Error "SyntaxError: Unexpected token < at declare.handleError (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:4428:54) at https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:5534:16 at signalListener (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:37:21) at signalWaiting (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:28:4) at reject.reject (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:219:5) at signalDeferred (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:84:15) at signalListener (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:58:4) at signalWaiting (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:28:4) at reject.reject (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:219:5) at signalDeferred (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:84:15)

rejected at signalDeferred (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:84:15)
at signalListener (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:55:5)
at signalWaiting (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:28:4)
at reject.reject (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:219:5)
at signalDeferred (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:84:15)
at signalListener (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:58:4)
at signalWaiting (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:28:4)
at reject.reject (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:219:5)
at signalDeferred (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:84:15)
at signalListener (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:55:5)
----------------------------------------

Error at Promise.then.promise.then (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/Deferred.js:252:24) at declare.executeUpdateOperation (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:5526:12) at HTMLDivElement.$.resizable.stop (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:767:31) at Object.$.Widget._trigger (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jqueryui/widget.js:268:13) at Object.$.widget._propagate (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jqueryui/resizable.js:525:26) at Object.$.widget._mouseStop (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jqueryui/resizable.js:342:8) at Object.$.widget._mouseUp (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jqueryui/mouse.js:138:9) at HTMLDocument._mouseUpDelegate (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jqueryui/mouse.js:94:16) at HTMLDocument.jQuery.event.dispatch (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jquery/jquery.js:3256:9) at HTMLDocument.elemData.handle.eventHandle (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/jslib/jquery/jquery.js:2875:46)" instrumentation.js:18

I then tried to pull up the Annotation Information Editor,

First, the request was not sent to the server. Later, Web Apollo failed at retrieving the AIE, and threw two errors. These three errors are shown below:

POST https://apollo.nal.usda.gov/cimlec/AnnotationEditorService xhr.js:206 xhr xhr.js:206 dojo.xhr xhr.js:607 dojo.rawXhrPost.dojo.xhrPost xhr.js:644 declare.getAnnotationInfoEditorConfigs AnnotTrack.js:2024 declare.getAnnotationInfoEditorForSelectedFeatures AnnotTrack.js:1997 declare.getAnnotationInfoEditor AnnotTrack.js:1985 annot_context_menu.addChild.dijit.MenuItem.onClick AnnotTrack.js:4730 declare.onItemClick _MenuBase.js:258 (anonymous function) _MenuBase.js:65 (anonymous function) on.js:198 (anonymous function) a11yclick.js:84 DOMException {message: "Failed to execute 'send' on 'XMLHttpRequest': Fail…llo.nal.usda.gov/cimlec/AnnotationEditorService'.", name: "NetworkError", code: 19, stack: "Error: Failed to execute 'send' on 'XMLHttpRequest….gov/cimlec/jbrowse/src/dijit/_MenuBase.js:65:10)", response: Object…} code: 19 message: "Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://apollo.nal.usda.gov/cimlec/AnnotationEditorService'." name: "NetworkError" response: Object responseText: undefined stack: "Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'https://apollo.nal.usda.gov/cimlec/AnnotationEditorService'.↵ at Error (native)↵ at xhr (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/request/xhr.js:206:9)↵ at Object.dojo.xhr (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/_base/xhr.js:607:11)↵ at Object.dojo.rawXhrPost.dojo.xhrPost (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dojo/_base/xhr.js:644:15)↵ at declare.getAnnotationInfoEditorConfigs (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:2024:11)↵ at declare.getAnnotationInfoEditorForSelectedFeatures (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:1997:15)↵ at declare.getAnnotationInfoEditor (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:1985:14)↵ at annot_context_menu.addChild.dijit.MenuItem.onClick (https://apollo.nal.usda.gov/cimlec/jbrowse/plugins/WebApollo/js/View/Track/AnnotTrack.js:4730:16)↵ at declare.onItemClick (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dijit/_MenuBase.js:258:46)↵ at HTMLTableRowElement. (https://apollo.nal.usda.gov/cimlec/jbrowse/src/dijit/_MenuBase.js:65:10)" status: undefined xhr: XMLHttpRequest proto: DOMException xhr.js:432 _deferError xhr.js:432 (anonymous function) xhr.js:392 notify Deferred.js:187 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:202 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:202 complete Deferred.js:168 reject.errback Deferred.js:230 (anonymous function) xhr.js:627 signalListener Deferred.js:37 then.promise.then Deferred.js:258 lang.extend.otherwise Promise.js:115 dojo.xhr xhr.js:620 dojo.rawXhrPost.dojo.xhrPost xhr.js:644 declare.getAnnotationInfoEditorConfigs AnnotTrack.js:2024 declare.getAnnotationInfoEditorForSelectedFeatures AnnotTrack.js:1997 declare.getAnnotationInfoEditor AnnotTrack.js:1985 annot_context_menu.addChild.dijit.MenuItem.onClick AnnotTrack.js:4730 declare.onItemClick _MenuBase.js:258 (anonymous function) _MenuBase.js:65 (anonymous function) on.js:198 (anonymous function) a11yclick.js:84 TypeError {stack: (...), message: "Cannot read property 'sequence:gene' of undefined"} xhr.js:432 _deferError xhr.js:432 (anonymous function) xhr.js:392 notify Deferred.js:187 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:198 complete Deferred.js:168 resolve.callback Deferred.js:215 notify Deferred.js:196 complete Deferred.js:168 resolve.callback Deferred.js:215 (anonymous function) xhr.js:619 signalListener Deferred.js:37 then.promise.then Deferred.js:258 dojo.xhr xhr.js:618 dojo.rawXhrPost.dojo.xhrPost xhr.js:644 init AnnotTrack.js:2137 declare.createAnnotationInfoEditorPanelForFeature AnnotTrack.js:3833 declare.getAnnotationInfoEditorForSelectedFeatures AnnotTrack.js:2002 declare.getAnnotationInfoEditor AnnotTrack.js:1985 annot_context_menu.addChild.dijit.MenuItem.onClick AnnotTrack.js:4730 declare.onItemClick _MenuBase.js:258 (anonymous function) _MenuBase.js:65 (anonymous function) on.js:198 (anonymous function) a11yclick.js:84 TypeError {stack: (...), message: "Cannot read property 'sequence:mRNA' of undefined"} message: "Cannot read property 'sequence:mRNA' of undefined" stack: (...) get stack: function () { [native code] } set stack: function () { [native code] } proto: Error xhr.js:432 _deferError xhr.js:432 (anonymous function) xhr.js:392 notify Deferred.js:187 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:198 complete Deferred.js:168 resolve.callback Deferred.js:215 notify Deferred.js:196 complete Deferred.js:168 resolve.callback Deferred.js:215 (anonymous function) xhr.js:619 signalListener Deferred.js:37 then.promise.then Deferred.js:258 dojo.xhr xhr.js:618 dojo.rawXhrPost.dojo.xhrPost xhr.js:644 init AnnotTrack.js:2137 declare.createAnnotationInfoEditorPanelForFeature AnnotTrack.js:3833 declare.getAnnotationInfoEditorForSelectedFeatures AnnotTrack.js:2007 declare.getAnnotationInfoEditor AnnotTrack.js:1985 annot_context_menu.addChild.dijit.MenuItem.onClick AnnotTrack.js:4730 declare.onItemClick _MenuBase.js:258 (anonymous function) _MenuBase.js:65 (anonymous function) on.js:198 (anonymous function) a11yclick.js:84

Later, Web Apollo did not let me grab an exon to add it to a feature. I was unable to drag the element from the Evidence tracks (any evidence tracks) to add it as an exon to the desired new annotation.

The error went away after reloading and cleaning the cache.

the errors in the console read like so (repeatedly):

Uncaught TypeError: Cannot read property 'domNode' of null DraggableHTMLFeatures.js:917 declare.handleFeatureDragSetup DraggableHTMLFeatures.js:917 declare.onFeatureMouseDown DraggableHTMLFeatures.js:787 (anonymous function) lang.js:373 jQuery.event.dispatch jquery.js:3256 elemData.handle.eventHandle jquery.js:2876

It is not possible to retrieve the entire Sequence of the gene model with the fake intron. An "Unexpected token" is also apparent and disruptive.

The error console reads:

SyntaxError {stack: (...), message: "Unexpected token <"} message: "Unexpected token <" stack: (...) get stack: function () { [native code] } arguments: null caller: null length: 0 name: "" prototype: Object constructor: function () { [native code] } arguments: null caller: null length: 0 name: "" prototype: Object constructor: function () { [native code] } arguments: null caller: null length: 0 name: "" prototype: Object proto: function Empty() {}

**proto**: Object **proto**: function Empty() {} **proto**: Object **proto**: function Empty() {} set stack: function () { [native code] } **proto**: Error xhr.js:432 _deferError xhr.js:432 (anonymous function) xhr.js:392 notify Deferred.js:187 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:198 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:202 complete Deferred.js:168 reject.errback Deferred.js:230 notify Deferred.js:202 complete Deferred.js:168 reject.errback Deferred.js:230 (anonymous function) xhr.js:627 signalListener Deferred.js:37 signalWaiting Deferred.js:28 reject.reject Deferred.js:219 signalDeferred Deferred.js:84 signalListener Deferred.js:58 signalWaiting Deferred.js:28 reject.reject Deferred.js:219 signalDeferred Deferred.js:84 signalListener Deferred.js:58 signalWaiting Deferred.js:28 reject.reject Deferred.js:219 signalDeferred Deferred.js:84 signalListener Deferred.js:55 signalWaiting Deferred.js:28 reject.reject Deferred.js:219 signalDeferred Deferred.js:84 signalListener Deferred.js:58 signalWaiting Deferred.js:28 reject.reject Deferred.js:219 handleResponse xhr.js:54 onLoad xhr.js:76 ######
childers commented 10 years ago

I exported the annotations for this scaffold as gff3 to see what was happening at the feature level. There is a non_canonical_three_prime_splice_site feature located at coordinated that would put it inside a CDS/exon boundary.

It is possible that this happened due to the user adjusting the boundary, creating the non-canonical splice site flag. For some reason the non_canonical_three_prime_splice_site state was not properly reset when the feature was later adjusted.

nathandunn commented 9 years ago

Want to retest this in 2.0.0.

monicacecilia commented 9 years ago

After testing, have not been able to reproduce. This is good! I am closing this issue for now, and I am positive 2.0 won't be sending this error again - connectivity and latency should not be that much of an issue with the new architecture. here's hoping.