# This software and supporting documentation are distributed by
# Institut Federatif de Recherche 49
# CEA/NeuroSpin, Batiment 145,
# 91191 Gif-sur-Yvette cedex
# France
#
# This software is governed by the CeCILL license version 2 under
# French law and abiding by the rules of distribution of free software.
# You can use, modify and/or redistribute the software under the
# terms of the CeCILL license version 2 as circulated by CEA, CNRS
# and INRIA at the following URL "http://www.cecill.info".
#
# As a counterpart to the access to the source code and rights to copy,
# modify and redistribute granted by the license, users are provided only
# with a limited warranty and the software's author, the holder of the
# economic rights, and the successive licensors have only limited
# liability.
#
# In this respect, the user's attention is drawn to the risks associated
# with loading, using, modifying and/or developing or reproducing the
# software by the user in light of its specific status of free software,
# that may mean that it is complicated to manipulate, and that also
# therefore means that it is reserved for developers and experienced
# professionals having in-depth computer knowledge. Users are therefore
# encouraged to load and test the software's suitability as regards their
# requirements in conditions enabling the security of their systems and/or
# data to be ensured and, more generally, to use and operate it in the
# same conditions as regards security.
#
# The fact that you are presently reading this means that you have had
# knowledge of the CeCILL license version 2 and that you accept its terms.
from brainvisa.processes import *
import registration
name ='Diffusion tensor'
userLevel = 1
fixedDT = 1
signature = Signature(
't2_diffusion', ReadDiskItem( 'T2 Diffusion MR',
'Aims readable volume formats' ),
'dw_diffusion', ReadDiskItem( 'DW Diffusion MR',
'Aims readable volume formats' ),
'mask', ReadDiskItem( 'Diffusion Mask', 'Aims readable volume formats' ),
'diffusion_model', WriteDiskItem( 'DTI Model', 'Bucket' ),
'error_mask', WriteDiskItem( 'Error Mask', 'Aims writable volume formats' ),
)
def initialization( self ):
self.linkParameters( 'dw_diffusion', 't2_diffusion' )
self.linkParameters( 'mask', 't2_diffusion' )
self.linkParameters( 'diffusion_model', 't2_diffusion' )
self.linkParameters( 'error_mask', 'diffusion_model')
self.setOptional( 'mask', 'error_mask' )
def execution( self, context ):
command = [
'comistFixedDTModel',
'-verbose',
'-t2', self.t2_diffusion,
'-dw', self.dw_diffusion,
'-o', self.diffusion_model,
]
if self.mask is not None:
command += [ '-m', self.mask ]
if self.error_mask is not None:
command += [ '-e', self.error_mask ]
context.system( *command )
volume_dimension = self.dw_diffusion.get( 'volume_dimension' )
if volume_dimension is not None:
self.diffusion_model.setMinf( 'volume_dimension', volume_dimension )
else:
raise AttributeError(
_t_('No volume_dimension attribute in %s') %
( self.dw_diffusion.fullPath(),) )
# Set referentials of new objects
trManager = registration.getTransformationManager()
trManager.copyReferential( self.t2_diffusion, self.diffusion_model )
trManager.copyReferential( self.t2_diffusion, self.error_mask )