My understanding is that in yt-3.0 we cannot get particles from clumps. Is that true? On Thu, Dec 18, 2014 at 9:36 AM, David Collins <dcollins4096@gmail.com> wrote:
I believe what's going on is that the object gets stuck in a mid-state of generating data and is locked. This is something that is not supposed to happen, but we should be able to fail more gracefully.
Is it stuck because it's hard to get particles directly from the clump?
For now, a workaround would be to avoid using the total_mass derived quantity and instead do something like this:
clump = ... total_mass = clump.quantity.total_quantity('cell_mass') clump['density'] clump['cell_mass']
The curious disappearing data can be seen here:
> leaf_clumps[0]['density'] YTArray([ 94330.76550569, 111095.42419888, 111000.87780872, 158489.47273191, 114487.69237444, 129849.08390983, 95651.97426045, 95462.47824957, 104785.15137116, 149758.92528478, 122558.83598019, 91829.8174425 , 97015.49553846, 118157.84068288]) g/cm**3 > leaf_clumps[0]['cell_mass'] YTArray([ 0.00070282, 0.00082773, 0.00082702, 0.00118084,
0.000853 ,
0.00096745, 0.00071266, 0.00071125, 0.00078071, 0.00111579, 0.00091313, 0.00068419, 0.00072282, 0.00088034]) g
> leaf_clumps[0].quantities.total_quantity('cell_mass') 0.0118797558199 g > leaf_clumps[0].quantities.total_mass() Traceback (most recent call last): File "<stdin>", line 1, in <module> File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 193, in __call__ rv = super(TotalMass, self).__call__(fields) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 160, in __call__ rv = super(TotalQuantity, self).__call__(fields) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 56, in __call__ sto.result = self.process_chunk(ds, *args, **kwargs) File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
line 166, in process_chunk for field in fields] File
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/data_containers.py",
line 248, in __getitem__ self.get_data(f) File
line 749, in get_data raise YTMixedCutRegion(self.conditionals, field) yt.utilities.exceptions.YTMixedCutRegion: Can't mix particle/discrete and fluid/mesh conditions or quantities. Field: ('all', 'particle_mass') and Conditions specified: obj['contours_72e8d63701e04d13bfec60cada79b7ad'] == 1
> leaf_clumps[0].quantities.total_quantity('cell_mass') 0.0 g > leaf_clumps[0]['cell_mass'] YTArray([], dtype=float64) g
The code to make the clumps
ds = yt.load(setname) val, loc = ds.find_max('density') width = (0.05,'code_length') sphere = ds.sphere(loc,width) master_clump = Clump(sphere,"density") c_min = sphere["gas", "density"].min() c_max = sphere["gas", "density"].max() step = 2.0 find_clumps(master_clump, c_min, c_max, step) leaf_clumps = get_lowest_clumps(master_clump)
I'll give that a shot in the morning and report back.
Thanks! d.
> > > If I instead try quantities.total_mass(), I get an odd error. > >>> leaf_clumps[22].quantities.total_mass() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File >
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py",
> line 193, in __call__ > rv = super(TotalMass, self).__call__(fields) > File > "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", > line 160, in __call__ > rv = super(TotalQuantity, self).__call__(fields) > File > "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", > line 56, in __call__ > sto.result = self.process_chunk(ds, *args, **kwargs) > File > "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/derived_quantities.py", > line 166, in process_chunk > for field in fields] > File > "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/data_containers.py", > line 248, in __getitem__ > self.get_data(f) > File > "/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/selection_data_containers.py", > line 749, in get_data > raise YTMixedCutRegion(self.conditionals, field) > yt.utilities.exceptions.YTMixedCutRegion: Can't mix
> and fluid/mesh conditions or > quantities. Field: ('all', 'particle_mass') and > Conditions specified: > obj['contours_8d0408a91fc34e2bbe9eb838d48de46e'] == 1
This is happening because, as the error indicates, you can't combine mesh and particle quantities in a cut_region (like a clump is). The total_mass() quantity returns the total mass in particles and gas, so that's what's triggering the error. I bet this would work if you asked for
"/home/dcollins4096/local-yt-2014-08-27/src/yt-hg/yt/data_objects/selection_data_containers.py", particle/discrete the
total gas mass only. Of course, that would only work if clump['cell_mass'] returned something sensible.
> > > > > I build the clumps in the following manner. I don't have any > validators by design. Plotting the clumps with annotate_clumps(leaf_clumps) > gives reasonable results. > > ds = yt.load(setname) > loc = ds.arr([ 0.03613281, 0.79589844, 0.03027344], > 'code_length') > width = (0.05,'code_length') > sphere = ds.sphere(loc,width) > master_clump = Clump(sphere,"density") > use_particles=False, use_thermal_energy=False) > c_min = sphere["gas", "density"].min() > c_max = sphere["gas", "density"].max() > step = 2.0 > find_clumps(master_clump, c_min, c_max, step) > leaf_clumps = get_lowest_clumps(master_clump) > > Thanks a ton! > d. > > -- > -- Sent from a computer. > > _______________________________________________ > yt-users mailing list > yt-users@lists.spacepope.org > http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org >
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
-- -- Sent from a computer.
-- -- Sent from a computer. _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
-- -- Sent from a computer.
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org