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)
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)
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)
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)