[yt-users] yt.utilities.amr_utils

Michael Kuhlen mqk at astro.berkeley.edu
Tue Jan 22 10:10:03 PST 2013


One more thing. Adding

    try:
        data.NumberOfParticles
    except AttributeError:
        return blank

before "if data.NumberOfParticles == 0: return blank" allows the projection
to complete without errors even with ValidateSpatial(0). This might work as
a stopgap.


On Tue, Jan 22, 2013 at 9:57 AM, Michael Kuhlen <mqk at astro.berkeley.edu>wrote:

> Hi Matt
>
> First, I got the idea for ValidateGridType from the definition of the
> field "particle_density" in yt/data_objects/universal_fields.py, which uses
> data.NumerOfParticles and does not result in an error with
> AMRSmoothedCoveringGrid. So I guess that field also returns interpolated
> particle density?
>
> Secondly, simply commenting out the test for NumberOfParticles == 0
> doesn't work, "DataCubeError: CombineGrids: Three dimensions required for
> g_data[0]." Let me know if you want the full traceback.
>
> Btw, here's an example script with which you should be able to reproduce
> the error: http://paste.yt-project.org/show/3069/
>
> Mike
>
>
> On Tue, Jan 22, 2013 at 2:10 AM, Matthew Turk <matthewturk at gmail.com>wrote:
>
>> Hi Mike,
>>
>> I think that the checks for .NumberOfParticles may be unnecessary in
>> the dm_density calls.  Removing those, and simply returning an empty
>> deposition field if there are no particles, will likely give the same
>> results as what it currently does.  Switching between ValidateGridType
>> and ValidateSpatial will turn on/off fields in ways I think we may
>> want to avoid.  For particle density fields specifically it would
>> likely result in estimates for particle density that are generated at
>> a coarser level then interpolated to a finer level.
>>
>> -Matt
>>
>> On Tue, Jan 22, 2013 at 1:38 AM, Michael Kuhlen <mqk at astro.berkeley.edu>
>> wrote:
>> > Sorry to revive this old(ish) thread, but I've been experiencing similar
>> > troubles to Renyue's. Mine, however, were not completely fixed by
>> switching
>> > from yt.utilities.amr_utils to yt.utilities.lib. I was still getting
>> this
>> > error:
>> >
>> > AttributeError: 'AMRSmoothedCoveringGrid' object has no attribute
>> > 'NumberOfParticles'
>> >
>> > The solution for me was to switch from validators=[ValidateSpatial(0)]
>> to
>> > validators=[ValidateGridType()] in the add_field() call. Since many of
>> the
>> > fields defined in yt/frontends/*/fields.py still use
>> ValidateSpatial(0), I'm
>> > getting the same NumberOfParticles AttributeError when I try to do
>> volume
>> > renderings of "built-in" fields like dm_density.
>> >
>> > Cheers,
>> > Mike
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Sun, Jan 13, 2013 at 1:11 PM, Renyue Cen <cen at astro.princeton.edu>
>> wrote:
>> >>
>> >> HI Matt,
>> >>
>> >> That worked (after I remove the following things that I added following
>> >> the line " from yt.utilities.lib import CICDeposit_3":
>> >> #from yt.utilities.cosmology import Cosmology
>> >> #from field_info_container import \
>> >> #    add_field, \
>> >> #    ValidateDataField, \
>> >> #    ValidateGridType, \
>> >> #    ValidateParameter, \
>> >> #    ValidateSpatial, \
>> >> #    NeedsGridType, \
>> >> #    NeedsOriginalGrid, \
>> >> #    NeedsDataField, \
>> >> #    NeedsProperty, \
>> >> #    NeedsParameter
>> >>
>> >> which was copied elsewhere earlier and apparent messed up with the
>> >> CICDeposit_3 import a line before.
>> >>
>> >> Thanks very much,
>> >> Renyue
>> >>
>> >>
>> >> On Jan 13, 2013, at 3:35 PM, Matthew Turk wrote:
>> >>
>> >> > Hi Renyue,
>> >> >
>> >> > No, that should work.  What I'm actually seeing now is that you do in
>> >> > fact use amr_utils -- I missed this before -- to get the
>> CICDeposit_3.
>> >> > The exception from the NameError is probably killing its
>> >> > availability.
>> >> >
>> >> > So here's what to do:
>> >> >
>> >> > 1) Replace your previous import, which I suggested you remove, of
>> >> > yt.utilities.amr_utils with:
>> >> >
>> >> > from yt.utilities.lib import CICDeposit_3
>> >> >
>> >> > 2) Change your call to CICDeposit_3 from amr_utils.CICDeposit_3 to
>> >> > CICDeposit_3
>> >> >
>> >> > And try again?
>> >> >
>> >> > -Matt
>> >> >
>> >> > On Sun, Jan 13, 2013 at 3:31 PM, Renyue Cen <cen at astro.princeton.edu
>> >
>> >> > wrote:
>> >> >> Hi Matt,
>> >> >>
>> >> >> This field (SFRdensity) was defined before the
>> >> >> pf = ...
>> >> >> statement, along with some other simpler definitions of gas
>> variables
>> >> >> that did not require CIC
>> >> >> and seem to work.
>> >> >>
>> >> >> Was I using the wrong syntax or something?
>> >> >>
>> >> >> Renyue
>> >> >>
>> >> >> On Jan 13, 2013, at 3:25 PM, Matthew Turk wrote:
>> >> >>
>> >> >>> Hi Renyue,
>> >> >>>
>> >> >>> One important thing to note is that the field has to be added
>> before
>> >> >>> you instantiate the parameter file; i.e., you must do:
>> >> >>>
>> >> >>> add_field( ... )
>> >> >>> pf = ...
>> >> >>>
>> >> >>> because the parameter file, upon creation of the hierarchy,
>> performs
>> >> >>> an auto-detection step.  This auto-detection step determines which
>> >> >>> fields are available based on their dependencies.
>> >> >>>
>> >> >>> -Matt
>> >> >>>
>> >> >>> On Sun, Jan 13, 2013 at 3:22 PM, Renyue Cen <
>> cen at astro.princeton.edu>
>> >> >>> wrote:
>> >> >>>> Hi Matt,
>> >> >>>>
>> >> >>>> It seems that my attempt to reuse "star_density" for a subset of
>> >> >>>> stars does not work:
>> >> >>>> "star_density" remains the density of all stars when plotted.
>> >> >>>> But I also failed to redefine a new density that is called
>> >> >>>> "SFRdensity" and feed it to AMRKDTree which is in turn
>> >> >>>> fed to camera to volume render. Here is what I did:
>> >> >>>>
>> >> >>>> def _convertDensity(data):
>> >> >>>>   return data.convert("Density")
>> >> >>>> def _SFRdensity(field, data):
>> >> >>>>   blank = na.zeros(data.ActiveDimensions, dtype='float32')
>> >> >>>>   if data.NumberOfParticles == 0: return blank
>> >> >>>> #   filter  = data.pf.time_units['years']*(data.pf.current_time -
>> >> >>>> data['creation_time']) < 1.e8
>> >> >>>>   filter  = data.pf.time_units['years']*(data.pf.current_time -
>> >> >>>> data['creation_time']) < 1.e6
>> >> >>>>   if not filter.any(): return blank
>> >> >>>>
>> >> >>>>
>> amr_utils.CICDeposit_3(data["particle_position_x"][filter].astype(na.float64),
>> >> >>>>
>> >> >>>> data["particle_position_y"][filter].astype(na.float64),
>> >> >>>>
>> >> >>>> data["particle_position_z"][filter].astype(na.float64),
>> >> >>>>
>> >> >>>> data["particle_mass"][filter].astype(na.float32),
>> >> >>>>                          na.int64(na.where(filter)[0].size),
>> >> >>>>                          blank,
>> >> >>>> na.array(data.LeftEdge).astype(na.float64),
>> >> >>>>
>> >> >>>> na.array(data.ActiveDimensions).astype(na.int32),
>> >> >>>>                          na.float64(data['dx']))
>> >> >>>>   return blank
>> >> >>>> add_field("SFRdensity", function=_SFRdensity,
>> >> >>>>         validators=[ValidateSpatial(0)],
>> >> >>>> convert_function=_convertDensity)
>> >> >>>>
>> >> >>>>   volume3 = AMRKDTree(pf, fields=["SFRdensity"]
>> >> >>>>              ,no_ghost=False, tree_type="domain"
>> >> >>>>              ,le=c-0.5*WW, re=c+0.5*WW)
>> >> >>>>   cam = pf.h.camera(c, L, W, (Nvec,Nvec), tf3, volume=volume3,
>> >> >>>> no_ghost=False,log_fields=None
>> >> >>>>                 ,north_vector=dir)
>> >> >>>>
>> >> >>>>
>> >> >>>> with the following error message:
>> >> >>>>
>> >> >>>> Traceback (most recent call last):
>> >> >>>> File "SFR.py", line 393, in <module>
>> >> >>>>   ,le=c-0.5*WW, re=c+0.5*WW)
>> >> >>>> File
>> >> >>>>
>> "/u/jhwise/local/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/utilities/amr_kdtree/amr_kdtree.py",
>> >> >>>> line 316, in __init__
>> >> >>>>   for field in self.fields]
>> >> >>>> File
>> >> >>>>
>> "/u/jhwise/local/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/field_info_container.py",
>> >> >>>> line 71, in __missing__
>> >> >>>>   return self.fallback[key]
>> >> >>>> File
>> >> >>>>
>> "/u/jhwise/local/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/field_info_container.py",
>> >> >>>> line 71, in __missing__
>> >> >>>>   return self.fallback[key]
>> >> >>>> File
>> >> >>>>
>> "/u/jhwise/local/lib/python2.7/site-packages/yt-2.4-py2.7-linux-x86_64.egg/yt/data_objects/field_info_container.py",
>> >> >>>> line 70, in __missing__
>> >> >>>>   raise KeyError("No field named %s" % key)
>> >> >>>> KeyError: 'No field named SFRdensity'
>> >> >>>>
>> >> >>>>
>> >> >>>> So I must be doing something wrong with defining the SFRdensity
>> >> >>>> field.
>> >> >>>>
>> >> >>>> Thanks very much,
>> >> >>>> Renyue
>> >> >>>>
>> >> >>>>
>> >> >>>> On Jan 13, 2013, at 1:20 PM, Matthew Turk wrote:
>> >> >>>>
>> >> >>>>> Hi Renyue,
>> >> >>>>>
>> >> >>>>> The module amr_utils became lib a while back.  But my guess is
>> that
>> >> >>>>> you probably don't need to import it anyway, unless you are
>> >> >>>>> explicitly
>> >> >>>>> using one of the routines it provides.
>> >> >>>>>
>> >> >>>>> -Matt
>> >> >>>>>
>> >> >>>>> On Sun, Jan 13, 2013 at 12:18 PM, Renyue Cen
>> >> >>>>> <cen at astro.princeton.edu> wrote:
>> >> >>>>>> Hi,
>> >> >>>>>>
>> >> >>>>>> I am trying to compute gridded density of some subset of
>> particles.
>> >> >>>>>> So I tried to import some modules first in the python script as
>> >> >>>>>> follows:
>> >> >>>>>>
>> >> >>>>>> from yt.data_objects.field_info_container import \
>> >> >>>>>>  FieldInfoContainer, \
>> >> >>>>>>  NullFunc, \
>> >> >>>>>>  TranslationFunc, \
>> >> >>>>>>  FieldInfo, \
>> >> >>>>>>  ValidateParameter, \
>> >> >>>>>>  ValidateDataField, \
>> >> >>>>>>  ValidateProperty, \
>> >> >>>>>>  ValidateSpatial, \
>> >> >>>>>>  ValidateGridType
>> >> >>>>>> import yt.data_objects.universal_fields
>> >> >>>>>> from yt.utilities.physical_constants import mh
>> >> >>>>>> from yt.funcs import *
>> >> >>>>>> import yt.utilities.amr_utils as amr_utils
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> But I got this error message:
>> >> >>>>>>
>> >> >>>>>> Traceback (most recent call last):
>> >> >>>>>> File "SFR.py", line 28, in <module>
>> >> >>>>>>  import yt.utilities.amr_utils as amr_utils
>> >> >>>>>> ImportError: No module named amr_utils
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> Am I doing something wrong?
>> >> >>>>>>
>> >> >>>>>> Thanks,
>> >> >>>>>> Renyue
>> >> >>>>
>> >> >>
>> >>
>> >> _______________________________________________
>> >> yt-users mailing list
>> >> yt-users at lists.spacepope.org
>> >> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>> >
>> >
>> >
>> >
>> > --
>> > *********************************************************************
>> > *                                                                   *
>> > *  Dr. Michael Kuhlen              Theoretical Astrophysics Center  *
>> > *  email: mqk at astro.berkeley.edu   UC Berkeley                      *
>> > *  cell phone: (831) 588-1468      B-116 Hearst Field Annex # 3411  *
>> > *  skype username: mikekuhlen      Berkeley, CA 94720               *
>> > *                                                                   *
>> > *********************************************************************
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>
>
>
> --
> *********************************************************************
> *                                                                   *
> *  Dr. Michael Kuhlen              Theoretical Astrophysics Center  *
> *  email: mqk at astro.berkeley.edu   UC Berkeley                      *
> *  cell phone: (831) 588-1468      B-116 Hearst Field Annex # 3411  *
> *  skype username: mikekuhlen      Berkeley, CA 94720               *
> *                                                                   *
> *********************************************************************
>



-- 
*********************************************************************
*                                                                   *
*  Dr. Michael Kuhlen              Theoretical Astrophysics Center  *
*  email: mqk at astro.berkeley.edu   UC Berkeley                      *
*  cell phone: (831) 588-1468      B-116 Hearst Field Annex # 3411  *
*  skype username: mikekuhlen      Berkeley, CA 94720               *
*                                                                   *
*********************************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130122/3272a295/attachment.html>


More information about the yt-users mailing list