def datafield_reduce(datafield): return datafield_create, (gwyutils.data_field_data_as_array(datafield), datafield.get_xres(), datafield.get_yres(), datafield.get_si_unit_xy().get_string(gwy.SI_UNIT_FORMAT_PLAIN), datafield.get_si_unit_z().get_string(gwy.SI_UNIT_FORMAT_PLAIN), )
def spm_pixel_size(self): """Returns the Image Size of the spm file in pixels.""" self.key = gwy.gwy_app_get_data_key_for_id(0) self.name = gwy.gwy_name_from_key(self.key) self.data_tmp = gwyutils.data_field_data_as_array( self.container[self.name]) return np.shape(self.data_tmp)
def convert_np(self, channel_id): """Converts a Gwyddion container to a Numpy array. Args: channel_id (int): ID of channel which will be converted. Returns: np_array (array): Numpy array of container channel. """ # Makes a data field (channel) current/active in the data browser. gwy.gwy_app_data_browser_select_data_field(self.container, channel_id) self.key = gwy.gwy_app_get_data_key_for_id(channel_id) self.name = gwy.gwy_name_from_key(self.key) return gwyutils.data_field_data_as_array(self.container[self.name])
def convertAFM(filenamex, saveImg = True): filename = os.path.abspath(filenamex) # print 'Loading ', filename for i in range(100): c = gwy.gwy_file_load(filename, gwy.RUN_NONINTERACTIVE) if c != None: break time.sleep(0.1) if c == None: return None, None gwy.gwy_app_data_browser_add(c) for key in c.keys_by_name(): if re.match(r'^/0/data$', key): field = c[key] xres = field.get_xres() yres = field.get_yres() xreal = (field.get_xreal()*1e6)/2.0 yreal = (field.get_yreal()*1e6)/2.0 weights = gwy.DataLine(xres, 1.0, True) weights.part_fill(0, xres//3, 1.0) filtered = gwy.DataField.new_alike(field, False) field.fft_filter_1d(filtered, weights, gwy.ORIENTATION_HORIZONTAL, gwy.INTERPOLATION_ROUND) degrees = [1,1] field.subtract_polynom(degrees[0],degrees[1],field.fit_polynom(degrees[0],degrees[1])) field.data_changed() data = gwyutils.data_field_data_as_array(field) data = np.array(data)[::,::-1] imfilename = False if saveImg: filename = os.path.abspath('D:/lithography/') imfilename = str(filename)+"/current.png" print (imfilename) res = saveAFMimg(data, imfilename ) writeImageMacro( imfilename , [-xreal, -yreal, xreal, yreal]) info = {'width':xreal*2, 'height':yreal*2, 'imname': imfilename} gwy.gwy_app_data_browser_remove(c) return data, info
basename = filename[0:-4] print filename.split('/')[-1][:-4] meta_field = '/' + str(data_field_id) + '/meta' title = '/' + str(data_field_id) + '/data/title' channel = c[title] print channel meta = c[meta_field] print meta.keys_by_name() bias = meta['Bias'] bias, bu = bias.split(' ') current = meta['Z controller Setpoint'] current, cu = current.split(' ') current = float(current) * 1e12 cu = 'pA' current_bias = 'pm' xd = d.get_xreal() * 1e9 yd = d.get_yreal() * 1e9 xyu = 'nm' print xd print bias #gwy.gwy_file_save(c, basename+'_'+str(xd)+xyu+'_'+str(yd)+xyu+'_'+bias+bu+'_'+str(current)+cu+'.png', gwy.RUN_NONINTERACTIVE) # prepare to save w = d.get_xres() h = d.get_yres() io.use_plugin('freeimage') data_field = '/' + str(data_field_id) + '/data' array = gwyutils.data_field_data_as_array(d) print array.shape
def exportasnparray(datafield, mask): # Export the current datafield (channel) and mask (grains) as numpy arrays npdata = gwyutils.data_field_data_as_array(datafield) npmask = gwyutils.data_field_data_as_array(mask) return npdata, npmask