From a4785ba562ae1b9900fd5955591343ed61edbd59 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Thu, 3 Sep 2020 10:41:22 -0400 Subject: [PATCH 1/3] modified file writing of geom and table to a general to_file() that takes a "format=" argument --- python/damask/_colormap.py | 4 +- python/damask/_geom.py | 186 +++++++++++++++++++++---------------- python/damask/_table.py | 67 ++++++++----- python/tests/test_Geom.py | 15 +-- python/tests/test_Table.py | 17 ++-- 5 files changed, 170 insertions(+), 119 deletions(-) diff --git a/python/damask/_colormap.py b/python/damask/_colormap.py index 59f3b749d..fccb8642b 100644 --- a/python/damask/_colormap.py +++ b/python/damask/_colormap.py @@ -300,9 +300,9 @@ class Colormap(mpl.colors.ListedColormap): if fhandle is None: with open(colormap.name.replace(' ','_')+'.txt', 'w') as f: - t.to_ASCII(f,True) + t.to_file(f,new_style=True) else: - t.to_ASCII(fhandle,True) + t.to_file(fhandle,new_style=True) @staticmethod def _export_GOM(colormap,fhandle=None): diff --git a/python/damask/_geom.py b/python/damask/_geom.py index 93805734e..f5dc05f2f 100644 --- a/python/damask/_geom.py +++ b/python/damask/_geom.py @@ -447,7 +447,7 @@ class Geom: ) - def to_file(self,fname,pack=None): + def to_file(self,fname,format='vtr',pack=None): """ Writes a geom file. @@ -455,94 +455,120 @@ class Geom: ---------- fname : str or file handle Geometry file to write. + format : {'vtr', 'ASCII'}, optional + File format, defaults to 'vtr'. Available formats are: + - vtr: VTK rectilinear grid file, extension '.vtr'. + - ASCII: Plain text file, extension '.geom'. pack : bool, optional - Compress geometry with 'x of y' and 'a to b'. + Compress ASCII geometry with 'x of y' and 'a to b'. """ - header = [f'{len(self.comments)+4} header'] + self.comments - header.append('grid a {} b {} c {}'.format(*self.get_grid())) - header.append('size x {} y {} z {}'.format(*self.get_size())) - header.append('origin x {} y {} z {}'.format(*self.get_origin())) - header.append(f'homogenization {self.get_homogenization()}') + def _to_ASCII(geom,fname,pack=None): + """ + Writes a geom file. - grid = self.get_grid() + Parameters + ---------- + geom : Geom object + Geometry to write. + fname : str or file handle + Geometry file to write. + pack : bool, optional + Compress geometry with 'x of y' and 'a to b'. - if pack is None: - plain = grid.prod()/self.N_microstructure < 250 + """ + header = [f'{len(geom.comments)+4} header'] + geom.comments + header.append('grid a {} b {} c {}'.format(*geom.get_grid())) + header.append('size x {} y {} z {}'.format(*geom.get_size())) + header.append('origin x {} y {} z {}'.format(*geom.get_origin())) + header.append(f'homogenization {geom.get_homogenization()}') + + grid = geom.get_grid() + + if pack is None: + plain = grid.prod()/geom.N_microstructure < 250 + else: + plain = not pack + + if plain: + format_string = '%g' if geom.microstructure.dtype in np.sctypes['float'] else \ + '%{}i'.format(1+int(np.floor(np.log10(np.nanmax(geom.microstructure))))) + np.savetxt(fname, + geom.microstructure.reshape([grid[0],np.prod(grid[1:])],order='F').T, + header='\n'.join(header), fmt=format_string, comments='') + else: + try: + f = open(fname,'w') + except TypeError: + f = fname + + compressType = None + former = start = -1 + reps = 0 + for current in geom.microstructure.flatten('F'): + if abs(current - former) == 1 and (start - current) == reps*(former - current): + compressType = 'to' + reps += 1 + elif current == former and start == former: + compressType = 'of' + reps += 1 + else: + if compressType is None: + f.write('\n'.join(header)+'\n') + elif compressType == '.': + f.write(f'{former}\n') + elif compressType == 'to': + f.write(f'{start} to {former}\n') + elif compressType == 'of': + f.write(f'{reps} of {former}\n') + + compressType = '.' + start = current + reps = 1 + + former = current + + if compressType == '.': + f.write(f'{former}\n') + elif compressType == 'to': + f.write(f'{start} to {former}\n') + elif compressType == 'of': + f.write(f'{reps} of {former}\n') + + + def _to_vtr(geom,fname=None): + """ + Generates vtk rectilinear grid. + + Parameters + ---------- + geom : Geom object + Geometry to write. + fname : str, optional + Filename to write. If no file is given, a string is returned. + Valid extension is .vtr, it will be appended if not given. + + """ + v = VTK.from_rectilinearGrid(geom.grid,geom.size,geom.origin) + v.add(geom.microstructure.flatten(order='F'),'materialpoint') + v.add_comments(geom.comments) + + if fname: + v.to_file(fname if str(fname).endswith('.vtr') else str(fname)+'.vtr') + else: + sys.stdout.write(v.__repr__()) + + if format.lower() == 'ascii': + return _to_ASCII(self,fname,pack) + elif format.lower() == 'vtr': + return _to_vtr(self,fname) else: - plain = not pack + raise TypeError(f'Unknown format {format}.') - if plain: - format_string = '%g' if self.microstructure.dtype in np.sctypes['float'] else \ - '%{}i'.format(1+int(np.floor(np.log10(np.nanmax(self.microstructure))))) - np.savetxt(fname, - self.microstructure.reshape([grid[0],np.prod(grid[1:])],order='F').T, - header='\n'.join(header), fmt=format_string, comments='') - else: - try: - f = open(fname,'w') - except TypeError: - f = fname - - compressType = None - former = start = -1 - reps = 0 - for current in self.microstructure.flatten('F'): - if abs(current - former) == 1 and (start - current) == reps*(former - current): - compressType = 'to' - reps += 1 - elif current == former and start == former: - compressType = 'of' - reps += 1 - else: - if compressType is None: - f.write('\n'.join(header)+'\n') - elif compressType == '.': - f.write(f'{former}\n') - elif compressType == 'to': - f.write(f'{start} to {former}\n') - elif compressType == 'of': - f.write(f'{reps} of {former}\n') - - compressType = '.' - start = current - reps = 1 - - former = current - - if compressType == '.': - f.write(f'{former}\n') - elif compressType == 'to': - f.write(f'{start} to {former}\n') - elif compressType == 'of': - f.write(f'{reps} of {former}\n') - - - def to_vtr(self,fname=None): - """ - Generates vtk rectilinear grid. - - Parameters - ---------- - fname : str, optional - Filename to write. If no file is given, a string is returned. - Valid extension is .vtr, it will be appended if not given. - - """ - v = VTK.from_rectilinearGrid(self.grid,self.size,self.origin) - v.add(self.microstructure.flatten(order='F'),'materialpoint') - v.add_comments(self.comments) - - if fname: - v.to_file(fname if str(fname).endswith('.vtr') else str(fname)+'.vtr') - else: - sys.stdout.write(v.__repr__()) - - - def as_ASCII(self): + def as_ASCII(self,pack=False): """Format geometry as human-readable ASCII.""" f = StringIO() - self.to_file(f) + self.to_file(f,'ASCII',pack) f.seek(0) return ''.join(f.readlines()) diff --git a/python/damask/_table.py b/python/damask/_table.py index fd8cf0fe3..180c51f6f 100644 --- a/python/damask/_table.py +++ b/python/damask/_table.py @@ -313,7 +313,7 @@ class Table: self.shapes[key] = other.shapes[key] - def to_ASCII(self,fname,new_style=False): + def to_file(self,fname,format='ASCII',new_style=False): """ Store as plain text file. @@ -321,32 +321,51 @@ class Table: ---------- fname : file, str, or pathlib.Path Filename or file for writing. + format : {ASCII'}, optional + File format, defaults to 'ASCII'. Available formats are: + - ASCII: Plain text file, extension '.txt'. new_style : Boolean, optional Write table in new style, indicating header lines by comment sign ('#') only. """ - seen = set() - labels = [] - for l in [x for x in self.data.columns if not (x in seen or seen.add(x))]: - if self.shapes[l] == (1,): - labels.append(f'{l}') - elif len(self.shapes[l]) == 1: - labels += [f'{i+1}_{l}' \ - for i in range(self.shapes[l][0])] - else: - labels += [f'{util.srepr(self.shapes[l],"x")}:{i+1}_{l}' \ - for i in range(np.prod(self.shapes[l]))] + def _to_ASCII(table,fname,new_style=False): + """ + Store as plain text file. - if new_style: - header = [f'# {comment}' for comment in self.comments] + Parameters + ---------- + table : Table object + Table to write. + fname : file, str, or pathlib.Path + Filename or file for writing. + new_style : Boolean, optional + Write table in new style, indicating header lines by comment sign ('#') only. + + """ + seen = set() + labels = [] + for l in [x for x in table.data.columns if not (x in seen or seen.add(x))]: + if table.shapes[l] == (1,): + labels.append(f'{l}') + elif len(table.shapes[l]) == 1: + labels += [f'{i+1}_{l}' \ + for i in range(table.shapes[l][0])] + else: + labels += [f'{util.srepr(table.shapes[l],"x")}:{i+1}_{l}' \ + for i in range(np.prod(table.shapes[l]))] + + header = [f'# {comment}' for comment in table.comments] if new_style else \ + [f'{len(table.comments)+1} header'] + table.comments + + try: + f = open(fname,'w') + except TypeError: + f = fname + + for line in header + [' '.join(labels)]: f.write(line+'\n') + table.data.to_csv(f,sep=' ',na_rep='nan',index=False,header=False) + + if format.lower() == 'ascii': + return _to_ASCII(self,fname,new_style) else: - header = [f'{len(self.comments)+1} header'] \ - + self.comments \ - - try: - f = open(fname,'w') - except TypeError: - f = fname - - for line in header + [' '.join(labels)]: f.write(line+'\n') - self.data.to_csv(f,sep=' ',na_rep='nan',index=False,header=False) + raise TypeError(f'Unknown format {format}.') diff --git a/python/tests/test_Geom.py b/python/tests/test_Geom.py index 9f419f3fb..870cc7469 100644 --- a/python/tests/test_Geom.py +++ b/python/tests/test_Geom.py @@ -63,13 +63,13 @@ class TestGeom: def test_write_read_str(self,default,tmpdir): - default.to_file(str(tmpdir/'default.geom')) + default.to_file(str(tmpdir/'default.geom'),format='ASCII') new = Geom.from_file(str(tmpdir/'default.geom')) assert geom_equal(default,new) def test_write_read_file(self,default,tmpdir): with open(tmpdir/'default.geom','w') as f: - default.to_file(f,pack=True) + default.to_file(f,format='ASCII',pack=True) with open(tmpdir/'default.geom') as f: new = Geom.from_file(f) assert geom_equal(default,new) @@ -82,8 +82,7 @@ class TestGeom: assert geom_equal(default,new) def test_read_write_vtr(self,default,tmpdir): - default.to_vtr(tmpdir/'default') - print(default.to_vtr()) + default.to_file(tmpdir/'default',format='vtr') for _ in range(10): time.sleep(.2) if os.path.exists(tmpdir/'default.vtr'): break @@ -110,7 +109,7 @@ class TestGeom: @pytest.mark.parametrize('pack',[True,False]) def test_pack(self,default,tmpdir,pack): - default.to_file(tmpdir/'default.geom',pack=pack) + default.to_file(tmpdir/'default.geom',format='ASCII',pack=pack) new = Geom.from_file(tmpdir/'default.geom') assert geom_equal(new,default) @@ -140,6 +139,10 @@ class TestGeom: with pytest.raises(TypeError): default.set_homogenization(homogenization=0) + def test_invalid_write_format(self,default): + with pytest.raises(TypeError): + default.to_file(format='invalid') + @pytest.mark.parametrize('directions,reflect',[ (['x'], False), (['x','y','z'],True), @@ -196,7 +199,7 @@ class TestGeom: current = default.clean(stencil,selection,periodic) reference = reference_dir/f'clean_{stencil}_{"+".join(map(str,[None] if selection is None else selection))}_{periodic}' if update and stencil > 1: - current.to_vtr(reference) + current.to_file(reference,format='vtr') for _ in range(10): time.sleep(.2) if os.path.exists(reference.with_suffix('.vtr')): break diff --git a/python/tests/test_Table.py b/python/tests/test_Table.py index f23d2f842..6f9eca2d5 100644 --- a/python/tests/test_Table.py +++ b/python/tests/test_Table.py @@ -35,7 +35,7 @@ class TestTable: @pytest.mark.parametrize('mode',['str','path']) def test_write_read(self,default,tmpdir,mode): - default.to_ASCII(tmpdir/'default.txt') + default.to_file(tmpdir/'default.txt') if mode == 'path': new = Table.from_ASCII(tmpdir/'default.txt') elif mode == 'str': @@ -43,19 +43,22 @@ class TestTable: assert all(default.data==new.data) and default.shapes == new.shapes def test_write_read_file(self,default,tmpdir): - with open(tmpdir.join('default.txt'),'w') as f: - default.to_ASCII(f) - with open(tmpdir.join('default.txt')) as f: + with open(tmpdir/'default.txt','w') as f: + default.to_file(f) + with open(tmpdir/'default.txt') as f: new = Table.from_ASCII(f) assert all(default.data==new.data) and default.shapes == new.shapes def test_write_read_new_style(self,default,tmpdir): - with open(tmpdir.join('new_style.txt'),'w') as f: - default.to_ASCII(f,new_style=True) - with open(tmpdir.join('new_style.txt')) as f: + with open(tmpdir/'new_style.txt','w') as f: + default.to_file(f,new_style=True) + with open(tmpdir/'new_style.txt') as f: new = Table.from_ASCII(f) assert all(default.data==new.data) and default.shapes == new.shapes + def test_write_invalid_format(self,default,tmpdir): + with pytest.raises(TypeError): + default.to_file(tmpdir/'shouldnotbethere.txt',format='invalid') @pytest.mark.parametrize('mode',['str','path']) def test_read_ang(self,reference_dir,mode): From be0668dc272ffaadce5fff61dc03a8ebf72a665e Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Thu, 3 Sep 2020 11:19:19 -0400 Subject: [PATCH 2/3] fixed all affected shell scripts --- processing/legacy/addAPS34IDEstrainCoords.py | 2 +- processing/legacy/addCumulative.py | 2 +- processing/post/DADF5_postResults.py | 2 +- processing/post/addCompatibilityMismatch.py | 2 +- processing/post/addCurl.py | 2 +- processing/post/addDerivative.py | 2 +- processing/post/addDisplacement.py | 4 ++-- processing/post/addDivergence.py | 2 +- processing/post/addEuclideanDistance.py | 2 +- processing/post/addGaussian.py | 2 +- processing/post/addGradient.py | 2 +- processing/post/addIndexed.py | 4 ++-- processing/post/addOrientations.py | 2 +- processing/post/addSchmidfactors.py | 2 +- processing/post/permuteData.py | 2 +- processing/pre/geom_fromDREAM3D.py | 2 +- processing/pre/geom_fromMinimalSurface.py | 2 +- processing/pre/geom_fromOsteonGeometry.py | 2 +- processing/pre/geom_fromTable.py | 3 ++- processing/pre/geom_fromVoronoiTessellation.py | 3 ++- processing/pre/geom_grainGrowth.py | 2 +- processing/pre/seeds_fromDistribution.py | 2 +- processing/pre/seeds_fromGeom.py | 4 ++-- processing/pre/seeds_fromPokes.py | 4 ++-- processing/pre/seeds_fromRandom.py | 2 +- 25 files changed, 31 insertions(+), 29 deletions(-) diff --git a/processing/legacy/addAPS34IDEstrainCoords.py b/processing/legacy/addAPS34IDEstrainCoords.py index d71116c6a..9ba51ada1 100755 --- a/processing/legacy/addAPS34IDEstrainCoords.py +++ b/processing/legacy/addAPS34IDEstrainCoords.py @@ -49,4 +49,4 @@ for name in filenames: table.add('coord',rot_to_TSL.broadcast_to(coord.shape[0]) @ coord,scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/legacy/addCumulative.py b/processing/legacy/addCumulative.py index 958c6a70a..f84828a89 100755 --- a/processing/legacy/addCumulative.py +++ b/processing/legacy/addCumulative.py @@ -45,4 +45,4 @@ for name in filenames: np.cumprod(table.get(label),0) if options.product else np.cumsum(table.get(label),0), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/DADF5_postResults.py b/processing/post/DADF5_postResults.py index 2230ba563..08c8c7070 100755 --- a/processing/post/DADF5_postResults.py +++ b/processing/post/DADF5_postResults.py @@ -60,4 +60,4 @@ for filename in options.filenames: os.mkdir(dirname,0o755) file_out = '{}_inc{}.txt'.format(os.path.splitext(os.path.split(filename)[-1])[0], inc[3:].zfill(N_digits)) - table.to_ASCII(os.path.join(dirname,file_out)) + table.to_file(os.path.join(dirname,file_out)) diff --git a/processing/post/addCompatibilityMismatch.py b/processing/post/addCompatibilityMismatch.py index 59eafc077..bd55ab66a 100755 --- a/processing/post/addCompatibilityMismatch.py +++ b/processing/post/addCompatibilityMismatch.py @@ -191,4 +191,4 @@ for name in filenames: volumeMismatch.reshape(-1,1,order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addCurl.py b/processing/post/addCurl.py index 17459a2df..a9ddc8ae8 100755 --- a/processing/post/addCurl.py +++ b/processing/post/addCurl.py @@ -55,4 +55,4 @@ for name in filenames: curl.reshape(tuple(grid)+(-1,)).reshape(-1,np.prod(shape),order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addDerivative.py b/processing/post/addDerivative.py index 4e9410794..9030ae83b 100755 --- a/processing/post/addDerivative.py +++ b/processing/post/addDerivative.py @@ -71,4 +71,4 @@ for name in filenames: derivative(table.get(options.coordinates),table.get(label)), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addDisplacement.py b/processing/post/addDisplacement.py index 6f4a60192..80725410d 100755 --- a/processing/post/addDisplacement.py +++ b/processing/post/addDisplacement.py @@ -60,7 +60,7 @@ for name in filenames: table.add('fluct({}).{}'.format(options.f,options.pos), damask.grid_filters.node_displacement_fluct(size,F).reshape(-1,3,order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else os.path.splitext(name)[0]+'_nodal.txt') + table.to_file(sys.stdout if name is None else os.path.splitext(name)[0]+'_nodal.txt') else: table.add('avg({}).{}'.format(options.f,options.pos), damask.grid_filters.cell_displacement_avg(size,F).reshape(-1,3,order='F'), @@ -68,4 +68,4 @@ for name in filenames: table.add('fluct({}).{}'.format(options.f,options.pos), damask.grid_filters.cell_displacement_fluct(size,F).reshape(-1,3,order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addDivergence.py b/processing/post/addDivergence.py index 50048b44e..9abe1e2c6 100755 --- a/processing/post/addDivergence.py +++ b/processing/post/addDivergence.py @@ -55,4 +55,4 @@ for name in filenames: div.reshape(tuple(grid)+(-1,)).reshape(-1,np.prod(shape)//3,order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addEuclideanDistance.py b/processing/post/addEuclideanDistance.py index be820220a..921afc826 100755 --- a/processing/post/addEuclideanDistance.py +++ b/processing/post/addEuclideanDistance.py @@ -184,4 +184,4 @@ for name in filenames: distance[i,:], scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addGaussian.py b/processing/post/addGaussian.py index 86552deca..93397e215 100755 --- a/processing/post/addGaussian.py +++ b/processing/post/addGaussian.py @@ -73,4 +73,4 @@ for name in filenames: mode = 'wrap' if options.periodic else 'nearest'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addGradient.py b/processing/post/addGradient.py index f63f24789..3aee29374 100755 --- a/processing/post/addGradient.py +++ b/processing/post/addGradient.py @@ -55,4 +55,4 @@ for name in filenames: grad.reshape(tuple(grid)+(-1,)).reshape(-1,np.prod(shape)*3,order='F'), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addIndexed.py b/processing/post/addIndexed.py index 98fed597b..50db36c20 100755 --- a/processing/post/addIndexed.py +++ b/processing/post/addIndexed.py @@ -57,8 +57,8 @@ for name in filenames: table = damask.Table.from_ASCII(StringIO(''.join(sys.stdin.read())) if name is None else name) indexedTable = damask.Table.from_ASCII(options.asciitable) idx = np.reshape(table.get(options.index).astype(int) + options.offset,(-1))-1 - + for data in options.label: table.add(data+'_addIndexed',indexedTable.get(data)[idx],scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addOrientations.py b/processing/post/addOrientations.py index 706a959ad..79da15fdd 100755 --- a/processing/post/addOrientations.py +++ b/processing/post/addOrientations.py @@ -147,4 +147,4 @@ for name in filenames: if 'axisangle' in options.output: table.add('om({})'.format(label),o.as_axisangle(options.degrees), scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/addSchmidfactors.py b/processing/post/addSchmidfactors.py index d1899e9a0..26a0c5c93 100755 --- a/processing/post/addSchmidfactors.py +++ b/processing/post/addSchmidfactors.py @@ -189,4 +189,4 @@ for name in filenames: for i,label in enumerate(labels): table.add(label,S[:,i],scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/post/permuteData.py b/processing/post/permuteData.py index 1f4b80532..766558216 100755 --- a/processing/post/permuteData.py +++ b/processing/post/permuteData.py @@ -58,4 +58,4 @@ for name in filenames: rng.shuffle(uniques) table.set(label,uniques[inverse], scriptID+' '+' '.join(sys.argv[1:])) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) diff --git a/processing/pre/geom_fromDREAM3D.py b/processing/pre/geom_fromDREAM3D.py index c48698e53..6b7ccc21a 100755 --- a/processing/pre/geom_fromDREAM3D.py +++ b/processing/pre/geom_fromDREAM3D.py @@ -154,4 +154,4 @@ for name in filenames: homogenization=options.homogenization,comments=header) damask.util.croak(geom) - geom.to_file(os.path.splitext(name)[0]+'.geom',pack=False) + geom.to_file(os.path.splitext(name)[0]+'.geom',format='ASCII',pack=False) diff --git a/processing/pre/geom_fromMinimalSurface.py b/processing/pre/geom_fromMinimalSurface.py index bb6859b54..e6289ba0a 100755 --- a/processing/pre/geom_fromMinimalSurface.py +++ b/processing/pre/geom_fromMinimalSurface.py @@ -89,4 +89,4 @@ geom=damask.Geom(microstructure,options.size, comments=[scriptID + ' ' + ' '.join(sys.argv[1:])]) damask.util.croak(geom) -geom.to_file(sys.stdout if name is None else name,pack=False) +geom.to_file(sys.stdout if name is None else name,format='ASCII',pack=False) diff --git a/processing/pre/geom_fromOsteonGeometry.py b/processing/pre/geom_fromOsteonGeometry.py index 627d92728..6c6326163 100755 --- a/processing/pre/geom_fromOsteonGeometry.py +++ b/processing/pre/geom_fromOsteonGeometry.py @@ -142,4 +142,4 @@ geom = damask.Geom(microstructure.reshape(grid), homogenization=options.homogenization,comments=header) damask.util.croak(geom) -geom.to_file(sys.stdout if name is None else name,pack=False) +geom.to_file(sys.stdout if name is None else name,format='ASCII',pack=False) diff --git a/processing/pre/geom_fromTable.py b/processing/pre/geom_fromTable.py index be5b3a23c..dc968b82e 100755 --- a/processing/pre/geom_fromTable.py +++ b/processing/pre/geom_fromTable.py @@ -105,4 +105,5 @@ for name in filenames: homogenization=options.homogenization,comments=header) damask.util.croak(geom) - geom.to_file(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom',pack=False) + geom.to_file(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom', + format='ASCII',pack=False) diff --git a/processing/pre/geom_fromVoronoiTessellation.py b/processing/pre/geom_fromVoronoiTessellation.py index e6755c28e..67a0dfecc 100755 --- a/processing/pre/geom_fromVoronoiTessellation.py +++ b/processing/pre/geom_fromVoronoiTessellation.py @@ -228,4 +228,5 @@ for name in filenames: homogenization=options.homogenization,comments=header) damask.util.croak(geom) - geom.to_file(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom',pack=False) + geom.to_file(sys.stdout if name is None else os.path.splitext(name)[0]+'.geom', + format='ASCII',pack=False) diff --git a/processing/pre/geom_grainGrowth.py b/processing/pre/geom_grainGrowth.py index 6d1985ee3..0652d0583 100755 --- a/processing/pre/geom_grainGrowth.py +++ b/processing/pre/geom_grainGrowth.py @@ -172,4 +172,4 @@ for name in filenames: geom=geom.duplicate(microstructure[0:grid_original[0],0:grid_original[1],0:grid_original[2]]) geom.add_comments(scriptID + ' ' + ' '.join(sys.argv[1:])) - geom.to_file(sys.stdout if name is None else name,pack=False) + geom.to_file(sys.stdout if name is None else name,format='ASCII',pack=False) diff --git a/processing/pre/seeds_fromDistribution.py b/processing/pre/seeds_fromDistribution.py index d00016865..1a4ec6971 100755 --- a/processing/pre/seeds_fromDistribution.py +++ b/processing/pre/seeds_fromDistribution.py @@ -90,7 +90,7 @@ class myThread (threading.Thread): direction[i]*=2. i+= 1 perturbedSeedsTable.set('pos',coords) - perturbedSeedsTable.to_ASCII(perturbedSeedsVFile) + perturbedSeedsTable.to_file(perturbedSeedsVFile) #--- do tesselation with perturbed seed file ------------------------------------------------------ perturbedGeomVFile.close() diff --git a/processing/pre/seeds_fromGeom.py b/processing/pre/seeds_fromGeom.py index 0b741a077..ab64c6b1e 100755 --- a/processing/pre/seeds_fromGeom.py +++ b/processing/pre/seeds_fromGeom.py @@ -65,5 +65,5 @@ for name in filenames: table = damask.Table(seeds[mask],{'pos':(3,)},comments) table.add('microstructure',microstructure[mask]) - table.to_ASCII(sys.stdout if name is None else \ - os.path.splitext(name)[0]+'.seeds') + table.to_file(sys.stdout if name is None else \ + os.path.splitext(name)[0]+'.seeds') diff --git a/processing/pre/seeds_fromPokes.py b/processing/pre/seeds_fromPokes.py index 49bbe3429..78172fc23 100755 --- a/processing/pre/seeds_fromPokes.py +++ b/processing/pre/seeds_fromPokes.py @@ -92,5 +92,5 @@ for name in filenames: table = damask.Table(seeds,{'pos':(3,),'microstructure':(1,)},comments) table.set('microstructure',table.get('microstructure').astype(np.int)) - table.to_ASCII(sys.stdout if name is None else \ - os.path.splitext(name)[0]+'_poked_{}.seeds'.format(options.N)) + table.to_file(sys.stdout if name is None else \ + os.path.splitext(name)[0]+f'_poked_{options.N}.seeds') diff --git a/processing/pre/seeds_fromRandom.py b/processing/pre/seeds_fromRandom.py index be690713c..b9e419391 100755 --- a/processing/pre/seeds_fromRandom.py +++ b/processing/pre/seeds_fromRandom.py @@ -162,4 +162,4 @@ for name in filenames: else np.random.normal(loc = options.mean, scale = options.sigma, size = options.N) table.add('weight',weights) - table.to_ASCII(sys.stdout if name is None else name) + table.to_file(sys.stdout if name is None else name) From 1393fe8b54f3cc5176ffdf1227cb46c8484b9587 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Thu, 3 Sep 2020 12:39:11 -0400 Subject: [PATCH 3/3] updated tests in PRIVATE to use Table.to_file() --- PRIVATE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PRIVATE b/PRIVATE index 1ca2223c6..c6dc3f116 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit 1ca2223c68475bbcb9da633353dbe4a98c18db0d +Subproject commit c6dc3f116fc6007caf076772d5c29f0a0523544d