Changeset 23691


Ignore:
Timestamp:
02/05/19 04:57:23 (6 years ago)
Author:
bdef
Message:

CHG. closer towards py3

Location:
issm/trunk-jpl/src/py3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/py3/classes/plotoptions.py

    r23670 r23691  
    4242                #go through args and build list (like pairoptions)
    4343                rawoptions=pairoptions.pairoptions(*arg)
    44                 numoptions=len(arg)/2
     44                numoptions=int(len(arg)/2)
    4545                rawlist=[] # cannot be a dict since they do not support duplicate keys
    4646
  • issm/trunk-jpl/src/py3/plot/plotmodel.py

    r23670 r23691  
    5252        #Go through plots
    5353        if numberofplots:
    54                 #if plt.fignum_exists(figurenumber): 
     54                #if plt.fignum_exists(figurenumber):
    5555                #       plt.cla()
    5656
     
    7272                # options needed to define plot grid
    7373                plotnum=options.numberofplots
     74                if plotnum==1:
     75                        plotnum=None
    7476                direction=options.list[0].getfieldvalue('direction','row') # row,column
    7577                axes_pad=options.list[0].getfieldvalue('axes_pad',0.25)
     
    8183                cbar_location=options.list[0].getfieldvalue('colorbarpos','right') # right,top
    8284                cbar_size=options.list[0].getfieldvalue('colorbarsize','5%')
    83                 cbar_pad=options.list[0].getfieldvalue('colorbarpad','2.5%') # None or %
     85                cbar_pad=options.list[0].getfieldvalue('colorbarpad',0.025) # None or %
    8486
    8587                axgrid=ImageGrid(fig,111,
     
    9799
    98100                if cbar_mode=='None':
    99                         for ax in axgrid.cbar_axes: 
     101                        for ax in axgrid.cbar_axes:
    100102                                fig._axstack.remove(ax)
    101103
  • issm/trunk-jpl/src/py3/solve/WriteData.py

    r23689 r23691  
    11import numpy as np
    22from struct import pack,unpack
    3 from pairoptions import pairoptions
     3import pairoptions
    44
    55def WriteData(fid,prefix,*args):
     
    1212
    1313        #process options
    14         options=pairoptions(*args)
     14        options=pairoptions.pairoptions(*args)
    1515
    1616        #Get data properties
     
    5555
    5656        #Step 1: write the enum to identify this record uniquely
    57         fid.write(pack('>i',len(name)))
    58         fid.write(pack('>{}s'.format(len(name)),name.encode()))
    59         # print(name)
    60         # print(pack('>{}s'.format(len(name)),name)
     57        fid.write(pack('i',len(name)))
     58        fid.write(pack('{}s'.format(len(name)),name.encode()))
     59
    6160
    6261        #Step 2: write the data itself.
    6362        if datatype=='Boolean':    # {{{
    6463#               if len(data) !=1:
    65 #                       raise ValueError('field %s cannot be marshalled as it has more than one element!' % name[0])
    66 
    67                 #first write length of record
    68                 fid.write(pack('>i',4+4))  #1 bool (disguised as an int)+code
    69 
    70                 #write data code:
    71                 fid.write(pack('>i',FormatToCode(datatype)))
     64#                       raise ValueError('fi eld %s cannot be marshalled as it has more than one element!' % name[0])
     65
     66                #first write length of record
     67                fid.write(pack('i',4+4))  #1 bool (disguised as an int)+code
     68
     69                #write data code:
     70                fid.write(pack('i',FormatToCode(datatype)))
    7271
    7372                #now write integer
    74                 fid.write(pack('>i',int(data)))  #send an int, not easy to send a bool
     73                fid.write(pack('i',int(data)))  #send an int, not easy to send a bool
    7574                # }}}
    7675
     
    8079
    8180                #first write length of record
    82                 fid.write(pack('>i',4+4))  #1 integer + code
    83 
    84                 #write data code:
    85                 fid.write(pack('>i',FormatToCode(datatype)))
     81                fid.write(pack('i',4+4))  #1 integer + code
     82
     83                #write data code:
     84                fid.write(pack('i',FormatToCode(datatype)))
    8685
    8786                #now write integer
    88                 fid.write(pack('>i',int(data))) #force an int,
     87                fid.write(pack('i',int(data))) #force an int,
    8988                # }}}
    9089
     
    9493
    9594                #first write length of record
    96                 fid.write(pack('>i',8+4))  #1 double+code
    97 
    98                 #write data code:
    99                 fid.write(pack('>i',FormatToCode(datatype)))
     95                fid.write(pack('i',8+4))  #1 double+code
     96
     97                #write data code:
     98                fid.write(pack('i',FormatToCode(datatype)))
    10099
    101100                #now write double
    102                 fid.write(pack('>d',data))
     101                fid.write(pack('d',data))
    103102                # }}}
    104103
    105104        elif datatype=='String':    # {{{
    106105                #first write length of record
    107                 fid.write(pack('>i',len(data)+4+4))  #string + string size + code
    108 
    109                 #write data code:
    110                 fid.write(pack('>i',FormatToCode(datatype)))
     106                fid.write(pack('i',len(data)+4+4))  #string + string size + code
     107
     108                #write data code:
     109                fid.write(pack('i',FormatToCode(datatype)))
    111110
    112111                #now write string
    113                 fid.write(pack('>i',len(data)))
    114                 fid.write(pack('>{}s'.format(len(data)),data.encode()))
     112                fid.write(pack('i',len(data)))
     113                fid.write(pack('{}s'.format(len(data)),data.encode()))
    115114                # }}}
    116115
    117116        elif datatype in ['IntMat','BooleanMat']:    # {{{
    118117
    119                 if   isinstance(data,(int,bool)):
     118                if isinstance(data,(int,bool)):
    120119                        data=np.array([data])
    121120                elif isinstance(data,(list,tuple)):
     
    134133
    135134                #first write length of record
    136                 fid.write(pack('>i',4+4+8*np.product(s)+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
     135                fid.write(pack('i',4+4+8*np.product(s)+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
    137136
    138137                #write data code and matrix type:
    139                 fid.write(pack('>i',FormatToCode(datatype)))
    140                 fid.write(pack('>i',mattype))
     138                fid.write(pack('i',FormatToCode(datatype)))
     139                fid.write(pack('i',mattype))
    141140
    142141                #now write matrix
    143142                if np.ndim(data) == 1:
    144                         fid.write(pack('>i',s[0]))
    145                         fid.write(pack('>i',1))
     143                        fid.write(pack('i',s[0]))
     144                        fid.write(pack('i',1))
    146145                        for i in range(s[0]):
    147                                 fid.write(pack('>d',float(data[i])))    #get to the "c" convention, hence the transpose
    148                 else:
    149                         fid.write(pack('>i',s[0]))
    150                         fid.write(pack('>i',s[1]))
     146                                fid.write(pack('d',float(data[i])))    #get to the "c" convention, hence the transpose
     147                else:
     148                        fid.write(pack('i',s[0]))
     149                        fid.write(pack('i',s[1]))
    151150                        for i in range(s[0]):
    152151                                for j in range(s[1]):
    153                                         fid.write(pack('>d',float(data[i][j])))    #get to the "c" convention, hence the transpose
     152                                        fid.write(pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
    154153                # }}}
    155154
     
    175174                recordlength=4+4+8*np.product(s)+4+4; #2 integers (32 bits) + the double matrix + code + matrix type
    176175                if recordlength > 4**31 :
    177                         raise ValueError('field %s cannot be marshalled because it is larger than 4^31 bytes!' % enum)
    178 
    179                 fid.write(pack('>i',recordlength))  #2 integers (32 bits) + the double matrix + code + matrix type
     176                        raise ValueError('field {} cannot be marshalled because it is larger than 4^31 bytes!'.format(enum))
     177
     178                fid.write(pack('i',recordlength))  #2 integers (32 bits) + the double matrix + code + matrix type
    180179
    181180                #write data code and matrix type:
    182                 fid.write(pack('>i',FormatToCode(datatype)))
    183                 fid.write(pack('>i',mattype))
     181                fid.write(pack('i',FormatToCode(datatype)))
     182                fid.write(pack('i',mattype))
    184183
    185184                #now write matrix
    186185                if np.ndim(data) == 1:
    187                         fid.write(pack('>i',s[0]))
    188                         fid.write(pack('>i',1))
     186                        fid.write(pack('i',s[0]))
     187                        fid.write(pack('i',1))
    189188                        for i in range(s[0]):
    190                                 fid.write(pack('>d',float(data[i])))    #get to the "c" convention, hence the transpose
    191                 else:
    192                         fid.write(pack('>i',s[0]))
    193                         fid.write(pack('>i',s[1]))
     189                                fid.write(pack('d',float(data[i])))    #get to the "c" convention, hence the transpose
     190                else:
     191                        fid.write(pack('i',s[0]))
     192                        fid.write(pack('i',s[1]))
    194193                        for i in range(s[0]):
    195194                                for j in range(s[1]):
    196                                         fid.write(pack('>d',float(data[i][j])))    #get to the "c" convention, hence the transpose
     195                                        fid.write(pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
    197196                # }}}
    198197
     
    226225                        raise ValueError('field %s cannot be marshalled because it is larger than 4^31 bytes!' % enum)
    227226
    228                 fid.write(pack('>i',recordlength))  #2 integers (32 bits) + the matrix + code + matrix type
     227                fid.write(pack('i',recordlength))  #2 integers (32 bits) + the matrix + code + matrix type
    229228
    230229                #write data code and matrix type:
    231                 fid.write(pack('>i',FormatToCode(datatype)))
    232                 fid.write(pack('>i',mattype))
     230                fid.write(pack('i',FormatToCode(datatype)))
     231                fid.write(pack('i',mattype))
    233232
    234233                #Write offset and range
     
    244243                #now write matrix
    245244                if np.ndim(data) == 1:
    246                         fid.write(pack('>i',s[0]))
    247                         fid.write(pack('>i',1))
    248                         fid.write(pack('>d',float(offsetA)))
    249                         fid.write(pack('>d',float(rangeA)))
     245                        fid.write(pack('i',s[0]))
     246                        fid.write(pack('i',1))
     247                        fid.write(pack('d',float(offsetA)))
     248                        fid.write(pack('d',float(rangeA)))
    250249                        for i in range(s[0]-1):
    251                                 fid.write(pack('>B',int(A[i])))
    252 
    253                         fid.write(pack('>d',float(data[s[0]-1])))    #get to the "c" convention, hence the transpose
     250                                fid.write(pack('B',int(A[i])))
     251
     252                        fid.write(pack('d',float(data[s[0]-1])))    #get to the "c" convention, hence the transpose
    254253
    255254                elif np.product(s) > 0:
    256                         fid.write(pack('>i',s[0]))
    257                         fid.write(pack('>i',s[1]))
    258                         fid.write(pack('>d',float(offsetA)))
    259                         fid.write(pack('>d',float(rangeA)))
     255                        fid.write(pack('i',s[0]))
     256                        fid.write(pack('i',s[1]))
     257                        fid.write(pack('d',float(offsetA)))
     258                        fid.write(pack('d',float(rangeA)))
    260259                        for i in range(s[0]-1):
    261260                                for j in range(s[1]):
    262                                         fid.write(pack('>B',int(A[i][j])))    #get to the "c" convention, hence the transpose
     261                                        fid.write(pack('B',int(A[i][j])))    #get to the "c" convention, hence the transpose
    263262
    264263                        for j in range(s[1]):
    265                                 fid.write(pack('>d',float(data[s[0]-1][j])))
     264                                fid.write(pack('d',float(data[s[0]-1][j])))
    266265
    267266                # }}}
     
    286285
    287286                #write length of record
    288                 fid.write(pack('>i',recordlength))
    289 
    290                 #write data code:
    291                 fid.write(pack('>i',FormatToCode(datatype)))
     287                fid.write(pack('i',recordlength))
     288
     289                #write data code:
     290                fid.write(pack('i',FormatToCode(datatype)))
    292291
    293292                #write data, first number of records
    294                 fid.write(pack('>i',len(data)))
     293                fid.write(pack('i',len(data)))
    295294
    296295                for matrix in data:
     
    305304
    306305                        if np.ndim(matrix) == 1:
    307                                 fid.write(pack('>i',s[0]))
    308                                 fid.write(pack('>i',1))
     306                                fid.write(pack('i',s[0]))
     307                                fid.write(pack('i',1))
    309308                                for i in range(s[0]):
    310                                         fid.write(pack('>d',float(matrix[i])))    #get to the "c" convention, hence the transpose
     309                                        fid.write(pack('d',float(matrix[i])))    #get to the "c" convention, hence the transpose
    311310                        else:
    312                                 fid.write(pack('>i',s[0]))
    313                                 fid.write(pack('>i',s[1]))
     311                                fid.write(pack('i',s[0]))
     312                                fid.write(pack('i',s[1]))
    314313                                for i in range(s[0]):
    315314                                        for j in range(s[1]):
    316                                                 fid.write(pack('>d',float(matrix[i][j])))
     315                                                fid.write(pack('d',float(matrix[i][j])))
    317316                # }}}
    318317
     
    325324
    326325                #write length of record
    327                 fid.write(pack('>i',recordlength))
    328 
    329                 #write data code:
    330                 fid.write(pack('>i',FormatToCode(datatype)))
     326                fid.write(pack('i',recordlength))
     327
     328                #write data code:
     329                fid.write(pack('i',FormatToCode(datatype)))
    331330
    332331                #now write length of string array
    333                 fid.write(pack('>i',len(data)))
     332                fid.write(pack('i',len(data)))
    334333
    335334                #now write the strings
    336335                for string in data:
    337                         fid.write(pack('>i',len(string)))
    338                         fid.write(pack('>{}s'.format(len(string)),string.encode()))
     336                        fid.write(pack('i',len(string)))
     337                        fid.write(pack('{}s'.format(len(string)),string.encode()))
    339338                # }}}
    340339
  • issm/trunk-jpl/src/py3/solve/loadresultsfromdisk.py

    r23670 r23691  
    22from results import results
    33from parseresultsfromdisk import parseresultsfromdisk
    4 import MatlabFuncs as m
    54from postqmu import postqmu
    65
    76def loadresultsfromdisk(md,filename):
    87        """
    9         LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"           
    10  
     8        LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"
     9
    1110           Usage:
    1211              md=loadresultsfromdisk(md=False,filename=False);
     
    2120                #Check that file exists
    2221                if not os.path.exists(filename):
    23                         raise OSError("binary file '%s' not found." % filename)
     22                        raise OSError("binary file '{}' not found.".format(filename))
    2423
    2524                #initialize md.results if not a structure yet
     
    3029                structure=parseresultsfromdisk(md,filename,not md.settings.io_gather)
    3130                if not len(structure):
    32                         raise RuntimeError("No result found in binary file '%s'. Check for solution crash." % filename)
     31                        raise RuntimeError("No result found in binary file '{}'. Check for solution crash.".format(filename))
     32
    3333                setattr(md.results,structure[0].SolutionType,structure)
    3434
     
    5353
    5454                #if only one solution, extract it from list for user friendliness
    55                 if len(structure) == 1 and not m.strcmp(structure[0].SolutionType,'TransientSolution'):
     55                if len(structure) == 1 and not structure[0].SolutionType=='TransientSolution':
    5656                        setattr(md.results,structure[0].SolutionType,structure[0])
    5757
  • issm/trunk-jpl/src/py3/solve/parseresultsfromdisk.py

    r23677 r23691  
    99        else:
    1010                saveres=parseresultsfromdiskioserial(md,filename)
    11 
    1211        return saveres
    1312
     
    1716                fid=open(filename,'rb')
    1817        except IOError as e:
    19                 raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
     18                raise IOError("loadresultsfromdisk error message: could not open '{}' for binary reading.".format(filename))
    2019
    2120        #initialize results:
     
    7978                fid=open(filename,'rb')
    8079        except IOError as e:
    81                 raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
     80                raise IOError("loadresultsfromdisk error message: could not open '{}' for binary reading.".format(filename))
    8281
    8382        saveres=[]
     
    146145        try:
    147146                length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    148 
    149                 fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
     147                fieldname=struct.unpack('{}s'.format(length),fid.read(length))[0][:-1]
    150148                time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
    151149                step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    152 
    153                 type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
     150                datatype=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    154151                M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    155                 if   type==1:
    156                         field=np.array(struct.unpack('%dd' % M,fid.read(M*struct.calcsize('d'))),dtype=float)
    157                 elif type==2:
    158                         field=struct.unpack('%ds' % M,fid.read(M))[0][:-1]
    159                 elif type==3:
     152                if   datatype==1:
     153                        field=np.array(struct.unpack('{}d'.format(M),fid.read(M*struct.calcsize('d'))),dtype=float)
     154
     155                elif datatype==2:
     156                        field=struct.unpack('{}s'.format(M),fid.read(M))[0][:-1]
     157                        field=field.decode()
     158
     159                elif datatype==3:
    160160                        N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    161161#                       field=transpose(fread(fid,[N M],'double'));
    162162                        field=np.zeros(shape=(M,N),dtype=float)
    163163                        for i in range(M):
    164                                 field[i,:]=struct.unpack('%dd' % N,fid.read(N*struct.calcsize('d')))
    165                 elif type==4:
     164                                field[i,:]=struct.unpack('{}d'.format(N),fid.read(N*struct.calcsize('d')))
     165
     166                elif datatype==4:
    166167                        N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    167168#                       field=transpose(fread(fid,[N M],'int'));
    168169                        field=np.zeros(shape=(M,N),dtype=int)
    169170                        for i in range(M):
    170                                 field[i,:]=struct.unpack('%ii' % N,fid.read(N*struct.calcsize('i')))
     171                                field[i,:]=struct.unpack('{}i'.format(N),fid.read(N*struct.calcsize('i')))
     172
    171173                else:
    172                         raise TypeError("cannot read data of type %d" % type)
     174                        raise TypeError("cannot read data of datatype {}".format(datatype))
    173175
    174176                #Process units here FIXME: this should not be done here!
     
    244246
    245247                saveres=OrderedDict()
    246                 saveres['fieldname']=fieldname
     248                saveres['fieldname']=fieldname.decode()
    247249                saveres['time']=time
    248250                saveres['step']=step
     
    265267        try:
    266268                length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    267                 fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
     269                fieldname=struct.unpack('{}s'.format(length),fid.read(length))[0][:-1]
    268270                time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
    269271                step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    270                 type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
     272                dtattype=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    271273                M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    272274                N=1    #default
    273                 if   type==1:
     275                if   datatype==1:
    274276                        fid.seek(M*8,1)
    275                 elif type==2:
     277                elif datatype==2:
    276278                        fid.seek(M,1)
    277                 elif type==3:
     279                elif datatype==3:
    278280                        N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
    279281                        fid.seek(N*M*8,1)
    280282                else:
    281                         raise TypeError("cannot read data of type %d" % type)
     283                        raise TypeError("cannot read data of datatype {}".format(datatype))
    282284
    283285                saveres=OrderedDict()
Note: See TracChangeset for help on using the changeset viewer.