From 67767f5e70ed3bd4522311237397c4969ba2115c Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 04:51:21 +0530 Subject: [PATCH 01/15] added new test "flipStrand" --- tests/js/EditTrack.spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index aa144b6f..14f21329 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -111,6 +111,10 @@ describe( "Edit Track", function() { expect(editTrack.getWholeCDSCoordinates(transcript_data.input[1])).toEqual([19977, 18796]); }); + it('tests flipStrand', function() { + expect(editTrack.flipStrand(transcript_data.input[0]).get('strand')).toEqual(-1); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From 5d9e69a77d9038a6259df62b09c16632d0c4eda4 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 04:56:22 +0530 Subject: [PATCH 02/15] added new test "setLongestORF" --- tests/data/transcripts/orf_3.js | 88 +++++++++++++++++++++++++++++++ tests/data/transcripts/transcript_data.js | 4 +- tests/js/EditTrack.spec.js | 4 ++ 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 tests/data/transcripts/orf_3.js diff --git a/tests/data/transcripts/orf_3.js b/tests/data/transcripts/orf_3.js new file mode 100644 index 00000000..ec1c371b --- /dev/null +++ b/tests/data/transcripts/orf_3.js @@ -0,0 +1,88 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq + // which is located in file data/RefSeq.js + var feature = { + "data": { + "type": "transcript", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "subfeatures": [ + { + "data": { + "type": "exon", + "name": "undefined:exon1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 18796, + "end": 18869 + }, + "_uniqueID": "SimpleFeature_72" + }, + { + "data": { + "type": "exon", + "name": "undefined:exon2", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 19075, + "end": 19210 + }, + "_uniqueID": "SimpleFeature_73" + }, + { + "data": { + "type": "exon", + "name": "undefined:exon3", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 19819, + "end": 19977 + }, + "_uniqueID": "SimpleFeature_74" + }, + { + "data": { + "type": "CDS", + "name": "undefined:CDS1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 18796, + "end": 18869 + }, + "_uniqueID": "SimpleFeature_75" + }, + { + "data": { + "type": "CDS", + "name": "undefined:CDS2", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 19075, + "end": 19210 + }, + "_uniqueID": "SimpleFeature_76" + }, + { + "data": { + "type": "CDS", + "name": "undefined:CDS3", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 19819, + "end": 19977 + }, + "_uniqueID": "SimpleFeature_77" + } + ], + "start": 18796, + "end": 19977 + }, + "_uniqueID": "SimpleFeature_71" +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); \ No newline at end of file diff --git a/tests/data/transcripts/transcript_data.js b/tests/data/transcripts/transcript_data.js index 4e6cc274..d5dc966c 100644 --- a/tests/data/transcripts/transcript_data.js +++ b/tests/data/transcripts/transcript_data.js @@ -14,6 +14,7 @@ define([ './resize_4', './orf_1', './orf_2', + './orf_3', './cds_1', './merge_1', './normalize_1' @@ -33,6 +34,7 @@ define([ resize_4, orf_1, orf_2, + orf_3, cds_1, merge_1, normalize_1 @@ -41,7 +43,7 @@ var transcript_data = { "input": [input_1, input_2, input_3, input_4, input_5, input_6, input_7, input_8], "resize": [resize_1, resize_2, resize_3, resize_4], - "orf": [orf_1, orf_2], + "orf": [orf_1, orf_2, orf_3], "cds": [cds_1], "merge": [merge_1], "normalize": [normalize_1] diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 14f21329..02529761 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -115,6 +115,10 @@ describe( "Edit Track", function() { expect(editTrack.flipStrand(transcript_data.input[0]).get('strand')).toEqual(-1); }); + it('tests setLongestORF', function() { + expect(compareFeatures(transcript_data.orf[2], editTrack.setLongestORF(refSeq, transcript_data.input[1]))).toEqual(true); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From 33adbe91ee84ac7c13718287faa79045c93641f3 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:00:48 +0530 Subject: [PATCH 03/15] added new tests "markNonCanonicalSpliceSites","markNonCanonicalTranslationStartSite" and "markNonCanonicalTranslationStopSite" --- tests/data/transcripts/non_canonical_1.js | 46 +++++++++++++++++++++++++++++++ tests/data/transcripts/non_canonical_2.js | 46 +++++++++++++++++++++++++++++++ tests/data/transcripts/transcript_data.js | 5 ++++ tests/js/EditTrack.spec.js | 15 ++++++++++ 4 files changed, 112 insertions(+) create mode 100644 tests/data/transcripts/non_canonical_1.js create mode 100644 tests/data/transcripts/non_canonical_2.js diff --git a/tests/data/transcripts/non_canonical_1.js b/tests/data/transcripts/non_canonical_1.js new file mode 100644 index 00000000..ee6bf4c7 --- /dev/null +++ b/tests/data/transcripts/non_canonical_1.js @@ -0,0 +1,46 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq + // which is located in file data/RefSeq.js + // This consist a non canonical stop site + var feature = { + "data": { + "type": "transcript", + "name": "maker-Si_gnF%2Escaffold02797-augustus-gene-9.30-mRNA-1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "subfeatures": [ + { + "data": { + "type": "exon", + "name": "maker-Si_gnF%2Escaffold02797-augustus-gene-9.30-mRNA-1:exon1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 981763, + "end": 982146 + }, + "_uniqueID": "SimpleFeature_128" + }, + { + "data": { + "type": "CDS", + "name": "maker-Si_gnF%2Escaffold02797-augustus-gene-9.30-mRNA-1:CDS1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 981763, + "end": 981913 + }, + "_uniqueID": "SimpleFeature_129" + } + ], + "start": 981763, + "end": 982146 + }, + "_uniqueID": "SimpleFeature_127" +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); \ No newline at end of file diff --git a/tests/data/transcripts/non_canonical_2.js b/tests/data/transcripts/non_canonical_2.js new file mode 100644 index 00000000..416b3304 --- /dev/null +++ b/tests/data/transcripts/non_canonical_2.js @@ -0,0 +1,46 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq + // which is located in file data/RefSeq.js + // This consist a both start/stop non canonical sites + var feature = { + "data": { + "type": "transcript", + "name": "maker-Si_gnF%2Escaffold02797-snap-gene-10.47-mRNA-1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "subfeatures": [ + { + "data": { + "type": "exon", + "name": "maker-Si_gnF%2Escaffold02797-snap-gene-10.47-mRNA-1:exon1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 994150, + "end": 994370 + }, + "_uniqueID": "SimpleFeature_1054" + }, + { + "data": { + "type": "CDS", + "name": "maker-Si_gnF%2Escaffold02797-snap-gene-10.47-mRNA-1:CDS1", + "seq_id": "Si_gnF.scaffold02797", + "strand": -1, + "start": 994150, + "end": 994370 + }, + "_uniqueID": "SimpleFeature_1055" + } + ], + "start": 994150, + "end": 994370 + }, + "_uniqueID": "SimpleFeature_1053" +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); \ No newline at end of file diff --git a/tests/data/transcripts/transcript_data.js b/tests/data/transcripts/transcript_data.js index d5dc966c..8a7578b7 100644 --- a/tests/data/transcripts/transcript_data.js +++ b/tests/data/transcripts/transcript_data.js @@ -15,6 +15,8 @@ define([ './orf_1', './orf_2', './orf_3', + './non_canonical_1', + './non_canonical_2', './cds_1', './merge_1', './normalize_1' @@ -35,6 +37,8 @@ define([ orf_1, orf_2, orf_3, + non_canonical_1, + non_canonical_2, cds_1, merge_1, normalize_1 @@ -44,6 +48,7 @@ var transcript_data = { input_8], "resize": [resize_1, resize_2, resize_3, resize_4], "orf": [orf_1, orf_2, orf_3], + "non_canonical": [non_canonical_1, non_canonical_2], "cds": [cds_1], "merge": [merge_1], "normalize": [normalize_1] diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 02529761..76c215fa 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -119,6 +119,21 @@ describe( "Edit Track", function() { expect(compareFeatures(transcript_data.orf[2], editTrack.setLongestORF(refSeq, transcript_data.input[1]))).toEqual(true); }); + it('tests markNonCanonicalSpliceSites', function() { + expect(editTrack.markNonCanonicalSpliceSites(transcript_data.input[0], + refSeq).get('subfeatures')[2].get('type')).toEqual('non_canonical_splice_site'); + }); + + it('tests markNonCanonicalTranslationStartSite', function() { + expect(editTrack.markNonCanonicalTranslationStartSite(transcript_data.non_canonical[1], + refSeq).get('subfeatures')[2].get('type')).toEqual('non_canonical_translation_start_site'); + }); + + it('tests markNonCanonicalTranslationStopSite', function() { + expect(editTrack.markNonCanonicalTranslationStopSite(transcript_data.non_canonical[0], + refSeq).get('subfeatures')[0].get('type')).toEqual('non_canonical_translation_stop_site'); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From b7d6be9a169034c1e374dddb3f3ae5c61bde7d83 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:02:31 +0530 Subject: [PATCH 04/15] added new test "filterFeatures" --- tests/js/EditTrack.spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 76c215fa..400a2a35 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -134,6 +134,10 @@ describe( "Edit Track", function() { refSeq).get('subfeatures')[0].get('type')).toEqual('non_canonical_translation_stop_site'); }); + it('tests filterFeatures', function() { + expect(editTrack.filterFeatures(transcript_data.input[0], 'exon')[0].get('start')).toEqual(16946); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From 38346051be5b248a04a9f15339c8f61663151830 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:03:32 +0530 Subject: [PATCH 05/15] added new test "copyFeature" --- tests/js/EditTrack.spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 400a2a35..944be1c9 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -138,6 +138,10 @@ describe( "Edit Track", function() { expect(editTrack.filterFeatures(transcript_data.input[0], 'exon')[0].get('start')).toEqual(16946); }); + it('tests copyFeature', function() { + expect(editTrack.copyFeature(transcript_data.input[0], {start: 16949}).get('start')).toEqual(16949); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From 1b69f20d64729cec272089bdac052c50bb6c71c3 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:05:58 +0530 Subject: [PATCH 06/15] added new test "mergeExons" --- tests/js/EditTrack.spec.js | 7 +++++++ www/JBrowse/View/Track/EditTrack.js | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 944be1c9..e8fa0935 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -142,6 +142,13 @@ describe( "Edit Track", function() { expect(editTrack.copyFeature(transcript_data.input[0], {start: 16949}).get('start')).toEqual(16949); }); + it('tests mergeExons', function() { + var exons = editTrack.filterExons(transcript_data.input[0]); + var merge_these = [exons[0], exons[1]]; + var merged = editTrack.mergeExons(refSeq_2, transcript_data.input[0], merge_these); + expect(merged.get('start')).toEqual(16946); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); diff --git a/www/JBrowse/View/Track/EditTrack.js b/www/JBrowse/View/Track/EditTrack.js index e2102589..6aa1bc13 100644 --- a/www/JBrowse/View/Track/EditTrack.js +++ b/www/JBrowse/View/Track/EditTrack.js @@ -686,12 +686,12 @@ var EditTrack = declare(DraggableFeatureTrack, * won't have any CDS features either. */ mergeExons: function (refSeq, transcript, exonsToMerge) { - if (!this.areSiblings(exonsToMerge)) { - return; - } + var str_exonsToMerge = _.map(exonsToMerge, function (exon) { + return JSON.stringify(exon); + }); var exons = _.reject(this.filterExons(transcript), function (exon) { - return _.indexOf(exonsToMerge, exon) !== -1; + return _.indexOf(str_exonsToMerge, JSON.stringify(exon)) !== -1; }); var min = _.min(_.map(exonsToMerge, function (exonToMerge) { return exonToMerge.get('start'); From 481401674d9dd71d2a52853d2f90529078344c67 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:07:49 +0530 Subject: [PATCH 07/15] added new test "createTranscript" --- tests/js/EditTrack.spec.js | 6 ++++++ www/JBrowse/View/Track/EditTrack.js | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index e8fa0935..f9d2ebb4 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -149,6 +149,12 @@ describe( "Edit Track", function() { expect(merged.get('start')).toEqual(16946); }); + it('tests createTranscript', function() { + var subfeatures = editTrack.filterFeatures(transcript_data.input[1], 'CDS'); + var newTranscript = editTrack.createTranscript(subfeatures, 'test-transcript') + expect(newTranscript.get('seq_id')).toBe('Si_gnF.scaffold02797'); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); diff --git a/www/JBrowse/View/Track/EditTrack.js b/www/JBrowse/View/Track/EditTrack.js index 6aa1bc13..f69a2e72 100644 --- a/www/JBrowse/View/Track/EditTrack.js +++ b/www/JBrowse/View/Track/EditTrack.js @@ -1114,14 +1114,14 @@ var EditTrack = declare(DraggableFeatureTrack, subfeatures: _.map(subfeatures, function (f) { var type = f.get('type'); count[type] = count[type] || 1; - return { + return {'data': { type: type, name: name + ':' + type + count[type]++, seq_id: f.get('seq_id'), strand: f.get('strand'), start: f.get('start'), end: f.get('end'), - }; + }}; }) } }); From 92811bf55f7dc1d610cf2559d197c9a8c5ef45e6 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:08:43 +0530 Subject: [PATCH 08/15] added new test "getCDNACoordinates" --- tests/js/EditTrack.spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index f9d2ebb4..d732fecc 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -155,6 +155,10 @@ describe( "Edit Track", function() { expect(newTranscript.get('seq_id')).toBe('Si_gnF.scaffold02797'); }); + it('tests getCDNACoordinates', function() { + expect(editTrack.getCDNACoordinates(transcript_data.input[0])[4]).toEqual([21298, 21389]); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From 931a749a233506d75a2a5ccb535bdb31bdc56507 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:09:49 +0530 Subject: [PATCH 09/15] added new test "deleteExons" --- tests/js/EditTrack.spec.js | 7 +++++++ www/JBrowse/View/Track/EditTrack.js | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index d732fecc..6db2baf7 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -159,6 +159,13 @@ describe( "Edit Track", function() { expect(editTrack.getCDNACoordinates(transcript_data.input[0])[4]).toEqual([21298, 21389]); }); + it('tests deleteExons', function() { + var exons = editTrack.filterExons(transcript_data.input[0]); + var delete_these = [exons[0],exons[1]]; + var deleted = editTrack.deleteExons(refSeq_2, transcript_data.input[0], delete_these); + expect(editTrack.filterExons(deleted)[1].get('start')).toEqual(21002); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); diff --git a/www/JBrowse/View/Track/EditTrack.js b/www/JBrowse/View/Track/EditTrack.js index f69a2e72..31a0b214 100644 --- a/www/JBrowse/View/Track/EditTrack.js +++ b/www/JBrowse/View/Track/EditTrack.js @@ -760,9 +760,12 @@ var EditTrack = declare(DraggableFeatureTrack, if (this.filterExons(transcript).length <= 1) { return; } + var str_exonsToDelete = _.map(exonsToDelete, function(exon) { + return JSON.stringify(exon); + }); var exons = _.reject(this.filterExons(transcript), function (exon) { - return _.indexOf(exonsToDelete, exon) !== -1; + return _.indexOf(str_exonsToDelete, JSON.stringify(exon)) !== -1; }); var newTranscript = this.createTranscript(exons, transcript.get('name')); var translationStart = this.getTranslationStart(transcript); From 8d898a1bff2b41fc0b804487602e6900d7c2e512 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:10:28 +0530 Subject: [PATCH 10/15] added new test "sortAnnotationsByLocation" --- tests/js/EditTrack.spec.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 6db2baf7..49fb1469 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -166,6 +166,12 @@ describe( "Edit Track", function() { expect(editTrack.filterExons(deleted)[1].get('start')).toEqual(21002); }); + it('tests sortAnnotationsByLocation', function() { + var exons = editTrack.filterExons(transcript_data.input[0]); + var sorted = editTrack.sortAnnotationsByLocation(exons); + expect(sorted[0].get('start')).toEqual(16946); + }); + it('tests transcriptToCDNA', function() { expect(editTrack.transcriptToCDNA(transcript_data.input[3], 4)).toEqual(0); }); From b7be1a372219cb621b4c5922548734bb42c4494c Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:14:10 +0530 Subject: [PATCH 11/15] removed an extra data from SimpleFeature JSON structure --- www/JBrowse/Model/SimpleFeature.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/www/JBrowse/Model/SimpleFeature.js b/www/JBrowse/Model/SimpleFeature.js index f7dec9b5..bfcb347e 100644 --- a/www/JBrowse/Model/SimpleFeature.js +++ b/www/JBrowse/Model/SimpleFeature.js @@ -32,10 +32,7 @@ var SimpleFeature = Util.fastDeclare({ if(( subfeatures = this.data.subfeatures )) { for( var i = 0; i < subfeatures.length; i++ ) { if( typeof subfeatures[i].get != 'function' ) { - subfeatures[i] = new SimpleFeature( - { data: subfeatures[i], - parent: this - }); + subfeatures[i] = new SimpleFeature(subfeatures[i]); } } } @@ -115,8 +112,16 @@ SimpleFeature.toJSON = function (feature) { * ids will differ from the original feature. */ SimpleFeature.fromJSON = function (featureJSON) { - var data = JSON.parse(featureJSON); - return new SimpleFeature({data: data}); + // Here parse function requires a string in input + // But featureJSON is complete JSON and therefore + // we need to change JSON to string first and then + // parse it to save in to data. and create new feature + // var data = JSON.parse(JSON.stringify(featureJSON)); + + // var data = JSON.parse(featureJSON); + // return new SimpleFeature({data: data}); + // return new SimpleFeature({data: featureJSON}); + return new SimpleFeature(featureJSON); }; return SimpleFeature; From c231fee478bdd56fb366d466efedc0e07e59b959 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Mon, 26 Jun 2017 05:15:00 +0530 Subject: [PATCH 12/15] fixed resizeExon --- www/JBrowse/View/Track/EditTrack.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/JBrowse/View/Track/EditTrack.js b/www/JBrowse/View/Track/EditTrack.js index 31a0b214..2b8d7e72 100644 --- a/www/JBrowse/View/Track/EditTrack.js +++ b/www/JBrowse/View/Track/EditTrack.js @@ -640,7 +640,7 @@ var EditTrack = declare(DraggableFeatureTrack, * part of the given transcript, or if the given exon is not really an exon. */ resizeExon: function (refSeq, transcript, exonToResize, left, right) { - if (exonToResize.parent() !== transcript || + if (exonToResize.parent() !== transcript && exonToResize.get('type') !== 'exon') { return; } From 5cea5057372d7618490feb14f43c074c25cab6e9 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Thu, 29 Jun 2017 08:12:51 +0530 Subject: [PATCH 13/15] edited resizeExon to test for translation start changes --- tests/data/transcripts/cds_2.js | 5 +++++ tests/data/transcripts/transcript_data.js | 6 +++--- tests/js/EditTrack.spec.js | 9 +++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 tests/data/transcripts/cds_2.js diff --git a/tests/data/transcripts/cds_2.js b/tests/data/transcripts/cds_2.js new file mode 100644 index 00000000..f60dce6f --- /dev/null +++ b/tests/data/transcripts/cds_2.js @@ -0,0 +1,5 @@ +define([], + function() { + var str = "ATGGCCGATAACCGCGATCGCAATATTCGAAGAGGCACTTGCCGGATGTCAATTCCATCCAGCAGGATGCGTCCTTGGCTGATCTCGATTAATTGGAAGAGGGCCATCACGGTTGATGATTTTCCGCTACCGGTTCTTCCACAAATACCCAACTACGAATCATTGAATTACCTTTTGTCCAGCTGGTATTTTCAAAGACAAATCTGTGATCACCGGACTTCTATCTACATCGAAGCGCAGAGAGACATTCTCGAAAACGATCTCGCCCCTATTAGGCCAGTCATTGGCCACTTTACAATCGAAGTACTACGCGTCGATCTGATAAACGACGATGACAAAAGACGAAAGATTACCGCGAGACAGTAA"; + return str; +}); diff --git a/tests/data/transcripts/transcript_data.js b/tests/data/transcripts/transcript_data.js index 8a7578b7..eb46fa10 100644 --- a/tests/data/transcripts/transcript_data.js +++ b/tests/data/transcripts/transcript_data.js @@ -18,6 +18,7 @@ define([ './non_canonical_1', './non_canonical_2', './cds_1', + './cds_2', './merge_1', './normalize_1' ], function ( @@ -40,17 +41,16 @@ define([ non_canonical_1, non_canonical_2, cds_1, + cds_2, merge_1, normalize_1 ) { var transcript_data = { "input": [input_1, input_2, input_3, input_4, input_5, input_6, input_7, - input_8], "resize": [resize_1, resize_2, resize_3, resize_4], "orf": [orf_1, orf_2, orf_3], "non_canonical": [non_canonical_1, non_canonical_2], - "cds": [cds_1], - "merge": [merge_1], + "cds": [cds_1, cds_2], "normalize": [normalize_1] }; diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 49fb1469..6f947c2c 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -217,6 +217,15 @@ describe( "Edit Track", function() { var left = exon.get('start'); outTranscript = editTrack.resizeExon(refSeq, transcript_data["input"][1], exon, left, right); expect(compareFeatures(transcript_data["resize"][2], outTranscript)).toBe(true); + + // check for the translation start changes + exon = editTrack.filterExons(transcript_data.input[1])[0]; + var right = exon.get('end'); + var left = exon.get('start') - 3; + outTranscript = editTrack.resizeExon(refSeq, transcript_data.input[1], exon, left, right); + // Verify if CDS is correct + expect(editTrack.getCDS(refSeq, outTranscript)).toEqual(transcript_data.cds[1]); + expect(outTranscript.get('start')).toEqual(18793); }); it( 'tests areOnSameStrand', function() { From 02c31ec1534f15d045660770e9ec4c7e626f7099 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Thu, 29 Jun 2017 08:14:50 +0530 Subject: [PATCH 14/15] improved test for mergeTranscripts --- tests/data/transcripts/input_10.js | 40 +++++++++++++++++++++ tests/data/transcripts/input_11.js | 40 +++++++++++++++++++++ tests/data/transcripts/merge_2.js | 58 +++++++++++++++++++++++++++++++ tests/data/transcripts/transcript_data.js | 8 +++++ tests/js/EditTrack.spec.js | 10 ++++++ 5 files changed, 156 insertions(+) create mode 100644 tests/data/transcripts/input_10.js create mode 100644 tests/data/transcripts/input_11.js create mode 100644 tests/data/transcripts/merge_2.js diff --git a/tests/data/transcripts/input_10.js b/tests/data/transcripts/input_10.js new file mode 100644 index 00000000..a7489056 --- /dev/null +++ b/tests/data/transcripts/input_10.js @@ -0,0 +1,40 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq_2 + // which is located in file data/RefSeq_2.js + var feature = { + "data": { + "seq_id": "testRefSeq2", + "end": 18, + "start": 5, + "strand": 1, + "subfeatures": [ + { + "data": { + "seq_id": "testRefSeq2", + "end": 18, + "start": 5, + "strand": 1, + "type": "exon" + } + }, + { + "data": { + "seq_id": "testRefSeq2", + "end": 18, + "start": 5, + "strand": 1, + "type": "CDS" + } + } + ], + "type": "transcript" + }, + "normalized": true, +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); diff --git a/tests/data/transcripts/input_11.js b/tests/data/transcripts/input_11.js new file mode 100644 index 00000000..12757d89 --- /dev/null +++ b/tests/data/transcripts/input_11.js @@ -0,0 +1,40 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq_2 + // which is located in file data/RefSeq_2.js + var feature = { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 21, + "strand": 1, + "subfeatures": [ + { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 21, + "strand": 1, + "type": "exon" + } + }, + { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 21, + "strand": 1, + "type": "CDS" + } + } + ], + "type": "transcript" + }, + "normalized": true, +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); diff --git a/tests/data/transcripts/merge_2.js b/tests/data/transcripts/merge_2.js new file mode 100644 index 00000000..91988e2f --- /dev/null +++ b/tests/data/transcripts/merge_2.js @@ -0,0 +1,58 @@ +define([ + 'JBrowse/Model/SimpleFeature' + ], +function (SimpleFeature) { + // This transcript is corresponding to RefSeq_2 + // which is located in file data/RefSeq_2.js + var feature = { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 5, + "strand": 1, + "subfeatures": [ + { + "data": { + "seq_id": "testRefSeq2", + "end": 18, + "start": 5, + "strand": 1, + "type": "exon" + } + }, + { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 21, + "strand": 1, + "type": "exon" + } + }, + { + "data": { + "seq_id": "testRefSeq2", + "end": 18, + "start": 5, + "strand": 1, + "type": "CDS" + } + }, + { + "data": { + "seq_id": "testRefSeq2", + "end": 33, + "start": 21, + "strand": 1, + "type": "CDS" + } + } + ], + "type": "transcript" + }, + "normalized": true, +}; + +var transcript = SimpleFeature.fromJSON(feature); +return transcript; +}); diff --git a/tests/data/transcripts/transcript_data.js b/tests/data/transcripts/transcript_data.js index eb46fa10..6e0c19fd 100644 --- a/tests/data/transcripts/transcript_data.js +++ b/tests/data/transcripts/transcript_data.js @@ -8,6 +8,8 @@ define([ './input_7', './input_8', './input_9', + './input_10', + './input_11', './resize_1', './resize_2', './resize_3', @@ -20,6 +22,7 @@ define([ './cds_1', './cds_2', './merge_1', + './merge_2', './normalize_1' ], function ( input_1, @@ -31,6 +34,8 @@ define([ input_7, input_8, input_9, + input_10, + input_11, resize_1, resize_2, resize_3, @@ -43,14 +48,17 @@ define([ cds_1, cds_2, merge_1, + merge_2, normalize_1 ) { var transcript_data = { "input": [input_1, input_2, input_3, input_4, input_5, input_6, input_7, + input_8, input_9, input_10, input_11], "resize": [resize_1, resize_2, resize_3, resize_4], "orf": [orf_1, orf_2, orf_3], "non_canonical": [non_canonical_1, non_canonical_2], "cds": [cds_1, cds_2], + "merge": [merge_1, merge_2], "normalize": [normalize_1] }; diff --git a/tests/js/EditTrack.spec.js b/tests/js/EditTrack.spec.js index 6f947c2c..269a0b91 100644 --- a/tests/js/EditTrack.spec.js +++ b/tests/js/EditTrack.spec.js @@ -244,6 +244,16 @@ describe( "Edit Track", function() { [transcript_data.input[6], transcript_data.input[7]]), transcript_data.input[6])).toBe(true); + // transcripts on different strands cannot be merged + expect(editTrack.mergeTranscripts(refSeq, [transcript_data.input[0], transcript_data.input[1]])).toEqual(undefined); + + // With CDS + expect(compareFeatures( + editTrack.mergeTranscripts(refSeq_2, + [transcript_data.input[9], transcript_data.input[10]]), + transcript_data.merge[1])).toBe(true); + + // Without CDS expect(compareFeatures( editTrack.mergeTranscripts(refSeq_2, [transcript_data.input[4], transcript_data.input[5]]), From b7dc1c48c747cd2ceff5875255158a599db58cf4 Mon Sep 17 00:00:00 2001 From: aniarya82 Date: Wed, 5 Jul 2017 15:44:31 +0530 Subject: [PATCH 15/15] SimpleFeature.fromJSON restored --- www/JBrowse/Model/SimpleFeature.js | 1 - 1 file changed, 1 deletion(-) diff --git a/www/JBrowse/Model/SimpleFeature.js b/www/JBrowse/Model/SimpleFeature.js index bfcb347e..d48506db 100644 --- a/www/JBrowse/Model/SimpleFeature.js +++ b/www/JBrowse/Model/SimpleFeature.js @@ -120,7 +120,6 @@ SimpleFeature.fromJSON = function (featureJSON) { // var data = JSON.parse(featureJSON); // return new SimpleFeature({data: data}); - // return new SimpleFeature({data: featureJSON}); return new SimpleFeature(featureJSON); };