source: trunk/imports/G2img_CheMin.py @ 4353

Last change on this file since 4353 was 3136, checked in by vondreele, 8 years ago

make GSAS-II python 3.6 compliant & preserve python 2.7 use;changes:
do from future import division, print_function for all GSAS-II py sources
all menu items revised to be py 2.7/3.6 compliant
all wx.OPEN --> wx.FD_OPEN in file dialogs
all integer divides (typically for image pixel math) made explicit with ; ambiguous ones made floats as appropriate
all print "stuff" --> print (stuff)
all print >> pFile,'stuff' --> pFile.writeCIFtemplate('stuff')
all read file opens made explicit 'r' or 'rb'
all cPickle imports made for py2.7 or 3.6 as cPickle or _pickle; test for '2' platform.version_tuple[0] for py 2.7
define cPickleload to select load(fp) or load(fp,encoding='latin-1') for loading gpx files; provides cross compatibility between py 2.7/3.6 gpx files
make dict.keys() as explicit list(dict.keys()) as needed (NB: possible source of remaining py3.6 bugs)
make zip(a,b) as explicit list(zip(a,b)) as needed (NB: possible source of remaining py3.6 bugs)
select unichr/chr according test for '2' platform.version_tuple[0] for py 2.7 (G2pwdGUI * G2plot) for special characters
select wg.EVT_GRID_CELL_CHANGE (classic) or wg.EVT_GRID_CELL_CHANGED (phoenix) in grid Bind
maxint --> maxsize; used in random number stuff
raise Exception,"stuff" --> raise Exception("stuff")
wx 'classic' sizer.DeleteWindows?() or 'phoenix' sizer.Clear(True)
wx 'classic' SetToolTipString?(text) or 'phoenix' SetToolTip?(wx.ToolTip?(text)); define SetToolTipString?(self,text) to handle the choice in plots
status.SetFields? --> status.SetStatusText?
'classic' AddSimpleTool? or 'phoenix' self.AddTool? for plot toolbar; Bind different as well
define GetItemPydata? as it doesn't exist in wx 'phoenix'
allow python versions 2.7 & 3.6 to run GSAS-II
Bind override commented out - no logging capability (NB: remove all logging code?)
all import ContentsValidator? open filename & test if valid then close; filepointer removed from Reader
binary importers (mostly images) test for 'byte' type & convert as needed to satisfy py 3.6 str/byte rules

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Author Revision URL Id
File size: 1.8 KB
Line 
1# -*- coding: utf-8 -*-
2########### SVN repository information ###################
3# $Date: 2017-10-23 16:39:16 +0000 (Mon, 23 Oct 2017) $
4# $Author: toby $
5# $Revision: 3136 $
6# $URL: trunk/imports/G2img_CheMin.py $
7# $Id: G2img_CheMin.py 3136 2017-10-23 16:39:16Z toby $
8########### SVN repository information ###################
9'''
10*Module G2img_png: png image file*
11---------------------------------------
12
13Routine to read an image in .png (Portable Network Graphics) format.
14For now, the only known use of this is with converted Mars Rover (CheMin)
15tif files, so default parameters are for that.
16
17'''
18
19from __future__ import division, print_function
20import GSASIIobj as G2obj
21import GSASIIpath
22GSASIIpath.SetVersionNumber("$Revision: 3136 $")
23class png_ReaderClass(G2obj.ImportImage):
24    '''Reads standard PNG images; parameters are set to those of the
25    Mars Rover (CheMin) diffractometer.
26    '''
27    def __init__(self):
28        super(self.__class__,self).__init__( # fancy way to self-reference
29            extensionlist=('.png',),
30            strictExtension=True,
31            formatName = 'PNG image',
32            longFormatName = 'PNG image from CheMin'
33            )
34
35    def ContentsValidator(self, filename):
36        '''no test at this time
37        '''
38        return True
39       
40    def Reader(self,filename, ParentFrame=None, **unused):
41        '''Reads using standard scipy PNG reader
42        '''
43        import scipy.misc
44        self.Image = scipy.misc.imread(filename,flatten=True)
45        self.Npix = self.Image.size
46        if self.Npix == 0:
47            return False
48        if ParentFrame:
49            self.SciPy = True
50            self.Comments = ['no metadata']
51            pixy = list(self.Image.shape)
52            sizexy = [40.,40.]
53            self.Data = {'wavelength': 1.78892, 'pixelSize': sizexy, 'distance': 18.0,'size':pixy}
54            self.Data['center'] = [pixy[0]*sizexy[0]/1000.,pixy[1]*sizexy[1]/2000.]
55        self.LoadImage(ParentFrame,filename)
56        return True
Note: See TracBrowser for help on using the repository browser.