Martin, this option is really appealing for me; I think I would learn
using meep one third faster if I used named parameters intensively.
Can you please send me a patch for SWIG, if it does not take too much
time? I would try to rebuild python-meep myself; maybe I could even
make a PPA. Last python-meep version was released one year ago...
Filip

2012/2/13, Martin Fiers <[email protected]>:
> Dear Dominec,
>
> This type of code is automatically generated by SWIG. So no need to do
> this manually. Just including the kwargs feature should do the trick,
> and is the most clean and effective way to include keyword arguments in
> python-meep.
>
> Regards,
> Martin Fiers
>
>
> On 13-02-12 14:19, Filip Dominec wrote:
>> These are good news! After writing the previous e-mail, I looked on how
>> keyword arguments could be processed by the C++ code of the _meep.so
>> module backend. This would be probably another way to go.
>> (http://docs.python.org/extending/extending.html#keyword-parameters-for-extension-functions)
>> However, I have no experience with SWIG and I cannot decide which way
>> would be the most clean and effective.
>>
>> If the python-meep module is improved this way, it would be also useful to
>> update the documentation to use the shorter function calls.
>>
>> Filip
>>
>>
>> On Mon, 13 Feb 2012 14:05:31 +0100
>> Martin Fiers<[email protected]>  wrote:
>>> Dear Dominec,
>>>
>>> I am sure this is possible. I use SWIG and I can pass my arguments to
>>> the python-interface using this (I define it right after the %module):
>>>
>>> %feature("kwargs");
>>>
>>> By using this feature, C++ function parameter names automatically
>>> become the argument name accessible in Python.
>>> I can get this in the signature (e.g. in an ODE solver I wrote):
>>>
>>> def solve_for_dt_src(self, *args, **kwargs):
>>>      """solve(self, npy_cdouble src, double t, double dt)"""<----
>>> this is due to autodoc (read further on)
>>>      return _solvers.something_solve_for_dt_src(self, *args, **kwargs)
>>>
>>> It will check whether the kwargs are correct. So writing
>>>>>> solve(dtt=0.3)
>>> will fail because it doesn't recognize dtt.
>>>
>>> In addition, using autodoc can be useful (see
>>> http://www.swig.org/Doc1.3/Python.html#Python_nn69):
>>> %feature("autodoc", "1");
>>>
>>> I hope this helps,
>>>
>>> Regards,
>>> Martin Fiers
>>>
>>> 2012/2/13 Filip Dominec<[email protected]>:
>>>> Hi,
>>>> I am learning to simulate electrodynamics in python-meep. I observed
>>>> that very often people define a variable and then they pass its value to
>>>> a function so that they know what each parameter means.
>>>>
>>>> Although this is surely better than just providing unnamed numbers, the
>>>> correct pythonic way is AFAIK to use parameter names even for
>>>> non-keyword parameters, e. g.
>>>>
>>>>>>> def a(x,y): return x**y
>>>>>>> a(10,2)
>>>> 100
>>>>>>> a(y=2, x=10)
>>>> 100
>>>>
>>>> If python-meep programs could be written with all parameters named, it
>>>> would increase readability a lot. (I can see that the meep module passes
>>>> the argument as dictionary to the compiled backend, which is somehow
>>>> processed by SWIG, so this may not be possible at all.) Do you think
>>>> this this can be done?
>>>>
>>>> Filip
>>>>
>>>> _______________________________________________
>>>> meep-discuss mailing list
>>>> [email protected]
>>>> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
>> _______________________________________________
>> meep-discuss mailing list
>> [email protected]
>> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
>
>
> _______________________________________________
> meep-discuss mailing list
> [email protected]
> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss
>

_______________________________________________
meep-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to