ami-cjs.js
Version:
<p align="center"> <img src="https://cloud.githubusercontent.com/assets/214063/23213764/78ade038-f90c-11e6-8208-4fcade5f3832.png" width="60%"> </p>
133 lines (104 loc) • 4.02 kB
JavaScript
/* globals describe, it, expect, beforeEach*/
import ParsersDicom from '../../src/parsers/parsers.dicom';
import ParsersNifti from '../../src/parsers/parsers.nifti';
let dicomDataset = {
format: 'dicom',
url: '/base/data/dicom/adi_slice.dcm',
parser: ParsersDicom,
};
let niftiDataset = {
format: 'nifti',
url: '/base/data/nifti/adi_slice.nii',
parser: ParsersNifti,
};
// let nrrdDataset = {
// format: 'nrrd',
// url: '/base/data/nrrd/adi_slice.nrrd',
// parser: ParsersNrrd
// };
function crop( value, decimals ){
return (Math.floor( Math.pow(10, decimals) * value) / Math.pow(10, decimals));
}
function test( dataset, datasetDicom ) {
let parserDicom = null;
beforeEach((done) => {
// fetch dicom data
let oReqDicom = new XMLHttpRequest();
oReqDicom.open('GET', datasetDicom.url, true);
oReqDicom.responseType = 'arraybuffer';
oReqDicom.onload = () => {
let buffer = oReqDicom.response;
if (buffer) {
parserDicom = new datasetDicom.parser({
url: datasetDicom.url,
buffer}
, 0);
done();
}
};
oReqDicom.send();
});
// test extraction of tags of interest
describe(dataset.format, function() {
let parser = null;
beforeEach((done) => {
// fetch other data
let oReqData = new XMLHttpRequest();
oReqData.open('GET', dataset.url, true);
oReqData.responseType = 'arraybuffer';
oReqData.onload = () => {
let buffer = oReqData.response;
if (buffer) {
parser = new dataset.parser({
url: dataset.url,
buffer}
, 0);
done();
}
};
oReqData.send();
});
it('image position', function() {
let frameIndex = 0;
let dicomImagePosition = parserDicom.imagePosition(frameIndex);
let imagePosition = parser.imagePosition(frameIndex);
expect( crop(imagePosition[0], 5 ) ).toBe( crop( dicomImagePosition[0], 5 ) );
expect( crop(imagePosition[1], 5 ) ).toBe( crop( dicomImagePosition[1], 5 ) );
expect( crop(imagePosition[2], 5 ) ).toBe( crop( dicomImagePosition[2], 5 ) );
});
it('pixel spacing', function() {
let frameIndex = 0;
let dicomPixelSpacing = parserDicom.pixelSpacing(frameIndex);
let pixelSpacing = parser.pixelSpacing(frameIndex);
// check typeof and length...
expect( crop(pixelSpacing[0], 5) ).toBe( crop(dicomPixelSpacing[0], 5) );
expect( crop(pixelSpacing[1], 5) ).toBe( crop(dicomPixelSpacing[1], 5) );
});
it('image orientation', function() {
let frameIndex = 0;
let dicomOrientation = parserDicom.imageOrientation(frameIndex);
let dataOrientation = parser.imageOrientation(frameIndex);
expect( crop(dataOrientation[0], 5 ) ).toBe(crop( dicomOrientation[0], 5 ) );
expect( crop(dataOrientation[1], 5 ) ).toBe(crop( dicomOrientation[1], 5 ) );
expect( crop(dataOrientation[2], 5 ) ).toBe(crop( dicomOrientation[2], 5 ) );
expect( crop(dataOrientation[3], 5 ) ).toBe(crop( dicomOrientation[3], 5 ) );
expect( crop(dataOrientation[4], 5 ) ).toBe(crop( dicomOrientation[4], 5 ) );
expect( crop(dataOrientation[5], 5 ) ).toBe(crop( dicomOrientation[5], 5 ) );
});
it('pixel data', function() {
let frameIndex = 0;
let rows = parser.rows(frameIndex);
let columns = parser.columns(frameIndex);
let dicomPixelData = parserDicom.extractPixelData(frameIndex);
let pixelData = parser.extractPixelData(frameIndex);
expect( pixelData.join() ).toEqual( dicomPixelData.join() );
});
});
}
describe('Orientation', function() {
test( niftiDataset, dicomDataset );
// test( nrrdDataset );
});
// test dataset that does not work anymore..
// does current visualization make sense?
// test first and last from siena