Exemple #1
0
    def _run_interface(self, runtime):
        inputnode = niu.IdentityInterface(
            fields=['intensity_image', 'mask_image'])
        inputnode.iterables = ('intensity_image', self.inputs.intensity_images)

        intensity_nii_list = []
        for f in self.inputs.intensity_images:
            mult = Math()
            mult.inputs.input_files = [f, self.inputs.mask_image]
            mult.inputs.output_file = os.getcwd() + os.sep + os.path.basename(
                os.path.splitext(f)[0]) + "_brain.mnc"
            mult.inputs.calc_mul = True
            mult.run()

            intensity_mnc2nii_sh = mnc2nii_shCommand()
            intensity_mnc2nii_sh.inputs.in_file = mult.inputs.output_file
            intensity_mnc2nii_sh.run()
            intensity_nii_list += [intensity_mnc2nii_sh.inputs.out_file]

            mask_mnc2nii_sh = mnc2nii_shCommand()
            mask_mnc2nii_sh.inputs.truncate_path = True
            mask_mnc2nii_sh.inputs.in_file = self.inputs.mask_image
            mask_mnc2nii_sh.run()

        seg = Atropos()
        seg.inputs.dimension = self.inputs.dimension
        seg.inputs.intensity_images = intensity_nii_list
        seg.inputs.mask_image = mask_mnc2nii_sh.inputs.out_file
        seg.inputs.initialization = self.inputs.initialization
        seg.inputs.prior_probability_images = self.inputs.prior_probability_images
        seg.inputs.number_of_tissue_classes = self.inputs.number_of_tissue_classes
        seg.inputs.prior_weighting = self.inputs.prior_weighting
        seg.inputs.prior_probability_threshold = self.inputs.prior_probability_threshold
        seg.inputs.likelihood_model = self.inputs.likelihood_model
        seg.inputs.mrf_smoothing_factor = self.inputs.mrf_smoothing_factor
        seg.inputs.mrf_radius = self.inputs.mrf_radius
        seg.inputs.icm_use_synchronous_update = self.inputs.icm_use_synchronous_update
        seg.inputs.maximum_number_of_icm_terations = self.inputs.maximum_number_of_icm_terations
        seg.inputs.convergence_threshold = self.inputs.convergence_threshold
        seg.inputs.posterior_formulation = self.inputs.posterior_formulation
        seg.inputs.use_random_seed = self.inputs.use_random_seed
        seg.inputs.use_mixture_model_proportions = self.inputs.use_mixture_model_proportions
        seg.inputs.out_classified_image_name = self.inputs.out_classified_image_name
        seg.inputs.save_posteriors = self.inputs.save_posteriors
        seg.inputs.output_posteriors_name_template = self.inputs.output_posteriors_name_template
        print(seg.cmdline)
        seg.run()

        seg.outputs = seg._list_outputs()  #seg._outputs()
        classified_nii2mnc_sh = nii2mnc2Command()
        classified_nii2mnc_sh.inputs.in_file = seg.outputs["classified_image"]
        classified_nii2mnc_sh.inputs.truncate_path = True
        classified_nii2mnc_sh.run()

        self.inputs.classified_image = classified_nii2mnc_sh.inputs.out_file
        return (runtime)
Exemple #2
0
    def _run_interface(self, runtime):

        mnc2nii_sh = pe.Node(interface=mnc2nii_shCommand(), name="mnc2nii_sh")
        nii2mnc_sh = pe.Node(interface=nii2mnc_shCommand(), name="nii2mnc_sh")
        reg = pe.Node(interface=Registration(), name="registration")

        mnc2nii_sh.inputs.in_file = self.inputs.moving_image
        mnc2nii_sh.run()

        mnc2nii_sh_nodes = []
        inputs = [
            "fixed_image", "fixed_image_mask", "fixed_image_mask",
            "fixed_image_mask", "moving_image", "moving_image_mask",
            "moving_image_masks"
        ]
        self_inputs = [
            self.inputs.fixed_image, self.inputs.fixed_image_mask,
            self.inputs.fixed_image_mask, self.inputs.fixed_image_mask,
            self.inputs.moving_image, self.inputs.moving_image_mask,
            self.inputs.moving_image_masks
        ]
        reg_inputs = [
            reg.inputs.fixed_image, reg.inputs.fixed_image_mask,
            reg.inputs.fixed_image_mask, reg.inputs.fixed_image_mask,
            reg.inputs.moving_image, reg.inputs.moving_image_mask,
            reg.inputs.moving_image_masks
        ]
        for s, r, i in zip(self_inputs, reg_inputs, inputs):
            if isdefined(s):
                mnc2nii_sh = pe.Node(interface=mnc2nii_shCommand(),
                                     name="mnc2nii_sh_" + i,
                                     in_file=self.inputs.fixed_image)
                mnc2nii_sh.run()
                r = mnc2nii_sh.out_file

        if isdefined(self.inputs.dimension):
            reg.inputs.dimension = self.inputs.dimension
        if isdefined(self.inputs.save_state):
            reg.inputs.save_state = self.inputs.save_state
        if isdefined(self.inputs.restore_state):
            reg.inputs.restore_state = self.inputs.restore_state
        if isdefined(self.inputs.initial_moving_transform):
            reg.inputs.initial_moving_tr = self.inputs.initial_moving_tr
        if isdefined(self.inputs.invert_initial_moving_transform):
            reg.inputs.invert_initial_moving_tr = self.inputs.invert_initial_moving_tr
        if isdefined(self.inputs.initial_moving_transform_com):
            reg.inputs.initial_moving_transform_com = self.inputs.initial_moving_transform_com
        if isdefined(self.inputs.metric_item_trait):
            reg.inputs.metric_item_trait = self.inputs.metric_item_trait
        if isdefined(self.inputs.metric_stage_trait):
            reg.inputs.metric_stage_trait = self.inputs.metric_stage_trait
        if isdefined(self.inputs.metric):
            reg.inputs.metric = self.inputs.metric
        if isdefined(self.inputs.metric_weight_item_trait):
            reg.inputs.metric_weight_item_trait = self.inputs.metric_weight_item_trait
        if isdefined(self.inputs.metric_weight_stage_trait):
            reg.inputs.metric_weight_stage_trait = self.inputs.metric_weight_stage_trait
        if isdefined(self.inputs.metric_weight):
            reg.inputs.metric_weight = self.inputs.metric_weight
        if isdefined(self.inputs.radius_bins_item_trait):
            reg.inputs.radius_bins_item_trait = self.inputs.radius_bins_item_trait
        if isdefined(self.inputs.radius_bins_stage_trait):
            reg.inputs.radius_bins_stage_trait = self.inputs.radius_bins_stage_trait
        if isdefined(self.inputs.radius_or_number_of_bins):
            reg.inputs.radius_or_number_of_bins = self.inputs.radius_or_number_of_bins
        if isdefined(self.inputs.sampling_strategy_item_trait):
            reg.inputs.sampling_strategy_item_trait = self.inputs.sampling_strategy_item_trait
        if isdefined(self.inputs.sampling_strategy_stage_trait):
            reg.inputs.sampling_strategy_stage_trait = self.inputs.sampling_strategy_stage_trait
        if isdefined(self.inputs.sampling_strategy):
            reg.inputs.sampling_strategy = self.inputs.sampling_strategy
        if isdefined(self.inputs.sampling_percentage_item_trait):
            reg.inputs.sampling_percentage_item_trait = self.inputs.sampling_percentage_item_trait
        if isdefined(self.inputs.sampling_percentage_stage_trait):
            reg.inputs.sampling_percentage_stage_trait = self.inputs.sampling_percentage_stage_trait
        if isdefined(self.inputs.sampling_percentage):
            reg.inputs.sampling_percentage = self.inputs.sampling_percentage
        if isdefined(self.inputs.use_estimate_learning_rate_once):
            reg.inputs.use_estimate_learning_rate_once = self.inputs.use_estimate_learning_rate_once
        if isdefined(self.inputs.use_histogram_matching):
            reg.inputs.use_histogram_matching = self.inputs.use_histogram_matching
        if isdefined(self.inputs.interpolation):
            reg.inputs.interpolation = self.inputs.interpolation
        if isdefined(self.inputs.interpolation_parameters):
            reg.inputs.interpolation_parameters = self.inputs.interpolation_parameters
        if isdefined(self.inputs.write_composite_transform):
            reg.inputs.write_composite_transform = self.inputs.write_composite_transform
        if isdefined(self.inputs.collapse_output_transforms):
            reg.inputs.collapse_output_transforms = self.inputs.collapse_output_transforms
        if isdefined(self.inputs.initialize_transforms_per_stage):
            reg.inputs.initialize_transforms_per_stage = self.inputs.initialize_transforms_per_stage
        if isdefined(self.inputs.float): reg.inputs.float = self.inputs.float
        if isdefined(self.inputs.transform_parameters):
            reg.inputs.transform_parameters = self.inputs.transform_parameters
        if isdefined(self.inputs.restrict_deformation):
            reg.inputs.restrict_deformation = self.inputs.restrict_deformation
        if isdefined(self.inputs.number_of_iterations):
            reg.inputs.number_of_iterations = self.inputs.number_of_iterations
        if isdefined(self.inputs.smoothing_sigmas):
            reg.inputs.smoothing_sigmas = self.inputs.smoothing_sigmas
        if isdefined(self.inputs.sigma_units):
            reg.inputs.sigma_units = self.inputs.sigma_units
        if isdefined(self.inputs.shrink_factors):
            reg.inputs.shrink_factors = self.inputs.shrink_factors
        if isdefined(self.inputs.convergence_threshold):
            reg.inputs.convergence_threshold = self.inputs.convergence_threshold
        if isdefined(self.inputs.convergence_window_size):
            reg.inputs.convergence_window_size = self.inputs.convergence_window_size
        if isdefined(self.inputs.output_transform_prefix):
            reg.inputs.output_transform_prefix = self.inputs.output_transform_prefix
        if isdefined(self.inputs.output_warped_image):
            reg.inputs.output_warped_image = self.inputs.output_warped_image
        if isdefined(self.inputs.output_inverse_warped_image):
            reg.inputs.output_inverse_warped_image = self.inputs.output_inverse_warped_image
        if isdefined(self.inputs.winsorize_upper_quantile):
            reg.inputs.winsorize_upper_quantile = self.inputs.winsorize_upper_quantile
        if isdefined(self.inputs.winsorize_lower_quantile):
            reg.inputs.winsorize_lower_quantile = self.inputs.winsorize_lower_quantile
        if isdefined(self.inputs.verbose):
            reg.inputs.verbose = self.inputs.verbose

        reg.run()

        nii2mnc_sh.inputs.in_file = reg.inputs.warped_image
        nii2mnc_sh.run()
        self.outputs.warped_image = nii2mnc_sh.inputs.warped_image
        return (runtime)