Re: [yt-users] Dark matter + yt
Hi Elizabeth,
Does yt have trouble if there is no gas but only particles in an output? I'm seeing:
In [2]: fn="Gasoline_32static_dmonly_0000"
In [3]: pf = load(fn)
In [4]: pc = PlotCollection(pf) yt INFO 2010-08-20 17:32:36,447 Getting the binary hierarchy yt INFO 2010-08-20 17:32:36,451 Finished with binary hierarchy reading --------------------------------------------------------------------------- NeedsDataField Traceback (most recent call last)
/1/home/taskere/yt/src/yt-1.7-svn/scripts/iyt in <module>() ----> 1 2 3 4 5
/1/home/taskere/yt/src/yt-1.7-svn/yt/raven/plot_collection.py in __init__(self, pf, center) 81 self.pf = pf 82 if center == None: ---> 83 v,self.c = pf.h.find_max("Density") # @todo: ensure no caching 84 elif center == "center" or center == "c": 85 self.c = (pf["DomainRightEdge"] + pf["DomainLeftEdge"])/2.0
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/object_finding_mixin.py in find_max(self, field, finest_levels) 53 if (field, finest_levels) in self._max_locations: 54 return self._max_locations[(field, finest_levels)] ---> 55 mg, mc, mv, pos = self.find_max_cell_location(field, finest_levels) 56 self._max_locations[(field, finest_levels)] = (mv, pos) 57 return mv, pos
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/object_finding_mixin.py in find_max_cell_location(self, field, finest_levels) 66 len(source._grids), field) 67 max_val, maxi, mx, my, mz, mg = \ ---> 68 source.quantities["MaxLocation"]( field, lazy_reader=True) 69 max_grid = self.grids[mg] 70 mc = na.unravel_index(maxi, max_grid.ActiveDimensions)
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/DerivedQuantities.py in __call__(self, *args, **kwargs) 70 self._data_source.pf.h.io) 71 if lazy_reader and not self.force_unlazy: ---> 72 return self._call_func_lazy(args, kwargs) 73 else: 74 return self._call_func_unlazy(args, kwargs)
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/DerivedQuantities.py in _call_func_lazy(self, args, kwargs) 77 self.retvals = [ [] for i in range(self.n_ret)] 78 for gi,g in enumerate(self._get_grids()): ---> 79 rv = self.func(GridChildMaskWrapper(g, self._data_source), *args, **kwargs) 80 for i in range(self.n_ret): self.retvals[i].append(rv[i]) 81 g.clear_data()
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/DerivedQuantities.py in _MaxLocation(data, field) 445 """ 446 ma, maxi, mx, my, mz, mg = -1e90, -1, -1, -1, -1, -1 --> 447 if data[field].size > 0: 448 maxi = na.argmax(data[field]) 449 ma = data[field][maxi]
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/DerivedQuantities.py in __getitem__(self, item) 41 return getattr(self.grid, attr) 42 def __getitem__(self, item): ---> 43 return self.data_source._get_data_from_grid(self.grid, item) 44 45 class DerivedQuantity(ParallelAnalysisInterface):
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/BaseDataTypes.py in save_state(self, grid, field) 41 old_keys = grid.data.keys() 42 grid.field_parameters = self.field_parameters ---> 43 tr = func(self, grid, field) 44 grid.field_parameters = old_params 45 grid.data = dict( [(k, grid.data[k]) for k in old_keys] )
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/BaseDataTypes.py in _get_data_from_grid(self, grid, field) 1681 else: 1682 pointI = self._get_point_indices(grid) -> 1683 if grid[field].size == 1: # dx, dy, dz, cellvolume 1684 t = grid[field] * na.ones(grid.ActiveDimensions, dtype='float64') 1685 return t[pointI].ravel()
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/BaseGridType.py in __getitem__(self, key) 133 """ 134 if not self.data.has_key(key): --> 135 self.get_data(key) 136 return self.data[key] 137
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/BaseGridType.py in get_data(self, field) 176 else: raise 177 else: --> 178 self._generate_field(field) 179 return self.data[field] 180
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/BaseGridType.py in _generate_field(self, field) 111 # First we check the validator 112 try: --> 113 self.pf.field_info[field].check_available(self) 114 except NeedsGridType, ngt_exception: 115 # This is only going to be raised if n_gz > 0
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/field_info_container.py in check_available(self, data) 283 """ 284 for validator in self.validators: --> 285 validator(data) 286 # If we don't get an exception, we're good to go 287 return True
/1/home/taskere/yt/src/yt-1.7-svn/yt/lagos/field_info_container.py in __call__(self, data) 381 doesnt_have.append(f) 382 if len(doesnt_have) > 0: --> 383 raise NeedsDataField(doesnt_have) 384 return True 385
NeedsDataField: (['Density'])
Which looks like it is requiring a density field?
Elizabeth
Yup, it's trying to center on the most dense point. You can specify a center with: pc = PlotCollection(pf, center = [0.5, 0.5, 0.5]) I believe it has correctly guessed the data type, but if you run into another issue with this try: pf = EnzoStaticOutput(fn, data_style="enzo_packed_3d") Best, Matt
participants (1)
-
Matthew Turk