<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 24, 2015 at 9:10 AM, Kacper Kowalik <span dir="ltr"><<a href="mailto:xarthisius.kk@gmail.com" target="_blank">xarthisius.kk@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
<br>
</span>I'd be strongly -1 on "force_units". In that scenario you invoke several<br>
costly calls to sympy just to disregard the result. IMO you should drop<br>
units at the very beginning and create YTArray during return in the<br>
derived field's definition.<br></blockquote><div><br></div><div>By this you mean something like:<br><br></div><div>def _temperature(field, data):</div><div>    tr = array_of_wrong_units</div><div>    data.apply_units(tr, 'K')</div><div>    return tr</div><div><br></div><div><span style="font-size:12.8px">ds.add_field('temperature', function=_temperature, units='K')</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">?</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Or is the syntax wrong here?  I'm not really sure how to use this. </span></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Cheers,<br>
Kacper<br>
<div class=""><div class="h5"><br>
> On Tue, Nov 24, 2015 at 7:32 AM, Matthew Turk <<a href="mailto:matthewturk@gmail.com">matthewturk@gmail.com</a>> wrote:<br>
><br>
>> If absolutely necessary, you can "force" units with:<br>
>><br>
>> data.apply_units(array_to_override, unit_string)<br>
>><br>
>> On Tue, Nov 24, 2015 at 9:31 AM, Cameron Hummels <<a href="mailto:chummels@gmail.com">chummels@gmail.com</a>><br>
>> wrote:<br>
>>> I would be a fan of making a "force_units" kwarg to enable one to create<br>
>> a<br>
>>> new field with different units than those specified.  This could resolve<br>
>>> some of the problems with native frontend fields being stuck in the wrong<br>
>>> unit, like I was running into last week.  As long as force_unit is off by<br>
>>> default, it would just enable us to give full control to the user.<br>
>>><br>
>>> On Tue, Nov 24, 2015 at 4:25 AM, Nathan Goldbaum <<a href="mailto:nathan12343@gmail.com">nathan12343@gmail.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> Hi Elizabeth,<br>
>>>><br>
>>>> This is discussed in the docs here:<br>
>>>><br>
>>>><br>
>>>><br>
>> <a href="http://yt-project.org/doc/developing/creating_derived_fields.html#defining-a-new-field" rel="noreferrer" target="_blank">http://yt-project.org/doc/developing/creating_derived_fields.html#defining-a-new-field</a><br>
>>>><br>
>>>> You can do one of two things. First, the way I'd handle this is to<br>
>> ensure<br>
>>>> that your field definition is returning data that have units of Kelvin.<br>
>>>><br>
>>>> For example, something like:<br>
>>>><br>
>>>>     from yt.utilities.physical_constants import kb, mh<br>
>>>><br>
>>>>     mu = 0.6<br>
>>>><br>
>>>>     @derived_field(name=‘Temp’, units=“K”)<br>
>>>>     def _Temp(field, data):<br>
>>>>         return data['thermal_energy'] / kb * mu * mh<br>
>>>><br>
>>>> You could also make mu a field parameter rather than a constant, or if<br>
>> you<br>
>>>> have a simulation where mu varies with position, make a mean molecular<br>
>>>> weight derived field.<br>
>>>><br>
>>>> You can also ensure that your field definition returning a dimensionless<br>
>>>> value by stripping the units:<br>
>>>><br>
>>>>     @derived_field(name=‘Temp’, units=“K”)<br>
>>>>     def _Temp(field, data):<br>
>>>>         ret = data['thermal_energy'])<br>
>>>>         return ret.ndarray_view()<br>
>>>><br>
>>>> We don't currently have a way to *force* the units to be whatever you<br>
>>>> specify in add_field. That said, I don't think it would be terribly<br>
>> hard to<br>
>>>> implement.<br>
>>>><br>
>>>> We already have units='auto', which forces the units to be the same as<br>
>> the<br>
>>>> return value of your field function. We might add a keyword<br>
>>>> 'force_units=True' to add_field which does what you're looking for. I'd<br>
>> be<br>
>>>> happy to review a pull request adding this, or feel free to open an<br>
>> issue<br>
>>>> about it to add to our project backlog.<br>
>>>><br>
>>>> Also, worth pointing out that this was designed this way not to anger<br>
>>>> users, but to protect them from making mistakes in their field units,<br>
>> which<br>
>>>> we found to be a common cause of bugs in yt-2. It does mean you need to<br>
>> "buy<br>
>>>> into" the unit system in your field definition, but the bonus is that<br>
>> you<br>
>>>> can be much more sure that you're not making a mistake.<br>
>>>><br>
>>>> Hope that helps,<br>
>>>><br>
>>>> Nathan<br>
>>>><br>
>>>> On Tue, Nov 24, 2015 at 12:41 AM, Elizabeth Tasker<br>
>>>> <<a href="mailto:tasker@astro1.sci.hokudai.ac.jp">tasker@astro1.sci.hokudai.ac.jp</a>> wrote:<br>
>>>>><br>
>>>>> Hi everyone,<br>
>>>>><br>
>>>>> While using yt-3, I created a derived field:<br>
>>>>><br>
>>>>> @derived_field(name=‘Temp’, units=“K”)<br>
>>>>> def _Temp …..<br>
>>>>><br>
>>>>> It crashes with a YTFieldUnitError because it believes the units should<br>
>>>>> be cm**2/s**2. I understand why yt thinks this — I’m using<br>
>> thermal_energy in<br>
>>>>> the definition for Temp. However, the units are truly Kelvin and I<br>
>> think I<br>
>>>>> should be able to specify whatever I like in “units”!<br>
>>>>><br>
>>>>> Is there a way to stop yt crashing when it disagrees with your life<br>
>>>>> choices?<br>
>>>>><br>
>>>>> Elizabeth<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" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><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" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Cameron Hummels<br>
>>> NSF Postdoctoral Fellow<br>
>>> Department of Astronomy<br>
>>> California Institute of Technology<br>
>>> <a href="http://chummels.org" rel="noreferrer" target="_blank">http://chummels.org</a><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" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><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" rel="noreferrer" 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" rel="noreferrer" 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" rel="noreferrer" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Cameron Hummels<div><span style="font-size:12.8px">NSF Postdoctoral Fellow</span></div><div><span style="font-size:12.8px">Department of Astronomy</span></div><div><span style="font-size:12.8px">California Institute of Technology</span><br></div><div><a href="http://chummels.org" style="font-size:12.8px" target="_blank">http://chummels.org</a><br></div></div></div></div>
</div></div>