comparison pmat.py @ 116:9330d941fa1f

added function load_pmat_as_array_dataset and save_array_dataset_as_pmat
author Frederic Bastien <bastienf@iro.umontreal.ca>
date Wed, 07 May 2008 13:07:33 -0400
parents 01aa97a2212d
children c2f17f231960
comparison
equal deleted inserted replaced
115:01aa97a2212d 116:9330d941fa1f
73 w = int(w) 73 w = int(w)
74 X = numpy.numarray.fromstring(datastr,elemtype, shape=(l,w) ) 74 X = numpy.numarray.fromstring(datastr,elemtype, shape=(l,w) )
75 if byteorder!=sys.byteorder: 75 if byteorder!=sys.byteorder:
76 X.byteswap(True) 76 X.byteswap(True)
77 return X 77 return X
78
79 def load_pmat_as_array_dataset(fname):
80 import dataset,lookup_list
81
82 #load the pmat as array
83 a=load_pmat_as_array(fname)
84
85 #load the fieldnames
86 fieldnames = []
87 fieldnamefile = os.path.join(fname+'.metadata','fieldnames')
88 if os.path.isfile(fieldnamefile):
89 f = open(fieldnamefile)
90 for row in f:
91 row = row.split()
92 if len(row)>0:
93 fieldnames.append(row[0])
94 f.close()
95 else:
96 self.fieldnames = [ "field_"+str(i) for i in range(a.shape[1]) ]
97
98 return dataset.ArrayDataSet(a,lookup_list.LookupList(fieldnames,[x for x in range(a.shape[1])]))
99
100 def save_array_dataset_as_pmat(fname,ds):
101 ar=ds.data
102 save_array_as_pmat(fname,ar,ds.fieldNames())
78 103
79 def save_array_as_pmat( fname, ar, fieldnames=[] ): 104 def save_array_as_pmat( fname, ar, fieldnames=[] ):
80 s = file(fname,'wb') 105 s = file(fname,'wb')
81 106
82 length, width = ar.shape 107 length, width = ar.shape
421 pmat.append( [1, 2] ) 446 pmat.append( [1, 2] )
422 pmat.append( [3, 4] ) 447 pmat.append( [3, 4] )
423 pmat.close() 448 pmat.close()
424 449
425 pmat = PMat( 'tmp.pmat', 'r' ) 450 pmat = PMat( 'tmp.pmat', 'r' )
426 print pmat 451 ar=load_pmat_as_array('tmp.pmat')
427 print pmat[:] 452 ds=load_pmat_as_array_dataset('tmp.pmat')
453
454 print "PMat",pmat
455 print "PMat",pmat[:]
456 print "array",ar
457 print "ArrayDataSet",ds
458 for i in ds:
459 print i
460 save_array_dataset_as_pmat("tmp2.pmat",ds)
461 ds2=load_pmat_as_array_dataset('tmp2.pmat')
462 for i in ds2:
463 print i
428 # print "+++ tmp.pmat contains: " 464 # print "+++ tmp.pmat contains: "
429 # os.system( 'plearn vmat cat tmp.pmat' ) 465 # os.system( 'plearn vmat cat tmp.pmat' )
430 466 import shutil
431 os.remove( 'tmp.pmat' ) 467 for fname in ["tmp.pmat", "tmp2.pmat"]:
432 if os.path.exists( 'tmp.pmat.metadata' ): 468 os.remove( fname )
433 import shutil 469 if os.path.exists( fname+'.metadata' ):
434 shutil.rmtree( 'tmp.pmat.metadata' ) 470 shutil.rmtree( fname+'.metadata' )