In [5]:
import vibration_toolbox as vtb
from inspect import signature
import inspect

In [2]:
sig = signature(vtb.time_plot)

In [3]:
for name, param in sig.parameters.items():
    print(param.kind, ':', name, '=', param.default)


POSITIONAL_OR_KEYWORD : m = 10
POSITIONAL_OR_KEYWORD : c = 1
POSITIONAL_OR_KEYWORD : k = 100
POSITIONAL_OR_KEYWORD : x0 = 1
POSITIONAL_OR_KEYWORD : v0 = -1
POSITIONAL_OR_KEYWORD : max_time = 100

In [4]:
def sdfunc(t, y):
    return -y

In [6]:
sig = inspect.signature(sdfunc)

In [7]:
sig


Out[7]:
<Signature (t, y)>

In [10]:
for name, param in sig.parameters.items():
    print(param.kind, ':', name, name, '=', param.default)


POSITIONAL_OR_KEYWORD : t t = <class 'inspect._empty'>
POSITIONAL_OR_KEYWORD : y y = <class 'inspect._empty'>

In [12]:
sig.parameters.items()[0]


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-02d5af478c56> in <module>()
----> 1 sig.parameters.items()[0]

TypeError: 'odict_items' object does not support indexing

In [14]:
for name, param in sig.parameters.items():
    print(param.kind, ':', name, '=', param.default)


POSITIONAL_OR_KEYWORD : t t = <class 'inspect._empty'>
POSITIONAL_OR_KEYWORD : y y = <class 'inspect._empty'>

In [19]:
sig.parameters['t']


Out[19]:
<Parameter "t">

In [21]:
sig.parameters.items()


Out[21]:
odict_items([('t', <Parameter "t">), ('y', <Parameter "y">)])

In [34]:
list(sig.parameters.keys())[1] is 'y'


Out[34]:
True

In [38]:
call_parameters = list(sig.parameters.keys())
call_parameters


Out[38]:
['t', 'y']

In [40]:
len(call_parameters)


Out[40]:
2

In [30]:
def newfunc(x, t, params = {}):
    return sdfunc(t, x)

In [31]:
sdfunc(1,0)


Out[31]:
0

In [32]:
newfunc(1,0)


Out[32]:
-1

In [33]:
sdfunc(0,1)


Out[33]:
-1

In [57]:
params = {'t':1, 'y': 2}

In [42]:
params['t']


Out[42]:
1

In [46]:
for k, v in params.items():
    exec("%s = %s" % (k, v))

In [44]:
params.items()


Out[44]:
dict_items([('t', 1), ('x', 2)])

In [47]:
t


Out[47]:
1

In [48]:
x


Out[48]:
2

In [49]:
params


Out[49]:
{'t': 1, 'x': 2}

In [53]:
params['t'], params['x']


Out[53]:
(1, 2)

In [61]:
a =[params[x] for x in call_parameters]

In [55]:
call_parameters


Out[55]:
['t', 'y']

In [56]:
params


Out[56]:
{'t': 1, 'x': 2}

In [63]:
sdfunc(*a)


Out[63]:
-2

In [66]:
import mousai as ms

In [67]:
ms.duff_osc


Out[67]:
<function mousai.har_bal.duff_osc(x, v, params)>

In [68]:


In [75]:
from numpy import sin

In [78]:
def duff_osc_ss(x, params):  # params is a dictionary of parameters
    omega = params['omega']  # `omega` will be put into the dictionary
                                     # for you
    t = params['cur_time']   # The time value is available as
                                     # `cur_time` in the dictionary
    x_dot = np.array([[x[1]],
                              [-x[0]-.1*x[0]**3-.1*x[1]+1*sin(omega*t)]])
    return x_dot

In [79]:
function = duff_osc_ss
function(np.array([1,1]), params = {'cur_time':1, 'omega':2})


Out[79]:
array([[ 1.        ],
       [-0.29070257]])

In [81]:
def new_sdfunc(x, t, params):
    params['cur_time'] = t
    return function(x, params)

In [83]:
new_sdfunc(np.array([1,1]), 1, params = {'cur_time':1, 'omega':2})


Out[83]:
array([[ 1.        ],
       [-0.29070257]])

In [86]:
print("""hello\
world""")


helloworld

In [87]:
params


Out[87]:
{'t': 1, 'y': 2, 'cur_time': 1}

In [90]:
params(2)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-90-c33898736afb> in <module>()
----> 1 params(2)

TypeError: 'dict' object is not callable

In [105]:
if 'sdfunc_params' not in globals():
    print("Define your parameters in the user created `sdfunc_params⁠⁠`",
          "dictionary.")
    sdfunc_params = {}


Define your parameters in the user created `sdfunc_params⁠⁠` dictionary.

In [104]:
del(sdfunc_params)

In [109]:
import numpy as np

In [110]:
np.arctan2(1,1)


Out[110]:
0.7853981633974483

In [114]:
fun = lambda x: np.arctan2(1,x)

In [115]:
fun(1)


Out[115]:
0.7853981633974483

In [116]:
fun(2)


Out[116]:
0.4636476090008061

In [ ]: