Changeset e65c3ba in sasmodels for sasmodels/convert.py
- Timestamp:
- Nov 28, 2017 4:09:34 PM (6 years ago)
- Branches:
- master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 32398dc
- Parents:
- 110f69c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/convert.py
r07c8d46 re65c3ba 4 4 from __future__ import print_function, division 5 5 6 import re7 6 import math 8 7 import warnings … … 64 63 return [pk*scale for pk in par] if isinstance(par, list) else par*scale 65 64 66 def _is_sld(model_info, id):65 def _is_sld(model_info, par): 67 66 """ 68 67 Return True if parameter is a magnetic magnitude or SLD parameter. 69 68 """ 70 if id.startswith('M0:'):69 if par.startswith('M0:'): 71 70 return True 72 if '_pd' in id or '.' in id:71 if '_pd' in par or '.' in par: 73 72 return False 74 73 for p in model_info.parameters.call_parameters: 75 if p.id == id:74 if p.id == par: 76 75 return p.type == 'sld' 77 76 # check through kernel parameters in case it is a named as a vector 78 77 for p in model_info.parameters.kernel_parameters: 79 if p.id == id:78 if p.id == par: 80 79 return p.type == 'sld' 81 80 return False … … 88 87 *scale=1e-6*. For forward conversion use *scale=1e6*. 89 88 """ 90 return dict(( id, (_rescale(v, scale) if _is_sld(model_info, id) else v))91 for id, v in pars.items())92 93 94 def _get_translation_table(model_info, version=(3, 1,2)):89 return dict((par, (_rescale(v, scale) if _is_sld(model_info, par) else v)) 90 for par, v in pars.items()) 91 92 93 def _get_translation_table(model_info, version=(3, 1, 2)): 95 94 conv_param = CONVERSION_TABLE.get(version, {}).get(model_info.id, [None, {}]) 96 95 translation = conv_param[1].copy() … … 130 129 newpars = pars.copy() 131 130 for new, old in mapping.items(): 132 if old == new: continue 133 if old is None: continue 134 for underscore, dot in PD_DOT: 131 if old == new: 132 continue 133 if old is None: 134 continue 135 for _, dot in PD_DOT: 135 136 source = old+dot 136 137 if source in newpars: … … 159 160 return None 160 161 161 def _hand_convert(name, oldpars, version=(3, 1,2)):162 if version == (3, 1,2):162 def _hand_convert(name, oldpars, version=(3, 1, 2)): 163 if version == (3, 1, 2): 163 164 oldpars = _hand_convert_3_1_2_to_4_1(name, oldpars) 164 165 return oldpars … … 295 296 return oldpars 296 297 297 def convert_model(name, pars, use_underscore=False, model_version=(3, 1,2)):298 def convert_model(name, pars, use_underscore=False, model_version=(3, 1, 2)): 298 299 """ 299 300 Convert model from old style parameter names to new style. … … 327 328 newpars = _convert_pars(newpars, translation) 328 329 # TODO: Still not convinced this is the best check 329 if not model_info.structure_factor and version == (3, 1,2):330 if not model_info.structure_factor and version == (3, 1, 2): 330 331 newpars = _rescale_sld(model_info, newpars, 1e6) 331 332 newpars.setdefault('scale', 1.0) … … 615 616 print("==== %s out ====="%new_name) 616 617 print(str(compare.parlist(model_info, new_pars, True))) 617 assert name ==new_name, "%r != %r"%(name, new_name)618 assert name == new_name, "%r != %r"%(name, new_name) 618 619 for k, v in new_pars.items(): 619 620 assert k in pars, "%s: %r appeared from conversion"%(name, k) 620 621 if isinstance(v, float): 621 assert abs(v-pars[k])<=abs(1e-12*v), "%s: %r %s != %s"%(name, k, v, pars[k]) 622 assert abs(v-pars[k]) <= abs(1e-12*v), \ 623 "%s: %r %s != %s"%(name, k, v, pars[k]) 622 624 else: 623 625 assert v == pars[k], "%s: %r %s != %s"%(name, k, v, pars[k])
Note: See TracChangeset
for help on using the changeset viewer.