Hi Renyue It's possible that this is what's going on, but the region as a whole definitely has plenty of particles in it. Did you figure out a way around this error? Mike On Tue, Jan 22, 2013 at 5:28 AM, Renyue Cen <cen@astro.princeton.edu> wrote:
Michael,
This happens to me occasionally and I was told that it might be due to some subregions in your region that got no particles or something like that. It seems due to AMRKDTree construction, as I understand it.
Renyue
On Jan 22, 2013, at 1:38 AM, Michael Kuhlen 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@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
Hi Matt,
This field (SFRdensity) was defined before the pf = ... statement, along with some other simpler definitions of gas variables
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@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",
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",
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",
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",
On Sun, Jan 13, 2013 at 3:31 PM, Renyue Cen <cen@astro.princeton.edu> wrote: that did not require CIC line 316, in __init__ line 71, in __missing__ line 71, in __missing__ 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@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@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
-- ********************************************************************* * * * Dr. Michael Kuhlen Theoretical Astrophysics Center * * email: mqk@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@astro.berkeley.edu UC Berkeley * * cell phone: (831) 588-1468 B-116 Hearst Field Annex # 3411 * * skype username: mikekuhlen Berkeley, CA 94720 * * * *********************************************************************