Source code for sas.sascalc.fit.pluginmodel
from sas.sascalc.calculator.BaseComponent import BaseComponent
import math
[docs]class Model1DPlugin(BaseComponent):
is_multiplicity_model = False
## Name of the model
[docs] def __init__(self , name="Plugin Model" ):
""" Initialization """
BaseComponent.__init__(self)
self.name = name
self.details = {}
self.params = {}
self.description = 'plugin model'
[docs] def function(self, x):
"""
Function to be implemented by the plug-in writer
"""
return x
[docs] def run(self, x = 0.0):
"""
Evaluate the model
:param x: input x, or [x, phi] [radian]
:return: function value
"""
if x.__class__.__name__ == 'list':
x_val = x[0]*math.cos(x[1])
y_val = x[0]*math.sin(x[1])
return self.function(x_val)*self.function(y_val)
elif x.__class__.__name__ == 'tuple':
raise ValueError("Tuples are not allowed as input to BaseComponent models")
else:
return self.function(x)
[docs] def runXY(self, x = 0.0):
"""
Evaluate the model
:param x: input x, or [x, y]
:return: function value
"""
if x.__class__.__name__ == 'list':
return self.function(x[0])*self.function(x[1])
elif x.__class__.__name__ == 'tuple':
raise ValueError("Tuples are not allowed as input to BaseComponent models")
else:
return self.function(x)
[docs] def set_details(self):
"""
Set default details
"""
if not self.params:
return {}
for key in self.params.keys():
self.details[key] = ['', None, None]