def _run_interface(self, runtime): if not isdefined(self.inputs.out_file): fname = os.path.splitext(os.path.basename(self.inputs.in_file))[0] dname = os.getcwd() #os.path.dirname(self.inputs.nativeT1) self.inputs.out_file = dname + os.sep + fname + self._suffix try: os.remove(self.inputs.out_file) except OSError: pass class InfoOptions: def __init__(self, command, variable, attribute, type_): self.command = command self.variable = variable self.attribute = attribute self.type_ = type_ temp_out_file = os.getcwd() + os.sep + "temp.json" try: img = pyezminc.Image(self.inputs.in_file, metadata_only=True) hd = img.get_MINC_header() for key in hd.keys(): self._params[key] = {} for subkey in hd[key].keys(): self._params[key][subkey] = {} data_in = hd[key][subkey] var = str(key) attr = str(subkey) #Populate dictionary with some useful image parameters (e.g., world coordinate start values of dimensions) self._params[key][subkey] = data_in update_minchd_json(temp_out_file, data_in, var, attr) except RuntimeError: print("Warning: Could not read header file from", self.inputs.in_file) header = json.load(open(temp_out_file, "r+")) minc_input = True if not isdefined(self.inputs.json_header): print("Error: could not find json file", self.inputs.json_header) exit(1) json_header = json.load(open(self.inputs.json_header, "r+")) header.update(json_header) minc_input = False header = set_frame_duration(header, minc_input) header = set_isotope_halflife(header, self.inputs.halflife, 'halflife') fp = open(self.inputs.out_file, "w+") fp.seek(0) json.dump(header, fp, sort_keys=True, indent=4) fp.close() self._params = header return runtime
def _run_interface(self, runtime): if not isdefined(self.inputs.out_file): fname, ext = os.path.splitext(self.inputs.in_file) self.inputs.out_file = fname + self._suffix # if os.path.exists(self.inputs.out_file): # os.remove(self.inputs.out_file) try: os.remove(self.inputs.out_file) except OSError: pass class InfoOptions: def __init__(self, command, variable, attribute, type_): self.command = command self.variable = variable self.attribute = attribute self.type_ = type_ options = [ InfoOptions('-dimnames', 'time', 'dimnames', 'string'), InfoOptions('-varvalue time', 'time', 'frames-time', 'integer'), InfoOptions('-varvalue time-width', 'time', 'frames-length', 'integer') ] for opt in options: run_mincinfo = InfoCommand() run_mincinfo.inputs.in_file = self.inputs.in_file run_mincinfo.inputs.out_file = self.inputs.out_file run_mincinfo.inputs.opt_string = opt.command run_mincinfo.inputs.json_var = opt.variable run_mincinfo.inputs.json_attr = opt.attribute run_mincinfo.inputs.json_type = opt.type_ run_mincinfo.inputs.error = 'unknown' if self.inputs.verbose: print run_mincinfo.cmdline if self.inputs.run: run_mincinfo.run() img = minc.Image(self.inputs.in_file, metadata_only=True) hd = img.get_MINC_header() for key in hd.keys(): for subkey in hd[key].keys(): data_in = hd[key][subkey] var = str(key) attr = str(subkey) print key, subkey, var, attr update_minchd_json(self.inputs.out_file, data_in, var, attr) return runtime
def aggregate_outputs(self, runtime=None, needed_outputs=None): outputs = self._outputs() if runtime is None: try: out_info = load_json(self.inputs.out_file)[ self.inputs.json_attr][self.inputs.json_var] except IOError: return self.run().outputs else: out_info = [] for line in runtime.stdout.split('\n'): if line: values = line.split() if self.inputs.json_type == 'float': if len(values) > 1: #out_info.append([float(val) for val in values]) out_info.append([val for val in values]) else: #out_info.extend([float(val) for val in values]) out_info.extend([val for val in values]) elif self.inputs.json_type == 'integer': if len(values) > 1: #out_info.append([int(val) for val in values]) out_info.append([val for val in values]) else: #out_info.extend([int(val) for val in values]) out_info.extend([val for val in values]) else: if len(values) > 1: out_info.append([val for val in values]) else: out_info.extend([val for val in values]) if len(out_info) == 1: out_info = out_info[0] if os.path.exists(self.inputs.out_file): update_minchd_json(self.inputs.out_file, out_info, self.inputs.json_var, self.inputs.json_attr) else: save_json( self.inputs.out_file, dict(((self.inputs.json_var, dict(((self.inputs.json_attr, out_info), ))), ))) outputs.out_file = out_info return outputs
def _run_interface(self, runtime): if not isdefined(self.inputs.out_file): fname = os.path.splitext(os.path.basename(self.inputs.in_file))[0] dname = os.getcwd() #os.path.dirname(self.inputs.nativeT1) self.inputs.out_file = dname + os.sep + fname + self._suffix try: os.remove(self.inputs.out_file) except OSError: pass #pettot1_4d_header_fixed = pe.Node(interface=FixHeaderCommand(), name="pettot1_4d_header_fixed") #pettot1_4d_header_fixed.inputs.time_only=True #pettot1_4d_header_fixed.inputs.in_file = fixIrregular.inputs.out_file #pettot1_4d_header_fixed.inputs.header = self.inputs.header class InfoOptions: def __init__(self, command, variable, attribute, type_): self.command = command self.variable = variable self.attribute = attribute self.type_ = type_ #options = [ InfoOptions('-dimnames','time','dimnames','string'), # InfoOptions('-varvalue time','time','frames-time','integer'), # InfoOptions('-varvalue time-width','time','frames-length','integer') ] temp_out_file = os.getcwd() + os.sep + "temp.json" #for opt in options: # run_mincinfo=InfoCommand() # run_mincinfo.inputs.in_file = self.inputs.in_file # run_mincinfo.inputs.out_file = temp_out_file # run_mincinfo.inputs.opt_string = opt.command # run_mincinfo.inputs.json_var = opt.variable # run_mincinfo.inputs.json_attr = opt.attribute # run_mincinfo.inputs.json_type = opt.type_ # run_mincinfo.inputs.error = 'unknown' # print run_mincinfo.cmdline # if self.inputs.run: # run_mincinfo.run() img = pyezminc.Image(self.inputs.in_file, metadata_only=True) hd = img.get_MINC_header() for key in hd.keys(): self._params[key] = {} for subkey in hd[key].keys(): self._params[key][subkey] = {} data_in = hd[key][subkey] var = str(key) attr = str(subkey) #Populate dictionary with some useful image parameters (e.g., world coordinate start values of dimensions) self._params[key][subkey] = data_in update_minchd_json(temp_out_file, data_in, var, attr) header = json.load(open(temp_out_file, "r")) #fp.close() minc_input = True if not isdefined(self.inputs.json_header): print("Error: could not find json file", self.inputs.json_header) exit(1) print("\n\nMINC INPUT =", minc_input, self.inputs.json_header) json_header = json.load(open(self.inputs.json_header, "r+")) header.update(json_header) minc_input = False header = set_frame_duration(header, minc_input) header = set_isotope_halflife(header, self.inputs.halflife, 'halflife') fp = open(self.inputs.out_file, "w+") fp.seek(0) json.dump(header, fp, sort_keys=True, indent=4) fp.close() self._params = header return runtime