<div dir="ltr"><div><div><div>Dear Kacper,<br><br></div>My logic was wrong, and yours is right. But with the following code <br><br>@derived_field(name = "MyField")<br>def my_new_field(field, data):<br>    temp = data["MachNumber"].copy().fill(5.446361E-01)<br>
    #print temp<br>    ind = np.where(data["MachNumber"] < 2)<br>    temp[ind] = 1.9564E-3*((data["MachNumber"][ind]**2) - 1)<br>    ind = np.where((data["MachNumber"] >= 2) and (data["MachNumber"]) < 100)<br>
    temp[ind] = (5.699327E-1*((data["MachNumber"][ind]-1)**4))/(data["MachNumber"][ind]**4) - (3.337557E-1* ((data["MachNumber"][ind]-1)**3))/((data["MachNumber"][ind])**4) + (4.173271E+0* ((data["MachNumber"][ind]-1)**2))/((data["MachNumber"][ind])**4) - (9.775620E+0* ((data["MachNumber"][ind]-1)))/((data["MachNumber"][ind])**4)+ 5.455605E+0/(data["MachNumber"][ind])**4<br>
    return temp<br><br></div>I am getting this  Traceback<br><br> line 41, in my_new_field<br>    temp[ind] = 1.9564E-3*((data["MachNumber"][ind]**2) - 1)<br>TypeError: 'NoneType' object does not support item assignment<br>
<br></div>Would you suggest any solution?<br><div><div><br></div></div></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>