Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions hexrd/wppf/phase.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def _readHDF(self, fhdf, xtal):
confusion later on
"""
self.lparms = list(gid.get('LatticeParameters'))
self.name = name
self.name = name.replace('-', '_')
fid.close()

def _init_from_materials(self, material_obj):
Expand All @@ -98,7 +98,7 @@ def _init_from_materials(self, material_obj):
O7/01/2021 SS ADDED DIRECT AND RECIPROCAL STRUCTURE MATRIX AS
FIELDS IN THE CLASS
"""
self.name = material_obj.name
self.name = material_obj.name.replace('-', '_')
self.dmin = material_obj.dmin.getVal('nm')
self.sgnum = material_obj.unitcell.sgnum
self.sgsetting = material_obj.sgsetting
Expand Down Expand Up @@ -346,7 +346,7 @@ def CalcStar(self, v, space, applyLaue=False):

def removeinversion(self, ksym):
"""
this function chooses a subset from a list
this function chooses a subset from a list
of symmetrically equivalent reflections such
that there are no g and -g present.
"""
Expand Down Expand Up @@ -541,12 +541,17 @@ def __str__(self):
return resstr

def __getitem__(self, key):
# Always sanitize the material name since lmfit won't accept '-'
key = key.replace('-', '_')

if(key in self.phase_dict.keys()):
return self.phase_dict[key]
else:
raise ValueError('phase with name not found')

def __setitem__(self, key, mat_cls):
# Always sanitize the material name since lmfit won't accept '-'
key = key.replace('-', '_')

if(key in self.phase_dict.keys()):
warnings.warn('phase already in parameter \
Expand Down Expand Up @@ -589,7 +594,7 @@ def add_many(self, material_file, material_keys):
self[k].pf = 1.0/len(self)

self.material_file = material_file
self.material_keys = material_keys
self.material_keys = [k.replace('-', '_') for k in material_keys]

def load(self, fname):
"""
Expand Down Expand Up @@ -737,7 +742,7 @@ def _init_from_materials(self, material_obj):

"""
# name
self.name = material_obj.name
self.name = material_obj.name.replace('-', '_')

# inverse of absorption length
self.abs_fact = 1e-4 * (1./material_obj.absorption_length)
Expand Down Expand Up @@ -860,7 +865,7 @@ def _readHDF(self, fhdf, xtal):
# read atom types (by atomic number, Z)
self.atom_type = np.array(gid.get('Atomtypes'), dtype=np.int32)
self.atom_ntype = self.atom_type.shape[0]
self.name = name
self.name = name.replace('-', '_')

fid.close()

Expand Down Expand Up @@ -1461,12 +1466,17 @@ def __str__(self):
return resstr

def __getitem__(self, key):
# Always sanitize the material name since lmfit won't accept '-'
key = key.replace('-', '_')

if(key in self.phase_dict.keys()):
return self.phase_dict[key]
else:
raise ValueError('phase with name not found')

def __setitem__(self, key, mat_cls):
# Always sanitize the material name since lmfit won't accept '-'
key = key.replace('-', '_')

if(key in self.phase_dict.keys()):
warnings.warn('phase already in parameter list. overwriting ...')
Expand Down Expand Up @@ -1524,7 +1534,7 @@ def add_many(self, material_file, material_keys):
self[k][l].pf = 1.0/self.num_phases

self.material_file = material_file
self.material_keys = material_keys
self.material_keys = [k.replace('-', '_') for k in material_keys]

def load(self, fname):
"""
Expand Down
30 changes: 29 additions & 1 deletion hexrd/wppf/wppfsupport.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
classes are put here to minimize code duplication. Some examples
include initialize background, generate_default_parameter list etc.
"""
import copy
import warnings

from hexrd.material.symbols import pstr_spacegroup
from hexrd.wppf.parameters import Parameters
from lmfit import Parameters as Parameters_lmfit
Expand All @@ -41,7 +44,6 @@
import hexrd
import numpy as np
from hexrd import constants
import warnings

def _generate_default_parameters_pseudovoight(params):
"""
Expand Down Expand Up @@ -461,6 +463,9 @@ def _generate_default_parameters_LeBail(mat,
@details: generate a default parameter class given a list/dict/
single instance of material class
"""
# Sanitize the material names
mat = _sanitize_material_names(mat)

if ptype == "wppf":
params = Parameters()
elif ptype == "lmfit":
Expand Down Expand Up @@ -659,6 +664,8 @@ def _generate_default_parameters_Rietveld(mat,
@details: generate a default parameter class given a list/dict/
single instance of material class
"""
mat = _sanitize_material_names(mat)

params = _generate_default_parameters_LeBail(mat,
peakshape,
bkgmethod,
Expand Down Expand Up @@ -932,6 +939,27 @@ def _add_intensity_parameters(params,hkls,Icalc,prefix):
[params.add(name=pname[i],
value=Icalc[p][k][i],
min=0.0) for i in range(shape)]


def _sanitize_material_names(mats):
if isinstance(mats, Material):
if '-' in mats.name:
mats = copy.deepcopy(mats)
mats.name = mats.name.replace('-', '_')
elif isinstance(mats, (list, dict)):
mats = copy.deepcopy(mats)
if isinstance(mats, list):
mats_iter = mats
else:
mats_iter = mats.values()

for mat in mats_iter:
if '-' in mat.name:
mat.name = mat.name.replace('-', '_')

return mats


background_methods = {
'spline': None,

Expand Down
Loading