Create DMR files (sample function)

 

The function to create a DMR project with user interface

 

function Create_DMR_project() {

    

    var cancel = false;    

    var nrOfVols, skipVols, createAMRanswer, createAMR, nrSlices, byteswapAnswer, byteswap, bytesperpixel, sizeX, sizeY;

    var filetype = Input.getItem("Please select the DWI filetype", ["ANALYZE", "DICOM", "PHILIPS_REC"]);

    var dwiprefix = Input.getText("Please enter a DWI prefix", "Project-");

    var mosaicSizeX, mosaicSizeY, nrVolsInImg, mosAnswer, targetfolder, info;

    BrainVoyagerQX.TimeOutMessageBox("Please select the first file...", 3);

    var extension;

    switch (filetype) {

    case "ANALYZE": extension = "*.hdr"; break;

    case "DICOM": extension = "*.dcm"; break;

    case "PHILIPS_REC": extension = "*.par"; break;

    default: extension = "*.*";

    }    

    var firstfile = FileDialog.getOpenFileName(extension, "Please select the first file");

    var nrOfVols = Input.getNumber("Please enter the number of volumes per DMR", 1);

    if (nrOfVols == undefined) cancel = true;

    if(!cancel) skipVols = Input.getNumber("Please enter the number of volumes to skip per DMR", 2);

    if(skipVols == undefined) cancel = true;

    if(!cancel) createAMRanswer = MessageBox.information("Create pseudo-AMR files?", MessageBox.Yes, MessageBox.No);

    createAMR = ((createAMRanswer == MessageBox.Yes) ? true : false);

    if(!cancel) nrSlices = Input.getNumber("Please enter the number of slices per volume", 23); // sample data:

    if(nrSlices == undefined) cancel = true;

    if(!cancel) byteswapAnswer = MessageBox.information("Do the data need to be byteswapped? <BR>(if byte order in data is different from current operating system)", MessageBox.Yes, MessageBox.No);

    byteswap = ((byteswapAnswer == MessageBox.Yes) ? true : false);

    if(!cancel) bytesperpixel = Input.getNumber("Please enter the number of bytes per pixel", 2);

    if(bytesperpixel == undefined) cancel = true;

    if(!cancel) sizeX = Input.getNumber("Please enter the X dimension of each image", 128);

    if(sizeX == undefined) cancel = true;

    if(!cancel) sizeY = Input.getNumber("Please enter the Y dimension of each image", 128);

    if(sizeY == undefined) cancel = true;

    if(!cancel){

mosAnswer = MessageBox.information("Are the files mosaic? <BR>(Several images per file)", MessageBox.Yes, MessageBox.No);

mosaic = (mosAnswer == MessageBox.Yes);

if(mosaic) {

    mosaicSizeX = Input.getNumber("Please enter the X matrix of the mosaic image", 640); // sample data:

    mosaicSizeY = Input.getNumber("Please enter the Y matrix of the mosaic image", 640); // sample data:

    nrVolsInImg = Input.getNumber("Please enter the number of volumes per file", 1); // sample data: 1

 }

    }

    if(!cancel) {

BrainVoyagerQX.TimeOutMessageBox("Please select the target folder", 3);

targetfolder = FileDialog.getExistingDirectory();

    }

if (!cancel) {

info = "Number of volumes: "+ nrOfVols.toString() + "\nNumber of slices: " + nrSlices.toString() + "\nX dimension: " + sizeX.toString()

   + "\nY dimension: " + sizeY.toString() + "\nBytes per pixel: " + bytesperpixel.toString();

BrainVoyagerQX.PrintToLog(info);

}

  if(!cancel) {

 var dmrproject;

    if(mosaic) {

var dmrproject = BrainVoyagerQX.CreateProjectMosaicDMR(filetype, firstfile,

     nrOfVols, skipVols, createAMR, nrSlices,

     dwiprefix,byteswap,

     mosaicSizeX, mosaicSizeY, bytesperpixel, targetfolder,

 nrVolsInImg, sizeX, sizeY);

    } else {

  var dmrproject = BrainVoyagerQX.CreateProjectDMR(filetype, firstfile, nrOfVols,

   skipVols, createAMR, nrSlices, dwiprefix,

   byteswap, sizeX, sizeY, bytesperpixel, targetfolder);    

}

dmrproject.SaveAs(dwiprefix); // enter only the basename, ".dmr" is appended automatically.

}

}  

 

Dialogs of the function

dialog 1    

 

  

 

  

 

 

 

For more information about the number of bytes per pixel parameter, see Bytes per pixel.