handle missing orientation data
This commit is contained in:
parent
1245ec7d94
commit
ecf68db814
|
@ -1938,9 +1938,6 @@ class Result:
|
||||||
|
|
||||||
One DREAM3D file per visible increment is created.
|
One DREAM3D file per visible increment is created.
|
||||||
The DREAM3D file is based on HDF5 file format.
|
The DREAM3D file is based on HDF5 file format.
|
||||||
Without any regridding.
|
|
||||||
Considers the original grid from DAMASK.
|
|
||||||
Needs orientation data, 'O', present in the file.
|
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
@ -1966,29 +1963,34 @@ class Result:
|
||||||
|
|
||||||
N_digits = int(np.floor(np.log10(max(1,self.incs[-1]))))+1
|
N_digits = int(np.floor(np.log10(max(1,self.incs[-1]))))+1
|
||||||
|
|
||||||
lattice_dict = {}
|
|
||||||
|
|
||||||
dx = self.size/self.cells
|
at_cell_ph,in_data_ph,_,_ = self._mappings()
|
||||||
|
|
||||||
at_cell_ph,in_data_ph,at_cell_ho,in_data_ho = self._mappings()
|
|
||||||
|
|
||||||
out_dir = Path.cwd() if target_dir is None else Path(target_dir)
|
out_dir = Path.cwd() if target_dir is None else Path(target_dir)
|
||||||
out_dir.mkdir(parents=True,exist_ok=True)
|
out_dir.mkdir(parents=True,exist_ok=True)
|
||||||
|
|
||||||
with h5py.File(self.fname,'r') as f:
|
with h5py.File(self.fname,'r') as f:
|
||||||
for inc in util.show_progress(self.visible['increments']):
|
for inc in util.show_progress(self.visible['increments']):
|
||||||
|
crystal_structure = [999]
|
||||||
cell_orientation = np.zeros((np.prod(self.cells),3))
|
cell_orientation = np.zeros((np.prod(self.cells),3))
|
||||||
phase_ID_array = np.zeros((np.prod(self.cells)),dtype=np.int32) #need to reshape it later
|
phase_ID_array = np.zeros((np.prod(self.cells)),dtype=np.int32) #need to reshape it later
|
||||||
for c in range(self.N_constituents):
|
for c in range(self.N_constituents):
|
||||||
for count,label in enumerate(self.visible['phases']):
|
for count,label in enumerate(self.visible['phases']):
|
||||||
try:
|
try:
|
||||||
data = _read(f['/'.join([inc,'phase',label,'mechanical/O'])])
|
data = _read(f['/'.join([inc,'phase',label,'mechanical/O'])])
|
||||||
lattice_dict[label] = data.dtype.metadata['lattice']
|
lattice = data.dtype.metadata['lattice']
|
||||||
|
# Map to DREAM.3D IDs
|
||||||
|
if lattice == 'hP':
|
||||||
|
crystal_structure.append(0)
|
||||||
|
elif lattice in ['cI','cF']:
|
||||||
|
crystal_structure.append(1)
|
||||||
|
elif lattice == 'tI':
|
||||||
|
crystal_structure.append(8)
|
||||||
|
|
||||||
cell_orientation[at_cell_ph[c][label],:] = \
|
cell_orientation[at_cell_ph[c][label],:] = \
|
||||||
Rotation(data[in_data_ph[c][label],:]).as_Euler_angles().astype(np.float32)
|
Rotation(data[in_data_ph[c][label],:]).as_Euler_angles().astype(np.float32)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Orientation data is not present")
|
crystal_structure.append(999)
|
||||||
exit()
|
|
||||||
|
|
||||||
phase_ID_array[at_cell_ph[c][label]] = count + 1
|
phase_ID_array[at_cell_ph[c][label]] = count + 1
|
||||||
|
|
||||||
|
@ -2017,16 +2019,6 @@ class Result:
|
||||||
|
|
||||||
cell_ensemble = create_and_open(data_container,'CellEnsembleData')
|
cell_ensemble = create_and_open(data_container,'CellEnsembleData')
|
||||||
|
|
||||||
# Map to DREAM.3D IDs
|
|
||||||
crystal_structure = [999]
|
|
||||||
for label in self.visible['phases']:
|
|
||||||
if lattice_dict[label] in ['hP']:
|
|
||||||
crystal_structure.append(0)
|
|
||||||
elif lattice_dict[label] in ['cI','cF']:
|
|
||||||
crystal_structure.append(1)
|
|
||||||
elif lattice_dict[label] in ['tI']:
|
|
||||||
crystal_structure.append(8)
|
|
||||||
|
|
||||||
cell_ensemble['CrystalStructures'] = np.array(crystal_structure,np.uint32).reshape(-1,1)
|
cell_ensemble['CrystalStructures'] = np.array(crystal_structure,np.uint32).reshape(-1,1)
|
||||||
cell_ensemble['PhaseTypes'] = np.array([999] + [0]*len(self.phases),np.uint32).reshape(-1,1)
|
cell_ensemble['PhaseTypes'] = np.array([999] + [0]*len(self.phases),np.uint32).reshape(-1,1)
|
||||||
phase_name_list = ['Unknown Phase Type'] + [p for p in self.visible['phases']]
|
phase_name_list = ['Unknown Phase Type'] + [p for p in self.visible['phases']]
|
||||||
|
@ -2035,28 +2027,21 @@ class Result:
|
||||||
tid.set_cset(h5py.h5t.CSET_ASCII)
|
tid.set_cset(h5py.h5t.CSET_ASCII)
|
||||||
cell_ensemble.create_dataset(name='PhaseName',data = phase_name_list, dtype=h5py.Datatype(tid))
|
cell_ensemble.create_dataset(name='PhaseName',data = phase_name_list, dtype=h5py.Datatype(tid))
|
||||||
|
|
||||||
# Attributes Ensemble Matrix
|
|
||||||
cell_ensemble.attrs['AttributeMatrixType'] = np.array([11],np.uint32)
|
cell_ensemble.attrs['AttributeMatrixType'] = np.array([11],np.uint32)
|
||||||
cell_ensemble.attrs['TupleDimensions'] = np.array([len(self.phases) + 1], np.uint64)
|
cell_ensemble.attrs['TupleDimensions'] = np.array([len(self.phases) + 1], np.uint64)
|
||||||
|
|
||||||
# Attributes for data in Ensemble matrix
|
|
||||||
for group in ['CrystalStructures','PhaseTypes','PhaseName']:
|
for group in ['CrystalStructures','PhaseTypes','PhaseName']:
|
||||||
add_attribute(cell_ensemble[group], 'ComponentDimensions', np.array([1],np.uint64))
|
add_attribute(cell_ensemble[group], 'ComponentDimensions', np.array([1],np.uint64))
|
||||||
add_attribute(cell_ensemble[group], 'Tuple Axis Dimensions', f'x={len(self.phases)+1}')
|
add_attribute(cell_ensemble[group], 'Tuple Axis Dimensions', f'x={len(self.phases)+1}')
|
||||||
add_attribute(cell_ensemble[group], 'DataArrayVersion', np.array([2],np.int32))
|
add_attribute(cell_ensemble[group], 'DataArrayVersion', np.array([2],np.int32))
|
||||||
add_attribute(cell_ensemble[group], 'TupleDimensions', np.array([len(self.phases) + 1],np.uint64))
|
add_attribute(cell_ensemble[group], 'TupleDimensions', np.array([len(self.phases) + 1],np.uint64))
|
||||||
|
|
||||||
for group in ['CrystalStructures','PhaseTypes']:
|
for group in ['CrystalStructures','PhaseTypes']:
|
||||||
add_attribute(cell_ensemble[group], 'ObjectType', 'DataArray<uint32_t>')
|
add_attribute(cell_ensemble[group], 'ObjectType', 'DataArray<uint32_t>')
|
||||||
add_attribute(cell_ensemble['PhaseName'], 'ObjectType', 'StringDataArray')
|
add_attribute(cell_ensemble['PhaseName'], 'ObjectType', 'StringDataArray')
|
||||||
|
|
||||||
# Create geometry info
|
|
||||||
geom = create_and_open(data_container,'_SIMPL_GEOMETRY')
|
geom = create_and_open(data_container,'_SIMPL_GEOMETRY')
|
||||||
|
geom['DIMENSIONS'] = np.array(self.cells,np.int64)
|
||||||
geom['DIMENSIONS'] = np.int64(np.array(self.cells))
|
geom['ORIGIN'] = np.array(self.origin,np.float32)
|
||||||
geom['ORIGIN'] = np.float32(np.zeros(3))
|
geom['SPACING'] = np.float32(self.size/self.cells)
|
||||||
geom['SPACING'] = np.float32(dx)
|
|
||||||
|
|
||||||
names = ['GeometryName', 'GeometryTypeName','GeometryType','SpatialDimensionality','UnitDimensionality']
|
names = ['GeometryName', 'GeometryTypeName','GeometryType','SpatialDimensionality','UnitDimensionality']
|
||||||
values = ['ImageGeometry','ImageGeometry',np.array([0],np.uint32),np.array([3],np.uint32),np.array([3],np.uint32)]
|
values = ['ImageGeometry','ImageGeometry',np.array([0],np.uint32),np.array([3],np.uint32),np.array([3],np.uint32)]
|
||||||
for name,value in zip(names,values):
|
for name,value in zip(names,values):
|
||||||
|
|
Loading…
Reference in New Issue