Exemple #1
0
 def gen_eddy_outputname(self):
     fn = self.txt_output_eddy.get()
     if fn == '' or '_rigid.nii.gz' in fn:
         fn = filename_wo_ext(self.txt_dwi.get()) + '_eddy_unwarped.nii.gz'
     else:
         fn = filename_wo_ext(self.txt_dwi.get()) + '_rigid.nii.gz'
     self.reset_entry(self.txt_output_eddy, fn)
Exemple #2
0
 def get_dwi_filenames(self):
     '''
     :return: [('from', 'to'), ('from', 'to')]
     '''
     filename_from = self.text_from.get()
     filename_to = self.text_to.get()
     if self.is_dw.get():
         rtn = [ [filename_from, filename_to] ]
         filename_b_from = filename_wo_ext(filename_from)
         filename_b_to = filename_wo_ext(filename_to)
         rtn.append( [filename_b_from+'.bval', filename_b_to+'.bval'] )
         rtn.append( [filename_b_from+'.bvec', filename_b_to+'.bvec'] )
         return rtn
     return []
Exemple #3
0
    def run_topup(self):
        dependency = [
            self.txt_b0,
            self.txt_b0mask,
        ]
        if not self.check_dependency(dependency):
            return

        working = self.txt_working.get()
        fn_b0 = os.path.join(working, self.txt_b0.get())
        fn_b0mask = os.path.join(working, self.txt_b0mask.get())
        fn_b0masked = filename_wo_ext(fn_b0) + '_masked.nii.gz'
        fn_out = os.path.join(working, self.prefix() + 'topup')
        run_command('fslmaths %s -mas %s %s' % (fn_b0, fn_b0mask, fn_b0masked))

        topup_command = [self.txt_topup_app.get()]
        if self.txt_topup_config.get() != '':
            topup_command.append('--config=%s' % self.txt_topup_config.get())
        topup_command.append('--datain=%s' %
                             (os.path.join(working,
                                           self.prefix() + 'acqparams.txt')))
        topup_command.append('--imain=%s' % fn_b0masked)
        topup_command.append('--out=%s' % fn_out)
        topup_command.append('--iout=%s_warped' % fn_out)
        topup_command.append('--fout=%s_field' % fn_out)
        topup_command.append('--logout=%s_log' % fn_out)
        topup_command.append('1> %s_topup_log.out' % self.txt_subject.get())

        cmd = ' '.join(topup_command)
        append_text(self.log, cmd, 'run_topup')
        run_command(cmd)
        print 'Done: TOPUP'

        tkMessageBox.showinfo(self.title, 'Done: TOPUP')
Exemple #4
0
def set_filenames(filename):
    filename_woext = filename_wo_ext(filename)
    filename_wodir = os.path.basename(filename_woext)

    filename_fltd = '%s_mask_base_filtered' % filename_wodir
    filename_mask = '%s_mask' % filename_wodir

    return filename, filename_fltd, filename_mask
    def __init__(self,
                 parent,
                 filename=None,
                 filename_roi=None,
                 filename_csv=None,
                 dirname=None,
                 obj_return_value=None):
        Frame.__init__(self, parent)
        self.parent = parent
        self.obj_return_value = obj_return_value

        # check filenames
        if filename is None or not os.path.isfile(filename):
            if dirname is not None:
                filename = tkFileDialog.askopenfilename(initialdir=dirname)
            else:
                filename = tkFileDialog.askopenfilename()

        if not os.path.isfile(filename):
            parent.destroy()
            return

        if filename_roi is None or not os.path.isfile(filename_roi):
            if dirname is not None:
                filename_roi = tkFileDialog.askopenfilename(initialdir=dirname)
            else:
                filename_roi = tkFileDialog.askopenfilename()

        if not os.path.isfile(filename_roi):
            parent.destroy()
            return

        if dirname is None:
            self.dirname = os.path.dirname(filename)
        else:
            self.dirname = dirname

        if filename_csv is None:
            filename_csv = os.path.join(
                self.dirname,
                filename_wo_ext(os.path.basename(filename)) + '.csv')

        self.filename = filename
        self.filename_roi = filename_roi
        self.filename_csv = filename_csv

        self.dat = nib.load(filename).get_data()
        self.shape = self.dat.shape
        print self.shape
        dz = self.shape[2]
        df = self.shape[-1]

        self.badenc = np.zeros((dz, df), dtype=np.int16)
        self.prev = np.zeros((dz, df), dtype=np.int16)
        self.z = 0

        self.initUI()
        self.run()
Exemple #6
0
 def update_parameter(self):
     if self.parameter_values.has_key('subject'):
         self.reset_entry(self.txt_subject,
                          self.parameter_values['subject'])
     if self.parameter_values.has_key('dwi'):
         self.reset_entry(self.txt_dwi, self.parameter_values['dwi'])
         self.reset_entry(
             self.txt_bval,
             filename_wo_ext(self.parameter_values['dwi']) + '.bval')
         self.reset_entry(
             self.txt_bvec,
             filename_wo_ext(self.parameter_values['dwi']) + '.bvec')
     if self.parameter_values.has_key('b0'):
         self.reset_entry(self.txt_b0, self.parameter_values['b0'])
     if self.parameter_values.has_key('working'):
         self.reset_entry(self.txt_working,
                          self.parameter_values['working'],
                          force=True)
    def __init__(self, parent, filename=None, filename_csv=None, dirname=None, obj_return_value=None):
        Frame.__init__(self, parent)
        self.parent = parent
        self.obj_return_value = obj_return_value

        # check filenames
        if filename is None or not os.path.isfile(filename):
            if dirname is not None:
                filename = tkFileDialog.askopenfilename(initialdir=dirname)
            else:
                filename = tkFileDialog.askopenfilename()

        if not os.path.isfile(filename):
            parent.destroy()
            return

        if dirname is None:
            self.dirname = os.path.dirname(filename)
        else:
            self.dirname = dirname

        if filename_csv is None:
            filename_csv = os.path.join(self.dirname, filename_wo_ext(os.path.basename(filename)) + '.csv')

        self.filename = filename
        self.filename_csv = filename_csv

        n_slices = 0
        n_frames = 0

        with open(filename) as f:
            line = f.readline()
            while True:
                line = f.readline()
                if not line:
                    break
                slice, frame = [int(tmp) for tmp in line.strip().split(',')[:2]]
                if n_slices < slice:
                    n_slices = slice
                if n_frames < frame:
                    n_frames = frame

        n_slices += 1
        n_frames += 1

        self.shape = (n_slices, n_frames)

        #self.distance_x = np.zeros( self.shape, dtype=float )
        #self.distance_y = np.zeros( self.shape, dtype=float )
        #self.distance = np.zeros( self.shape, dtype=float )
        self.values = np.zeros( (n_slices, n_frames, 3), dtype=float )
        self.badenc = np.zeros( self.shape, dtype=np.int16 )
        self.prev = np.zeros( self.shape, dtype=np.int16 )
        self.z = 0

        self.initUI()
        self.run()
Exemple #8
0
 def set_appa(self):
     filename_from = self.text_from.get()
     basename_from = os.path.basename(filename_from)
     basename_b_from = filename_wo_ext(basename_from)
     if 'pa' in basename_b_from.lower():
         self.direction.set('PA')
     elif 'ap' in basename_b_from.lower():
         self.direction.set('AP')
     else:
         pass
Exemple #9
0
    def run_md_mask(self):
        if not os.path.isfile(
                os.path.join(self.txt_working.get(), self.txt_dwi_dti.get())):
            sys.stderr.write('File not exist: %s\n' % self.txt_dwi_dti.get())
            return
        working = self.txt_working.get()

        if os.path.isfile(os.path.join(working, self.txt_dti_value.get())):
            fn_md = filename_wo_ext(self.txt_dti_value.get()) + '_MD.nii.gz'
        else:
            fn_md = filename_wo_ext(self.txt_dwi_dti.get()) + '_dti_MD.nii.gz'

        fn_mask = create_md_mask(os.path.join(working, fn_md),
                                 fn_out=None,
                                 thr_min=0.1,
                                 thr_max=1.1)
        print 'Done: Making MD mask'

        self.reset_entry(self.txt_md_mask, os.path.basename(fn_mask))
Exemple #10
0
 def get_b0_filename(self):
     '''
     :return: [('from', 'to')]
     '''
     filename_from = self.text_from.get()
     filename_to = self.text_to.get()
     ext = extname(filename_to)
     if self.is_b0.get():
         if self.is_dw.get():
             filename_to = '%s_B0%s' % (filename_wo_ext(filename_to), ext)
         return [ [filename_from, filename_to] ]
     return []
Exemple #11
0
 def add_one(self, text=''):
     a_dwi = self.A_DWI(self, self.frame, text=text, row=self.len, column=0)
     fn_bval = filename_wo_ext(text) + '.bval'
     if os.path.isfile(fn_bval):
         a_dwi.is_b0.set(False)
         a_dwi.is_dw.set(True)
     else:
         a_dwi.is_b0.set(True)
         a_dwi.is_dw.set(False)
     a_dwi.set_appa()
     a_dwi.set_filename_to()
     self.len += 1
     self.lst_dwi.append(a_dwi)
Exemple #12
0
    def run_dti_outlier(self):
        import outlier_4dfp_gui
        root = Tk()
        working = self.txt_working.get()

        filename = os.path.join(
            working,
            filename_wo_ext(self.txt_dwi_dti.get()) + '_res.nii.gz')
        filename_roi = os.path.join(working, self.txt_md_mask.get())
        filename_csv = os.path.join(working, self.txt_dti_outlier.get())

        if filename_csv == '':
            filename_csv = filename_wo_ext(filename) + '.csv'

        print filename, filename_roi, filename_csv

        app = outlier_4dfp_gui.Outlier4dfp(
            root,
            filename=filename,
            filename_roi=filename_roi,
            filename_csv=filename_csv,
            dirname=working,
            obj_return_value=self.txt_dti_outlier)
        root.mainloop()
Exemple #13
0
 def gen_dti_value_outputname(self):
     fn = filename_wo_ext(self.txt_dti_value.get()) + '.csv'
     self.reset_entry(self.txt_output_dti_value, fn)
Exemple #14
0
 def gen_dti_name(self):
     self.reset_entry(self.txt_dti,
                      filename_wo_ext(self.txt_dwi_dti.get()) + '_dti')
Exemple #15
0
 def gen_reg_outputname(self):
     fn = filename_wo_ext(self.txt_dwi_eddy.get()) + '_xenc.nii.gz'
     self.reset_entry(self.txt_output_reg, fn)