<div dir="ltr"><div>Dear Kacper, <br></div> 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 "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/visualization/plot_collection.py", line 430, in add_slice<br>    center=center, **field_parameters)<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 1058, in __init__<br>
    self._refresh_data()<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 320, in _refresh_data<br>    self.get_data()<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 859, in get_data<br>
    if self._generate_field(field):<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 362, in _generate_field<br>    self[field] = self.pf.field_info[field](self)<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/field_info_container.py", 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">data.pf</a>["MachNumber"] < 2:<br>  File "/data1/pdf/csurajit/yt-x86_64/src/yt-hg/yt/data_objects/static_output.py", line 147, in __getitem__<br>
    raise KeyError(key)<br>KeyError: 'MachNumber'<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 21, 2013 at 2:58 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 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* (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 a<br>
> derived field.<br>
<br>
</div></div>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>
<div class="im"><br>
@derived_field(name = "MyField")<br>
def my_new_field(field, data):<br>
</div>    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></blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr">Reju Sam John</div>
</div>