UNPKG

@gmod/jbrowse

Version:

JBrowse - client-side genome browser

273 lines (246 loc) 12.4 kB
require([ 'JBrowse/Browser', 'JBrowse/Store/BigWig', 'JBrowse/Model/XHRBlob' ], function( Browser, BigWig, XHRBlob ) { var errorFunc = function(e) { console.error(e); }; describe( 'BigWig with volvox_microarray.bw', function() { var browser = new Browser({ unitTestMode: true }); var b = new BigWig({ browser: browser, blob: new XHRBlob('../../sample_data/raw/volvox/volvox_microarray.bw') }); it('constructs', function(){ expect(b).toBeTruthy(); }); it('returns empty array of features for a nonexistent chrom', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( 'nonexistent', 1, 10000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; }); runs(function() { expect(wigData.length).toEqual(0); }); }); it('reads some good data unzoomed', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 0, 10000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toBeGreaterThan(100); dojo.forEach( wigData.slice(1,20), function(feature) { expect(feature.get('start')).toBeGreaterThan(0); expect(feature.get('end')).toBeLessThan(10000); }); //console.log(wigData); }); }); it('reads some good data when zoomed out', function() { var v = b.getView( 1/20000 ); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 100, 20000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },500); runs(function() { expect(wigData.length).toEqual(2); dojo.forEach( wigData, function(feature) { expect(feature.get('start')).toBeGreaterThan( -1 ); expect(feature.get('end')).toBeLessThan( 40000 ); }); //console.log(wigData); }); }); it('reads the file stats (the totalSummary section)', function() { var stats; b.getGlobalStats(function(s) { stats = s; }); waitsFor(function() { return stats; }); runs( function() { //console.log(stats); expect(stats.basesCovered).toEqual(50690); expect(stats.scoreMin).toEqual(100); expect(stats.scoreMax).toEqual(899); expect(stats.scoreSum).toEqual(16863706); expect(stats.scoreSumSquares).toEqual(8911515204); expect(stats.scoreStdDev).toEqual(255.20080383762445); expect(stats.scoreMean).toEqual(332.6830933122904); }); }); it('reads good data when zoomed very little', function() { var v = b.getView( 1/17.34 ); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 19999, 24999, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toBeGreaterThan(19); expect(wigData.length).toBeLessThan(1000); dojo.forEach( wigData, function(feature) { expect(feature.get('start')).toBeGreaterThan(10000); expect(feature.get('end')).toBeLessThan(30000); }); //console.log(wigData); }); }); }); describe( 'empty BigWig file', function() { var browser = new Browser({ unitTestMode: true }); var b = new BigWig({ browser: browser, blob: new XHRBlob('../data/empty.bigWig' ) }); it('constructs', function(){ expect(b).toBeTruthy(); }); it('returns empty array of features for a nonexistent chrom', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( 'nonexistent', 1, 10000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; }); runs(function() { expect(wigData.length).toEqual(0); }); }); it('reads some good data unzoomed', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 0, 10000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toEqual(0); }); }); it('reads some good data when zoomed out', function() { var v = b.getView( 1/20000 ); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 100, 20000, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },500); runs(function() { expect(wigData.length).toEqual(0); }); }); it('reads the file stats (the totalSummary section)', function() { var stats; b.getGlobalStats(function(s) { stats = s; }); waitsFor(function() { return stats; }); runs( function() { console.log(stats); expect(stats.basesCovered).toEqual(0); expect(stats.scoreMin).toEqual(0); expect(stats.scoreMax).toEqual(3); expect(stats.scoreSum).toEqual(0); expect(stats.scoreSumSquares).toEqual(0); expect(stats.scoreStdDev).toEqual(0); expect(stats.scoreMean).toEqual(0); }); }); it('reads good data when zoomed very little', function() { var v = b.getView( 1/17.34 ); var wigData; v.readWigData( browser.regularizeReferenceName('ctgA'), 19999, 24999, function(features) { wigData = features; }, errorFunc ); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toEqual( 0 ); }); }); }); // only run the tomato_rnaseq test if it's in the URL someplace if( document.location.href.indexOf('tomato_rnaseq') > -1 ) { describe( 'BigWig with tomato RNAseq coverage', function() { var b = new BigWig({ browser: new Browser({ unitTestMode: true }), blob: new XHRBlob('../data/SL2.40_all_rna_seq.v1.bigwig') }); it('constructs', function(){ expect(b).toBeTruthy(); }); it('returns empty array of features for a nonexistent chrom', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( 'nonexistent', 1, 10000, function(features) { wigData = features; }); waitsFor(function() { return wigData; }); runs(function() { expect(wigData.length).toEqual(0); }); }); it('reads some good data unzoomed', function() { var v = b.getUnzoomedView(); var wigData; v.readWigData( 'SL2.40ch01', 1, 100000, function(features) { wigData = features; }); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toBeGreaterThan(10000); dojo.forEach( wigData.slice(0,20), function(feature) { expect(feature.get('start')).toBeGreaterThan(0); expect(feature.get('end')).toBeLessThan(100001); }); //console.log(wigData); }); }); it('reads some good data when zoomed', function() { var v = b.getView( 1/100000 ); var wigData; v.readWigData( 'SL2.40ch01', 100000, 2000000, function(features) { wigData = features; }); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toBeGreaterThan(19); expect(wigData.length).toBeLessThan(100); dojo.forEach( wigData, function(feature) { expect(feature.get('start')).toBeGreaterThan(80000); expect(feature.get('end')).toBeLessThan(2050000); }); //console.log(wigData); }); }); it('reads the file stats (the totalSummary section)', function() { var stats = b.getGlobalStats(); expect(stats.basesCovered).toEqual(141149153); expect(stats.minVal).toEqual(1); expect(stats.maxVal).toEqual(62066); expect(stats.sumData).toEqual(16922295025); expect(stats.sumSquares).toEqual(45582937421360); expect(stats.stdDev).toEqual(555.4891087210976); expect(stats.mean).toEqual(119.88945498666932); }); it('reads good data when zoomed very little', function() { var v = b.getView( 1/17.34 ); var wigData; v.readWigData( 'SL2.40ch01', 19999, 24999, function(features) { wigData = features; }); waitsFor(function() { return wigData; },1000); runs(function() { expect(wigData.length).toBeGreaterThan(19); expect(wigData.length).toBeLessThan(1000); dojo.forEach( wigData, function(feature) { expect(feature.get('start')).toBeGreaterThan(10000); expect(feature.get('end')).toBeLessThan(30000); }); //console.log(wigData); }); }); }); } });