Example #1
0
def multicoil_convert(self):
    """GE specific multicoil converesion. requires partial volume and missing slices check."""
    log.debug('multicoil recon')
    mr.partial_vol_check(self)

    stacks = []
    group_id = 0
    for group in self._dcm_groups:
        group_id += 1
        log.debug('multicoil - %2s, %s dicom' %
                  (str(group_id), str(len(group))))
        num_positions = len(set([d.SliceLocation for d in group]))
        if num_positions != self.num_slices:
            raise DicomError('coil %s has %s unique positions; expected %s' %
                             (group_id, num_positions, self.num_slices))
        stack = dcmstack.DicomStack()
        for dcm in group:
            meta = MetaExtractor(dcm)
            stack.add_dcm(dcm, meta)
        nii_wrp = stack.to_nifti_wrapper()
        stacks.append(nii_wrp)
    try:
        nii_wrp = dcmstack.dcmmeta.NiftiWrapper.from_sequence(stacks)
    except dcmstack.InvalidStackError as e:
        raise DicomError(
            'cannot reconstruct %s: %s' %
            (self.filepath, e))  # XXX FAIL! unexpected for recon to fail
        # raise NIMSDicomError('cannot reconstruct %s: %s' % (self.filepath, e), log_level=logging.ERROR)
    del self._dcm_groups, self._dcm_list, stacks, stack, dcm
    nii = nii_wrp.nii_img
    self.data = {'': nii.get_data()}
    self.qto_xyz = nii.get_affine()
    del nii_wrp, nii

    mr.post_convert(self)
Example #2
0
File: ge.py Project: garikoitz/data
def multicoil_convert(self):
    """GE specific multicoil converesion. requires partial volume and missing slices check."""
    log.debug('multicoil recon')
    mr.partial_vol_check(self)

    stacks = []
    group_id = 0
    for group in self._dcm_groups:
        group_id += 1
        log.debug('multicoil - %2s, %s dicom' % (str(group_id), str(len(group))))
        num_positions = len(set([d.SliceLocation for d in group]))
        if num_positions != self.num_slices:
            raise DicomError('coil %s has %s unique positions; expected %s' % (group_id, num_positions, self.num_slices))
        stack = dcmstack.DicomStack()
        for dcm in group:
            meta = MetaExtractor(dcm)
            stack.add_dcm(dcm, meta)
        nii_wrp = stack.to_nifti_wrapper()
        stacks.append(nii_wrp)
    try:
        nii_wrp = dcmstack.dcmmeta.NiftiWrapper.from_sequence(stacks)
    except dcmstack.InvalidStackError as e:
        raise DicomError('cannot reconstruct %s: %s' % (self.filepath, e))      # XXX FAIL! unexpected for recon to fail
        # raise NIMSDicomError('cannot reconstruct %s: %s' % (self.filepath, e), log_level=logging.ERROR)
    del self._dcm_groups, self._dcm_list, stacks, stack, dcm
    nii = nii_wrp.nii_img
    self.data = {'': nii.get_data()}
    self.qto_xyz = nii.get_affine()
    del nii_wrp, nii

    mr.post_convert(self)
Example #3
0
def fastcard_convert(self):
    """GE fast card conversion."""
    log.debug('fast card')
    stacks = []
    group_id = 0

    def _split_list(l, size):
        return [l[i:i + size] for i in range(0, len(l), size)]

    dcm_groups = _split_list(self._dcm_list, self.total_num_slices / 5)

    for group in dcm_groups:
        group_id += 1
        num_positions = len(set([d.SliceLocation for d in group]))
        if num_positions != self.num_slices:
            raise DicomError('volume %s has %s unique positions; expected %s' %
                             (group_id, num_positions, self.num_slices))
        stack = dcmstack.DicomStack()
        for d in group:
            meta = MetaExtractor(d)
            stack.add_dcm(d, meta)
        nii_wrp = stack.to_nifti_wrapper()
        stacks.append(nii_wrp)
    try:
        nii_wrp = dcmstack.dcmmeta.NiftiWrapper.from_sequence(stacks)
    except dcmstack.InvalidStackError as e:
        raise DicomError('cannot reconstruct %s: %s' % (self.filepath, str(e)))
    nii = nii_wrp.nii_img
    self.data = {'': nii.get_data()}
    self.qto_xyz = nii.get_affine()
    mr.post_convert(self)
Example #4
0
File: ge.py Project: garikoitz/data
def fastcard_convert(self):
    """GE fast card conversion."""
    log.debug('fast card')
    stacks = []
    group_id = 0
    def _split_list(l, size):
        return [l[i:i+size] for i in range(0, len(l), size)]
    dcm_groups = _split_list(self._dcm_list, self.total_num_slices / 5)

    for group in dcm_groups:
        group_id += 1
        num_positions = len(set([d.SliceLocation for d in group]))
        if num_positions != self.num_slices:
            raise DicomError('volume %s has %s unique positions; expected %s' % (group_id, num_positions, self.num_slices))
        stack = dcmstack.DicomStack()
        for d in group:
            meta = MetaExtractor(d)
            stack.add_dcm(d, meta)
        nii_wrp = stack.to_nifti_wrapper()
        stacks.append(nii_wrp)
    try:
        nii_wrp = dcmstack.dcmmeta.NiftiWrapper.from_sequence(stacks)
    except dcmstack.InvalidStackError as e:
        raise DicomError('cannot reconstruct %s: %s' % (self.filepath, str(e)))
    nii = nii_wrp.nii_img
    self.data = {'': nii.get_data()}
    self.qto_xyz = nii.get_affine()
    mr.post_convert(self)