Source code for paws.core.operations.IO.IMAGE.FabIOWrite

from collections import OrderedDict
import warnings

from fabio import edfimage
from fabio import tifimage

from ... import Operation as opmod 
from ...Operation import Operation
import os

inputs=OrderedDict(
    image_data=None,
    header=None,
    dir_path=None,
    filename=None,
    filetag='',
    ext='.tif',
    overwrite=False)
outputs = OrderedDict(file_path=None)

[docs]class FabIOWrite(Operation): """ Use FabIO to write out an image, given image data, directory path, filename, file tag, extension, an image header (dict), and a flag for whether or not to overwrite. Outputs the full file path where the image was written, which should be dir_path+filename+filetag+ext. """ def __init__(self): super(FabIOWrite,self).__init__(inputs,outputs) self.input_doc['image_data'] = 'image/array data to be saved' self.input_doc['header'] = 'dict-like image metadata header' self.input_doc['dir_path'] = 'parent directory path' self.input_doc['filename'] = 'base filename to be saved as' self.input_doc['filetag'] = 'string tag to be appended to base filename' self.input_doc['ext'] = 'file extension (overwrites base filename extension)' self.input_doc['overwrite'] = 'allow overwrite of already existing files' self.output_doc['file_path'] = 'path to the file that will be written: dir_path+filename+filetag+ext' self.input_datatype['header'] = 'dict' self.input_datatype['dir_path'] = 'str' self.input_datatype['filename'] = 'str' self.input_datatype['filetag'] = 'str' self.input_datatype['ext'] = 'str' self.input_datatype['overwrite'] = 'bool'
[docs] def run(self): """ Call on fabIO to extract image data """ img = self.inputs['image_data'] p = self.inputs['dir_path'] fnm = self.inputs['filename'] ext = self.inputs['ext'].lower() tg = self.inputs['filetag'] hdr = self.inputs['header'] outfile = fnm + tg + ext filepath = os.path.join(self.inputs['dir_path'],outfile) self.outputs['file_path'] = filepath if os.path.isfile(filepath) and not self.inputs['overwrite']: import pdb; pdb.set_trace() warnings.warn('Skipping output for {}: '\ 'File exists and overwrite is disabled'.format(filepath)) cls = None if ext == '.edf': cls = edfimage.edfimage elif ext == '.tif': cls = tifimage.tifimage if not cls: raise ValueError('Extension not supported.') cls(img,header=hdr).write(filepath)