<div dir="ltr"><div>Dear Kacper,<br><br></div>Thanks thanks a lot... by combining your and my code I sussed in creating my derived field. The new code is follows.... <br><br>@derived_field(name = "MyField")<br>def my_new_field(field, data):<br>
    if np.where(data["MachNumber"] <= 2):<br>        return (.5* data["MachNumber"]) * data["Temperature"]<br>    elif np.where(data["MachNumber"] <= 100):<br>        return (.5* (data["MachNumber"])**4) + (.5* (data["MachNumber"])**3)<br>
    else:<br>        return 5.446361E-01 <br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 21, 2013 at 4:07 PM, Kacper Kowalik <span dir="ltr"><<a href="mailto:xarthisius.kk@gmail.com" target="_blank">xarthisius.kk@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 10/21/2013 12:31 PM, Reju Sam John wrote:<br>
> Dear Kacper,<br>
>  This is my backtrace....<br>
><br>
> Traceback (most recent call last):<br>
>   File "cosmic_ray_fra.py", line 50, in <module><br>
>     p = pc.add_slice("MyField", 2)<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/visualization/plot_collection.py",<br>
> line 430, in add_slice<br>
>     center=center, **field_parameters)<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",<br>
> line 1058, in __init__<br>
>     self._refresh_data()<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",<br>
> line 320, in _refresh_data<br>
>     self.get_data()<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",<br>
> line 859, in get_data<br>
>     if self._generate_field(field):<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",<br>
> line 362, in _generate_field<br>
>     self[field] = self.pf.field_info[field](self)<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/field_info_container.py",<br>
> line 395, in __call__<br>
>     dd = self._function(self, data)<br>
>   File "cosmic_ray_fra.py", line 32, in my_new_field<br>
>     if <a href="http://data.pf" target="_blank">data.pf</a>["MachNumber"] < 2:<br>
>   File<br>
> "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/static_output.py",<br>
> line 147, in __getitem__<br>
>     raise KeyError(key)<br>
> KeyError: 'MachNumber'<br>
<br>
</div></div>Yeah, that pretty much says that there's no such thing as<br>
<a href="http://data.pf" target="_blank">data.pf</a>["MachNumber"]. Please try the derived field that I've suggested<br>
in my previous mail.<br>
Cheers,<br>
Kacper<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> On Mon, Oct 21, 2013 at 2:58 PM, Kacper Kowalik <<a href="mailto:xarthisius.kk@gmail.com">xarthisius.kk@gmail.com</a>>wrote:<br>
><br>
>> On 10/21/2013 11:10 AM, Reju Sam John wrote:<br>
>>> Dear all,<br>
>>><br>
>>> I would like to create a derived field which should return a value<br>
>>> according to specified conditions. My definition of new field is shown<br>
>>> below.. But it is giving error.<br>
>>><br>
>>><br>
>>> @derived_field(name = "MyField")<br>
>>> def my_new_field(field, data):<br>
>>>     if <a href="http://data.pf" target="_blank">data.pf</a>["MachNumber"] < 2 :<br>
>>>         return (.5* (data["MachNumber"])**2) - 1<br>
>>>     elif <a href="http://data.pf" target="_blank">data.pf</a>["MachNumber"] < 100 :<br>
>>>         return (.5* (data["MachNumber"])**4) + (.5*<br>
>> (data["MachNumber"])**3)<br>
>>>     else:<br>
>>>        return 5.446361E-01<br>
>>><br>
>>><br>
>>><br>
>>> Please suggest me how to implement if, elif, else statements in creating<br>
>> a<br>
>>> derived field.<br>
>><br>
>> Hi,<br>
>> your derived fields looks fine (except for missing space in the<br>
>> indentation of the last statement). Could you attach the backtrace?<br>
>><br>
>> One thing that's confusing me is '<a href="http://data.pf" target="_blank">data.pf</a>["MachNumber"]'. Do you have a<br>
>> global parameter with such name defined or you'd rather create a MyField<br>
>> based on local value of "MachNumber" field?<br>
>> If the latter you could try something like this:<br>
>><br>
>> @derived_field(name = "MyField")<br>
>> def my_new_field(field, data):<br>
>>     temp = data["MachNumber"].copy().fill(5.446361E-01)<br>
>>     ind = np.where(data["MachNumber"] < 2)<br>
>>     temp[ind] = 0.5 * data["MachNumber"][ind] ** 2 - 1.0<br>
>>     ind = np.where((data["MachNumber"] >= 2) &<br>
>>                    (data["MachNumber"]) < 100))<br>
>>     temp[ind] = 0.5 * data["MachNumber"][ind] ** 4 + \<br>
>>                 0.5 * data["MachNumber"][ind] ** 3<br>
>>     return temp<br>
>><br>
>><br>
>> Cheers,<br>
>> Kacper<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> yt-users mailing list<br>
>> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
>> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
>><br>
>><br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> yt-users mailing list<br>
> <a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
> <a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
><br>
<br>
<br>
</div></div><br>_______________________________________________<br>
yt-users mailing list<br>
<a href="mailto:yt-users@lists.spacepope.org">yt-users@lists.spacepope.org</a><br>
<a href="http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">Reju Sam John</div>
</div>