[yt-users] yt.utilities.amr_utils

Matthew Turk matthewturk at gmail.com
Tue Jan 22 11:55:27 PST 2013


Hi Mike,

I've created a pull request:

https://bitbucket.org/yt_analysis/yt/pull-request/407/adding-ability-to-get-particle-fields-from/diff

-Matt

On Tue, Jan 22, 2013 at 1:10 PM, Michael Kuhlen <mqk at astro.berkeley.edu> wrote:
> 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               *
> *                                                                   *
> *********************************************************************
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>



More information about the yt-users mailing list