<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Dear all,<br>
<br>
I want ultimately plot bound/unbound quantities such as mass, angular
momentum...<br>
Britton suggested I used the clump finder. I have read the paragraph in
the Cookbook but did not manage to make it work. See below:<br>
<br>
<br>
##########################################################################################<br>
<address>In [1]: from yt.mods import *</address>
<address><br>
In [2]: import yt.raven as R</address>
<address><br>
In [3]: fn = "DD0000/CommonEnvelope0000"</address>
<address><br>
In [4]: field = "Density"</address>
<address><br>
In [5]: step = 10.0</address>
<address><br>
In [6]: pf = load(fn)</address>
<address><br>
In [7]: whole_box = pf.h.all_data()</address>
<address>yt         INFO       2010-05-19 13:47:49,272 Getting the
binary hierarchy</address>
<address>yt         INFO       2010-05-19 13:47:49,275 Finished with
binary hierarchy reading</address>
<address><br>
In [8]: total_mass =
whole_box.quantities['TotalQuantity']('CellMassMsun')</address>
<address><br>
In [9]: data_source = pf.h.all_data()</address>
<address><br>
In [10]: master_clump = Clump(data_source, None, field)</address>
<address>yt         INFO       2010-05-19 13:47:49,371 Getting field
Density from 1</address>
<address><br>
In [11]: c_min = 10**na.floor(na.log10(data_source[field]).min()  )</address>
<address><br>
In [12]: c_max = 10**na.floor(na.log10(data_source[field]).max()+1)</address>
<address><br>
In [13]: step = 10</address>
<address><br>
In [14]: find_clumps(master_clump, c_min, c_max, step)</address>
<address>Finding clumps: min: 1.000000e-05, max: 1.000000e+03, step:
10.000000</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,908 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,910 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,916 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,920 Identified 1
contours between 1.00000e-05 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:49,931 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e-04, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,944 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,945 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,950 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,954 Identified 1
contours between 1.00000e-04 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:49,957 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e-03, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,967 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,968 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,973 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,977 Identified 1
contours between 1.00000e-03 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:49,980 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e-02, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,990 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:49,991 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:49,996 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,000 Identified 1
contours between 1.00000e-02 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:50,003 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e-01, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,013 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,014 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,019 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,023 Identified 1
contours between 1.00000e-01 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:50,026 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e+00, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,034 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,036 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,040 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,045 Identified 1
contours between 1.00000e+00 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:50,047 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e+01, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,055 Coalescing 1
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,056 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,061 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,065 Identified 1
contours between 1.00000e+01 and 1.05005e+02</address>
<address>yt         INFO       2010-05-19 13:47:50,067 Getting field
Density from 1</address>
<address>Finding clumps: min: 1.000000e+02, max: 1.000000e+03, step:
10.000000</address>
<address>Wiping out existing children clumps.</address>
<address>First pass100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>Calculating joins 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,073 Coalescing 0
joins</address>
<address>Joining 100%
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Time: 00:00:00 </address>
<address>yt         INFO       2010-05-19 13:47:50,075 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,080 Getting field
tempContours from 1</address>
<address>yt         INFO       2010-05-19 13:47:50,084 Identified 0
contours between 1.00000e+02 and 1.05005e+02</address>
<address><br>
In [15]: p = R.PlotCollection(pf)</address>
<address>yt.lagos   INFO      
2010-05-19 13:47:50,918 Max Value is 1.05005e+02 at 0.4843750000000000
0.4843750000000000 0.4843750000000000 in grid EnzoGrid_0001 at level 0
(15, 15, 15)</address>
<address>yt         INFO       2010-05-19 13:47:50,919 Created plot
collection with default plot-center = [0.484375, 0.484375, 0.484375]</address>
<address><br>
In [16]: p.add_slice("Density",2,center=[0.5, 0.5, 0.5])</address>
<address>yt         INFO       2010-05-19 13:47:51,479 Added slice of
Density at z = 0.5 with 'center' = [0.5, 0.5, 0.5]</address>
<address>Out[16]: <yt.raven.PlotTypes.SlicePlot object at
0x42f1c10></address>
<address><br>
In [17]: p.plots[-1].modify["clumps"](master_clump)</address>
<address>Out[17]: 0</address>
<address><br>
In [18]: p.save('testclumps', format = 'png')</address>
<address>ERROR: An unexpected error occurred while tokenizing input</address>
<address>The following traceback may be corrupted or invalid</address>
<address>The error message is: ('EOF in multi-line statement', (10, 0))</address>
<address><br>
---------------------------------------------------------------------------</address>
<address>TypeError                                 Traceback (most
recent call last)</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/scripts/iyt in
<module>()</address>
<address>----> 1 </address>
<address>      2 </address>
<address>      3 </address>
<address>      4 </address>
<address>      5 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/raven/PlotCollection.pyc
in save(self, basename, format, override, force_save)</address>
<address>     81             fn.append(plot.save_image(basename, \</address>
<address>     82                       format=format,
submit=self._run_id,</address>
<address>---> 83                       override=override,
force_save=force_save))</address>
<address>     84             if self.submit:</address>
<address>     85                 im = plot.im.copy()</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/raven/PlotTypes.pyc
in save_image(self, prefix, format, submit, override, force_save)</address>
<address>    116         *override* will force no filename generation
beyond the prefix.</address>
<address>    117         """</address>
<address>--> 118         self._redraw_image()</address>
<address>    119         if not override:</address>
<address>    120             self._generate_prefix(prefix)</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/raven/PlotTypes.pyc in
_redraw_image(self, *args)</address>
<address>    404            
self.norm.autoscale(na.array((newmin,newmax)))</address>
<address>    405         self._reset_image_parameters()</address>
<address>--> 406         self._run_callbacks()</address>
<address>    407 </address>
<address>    408     def _reset_image_parameters(self):</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/raven/PlotTypes.pyc in
_run_callbacks(self)</address>
<address>    259         self._axes.texts = []</address>
<address>    260         for cb in self._callbacks:</address>
<address>--> 261             cb(self)</address>
<address>    262 </address>
<address>    263     def set_label(self, label):</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/raven/Callbacks.pyc in
__call__(self, plot)</address>
<address>    451         nx, ny = plot.image._A.shape</address>
<address>    452         buff = na.zeros((nx,ny),dtype='float64')</address>
<address>--> 453         for i,clump in
enumerate(reversed(self.clumps)):</address>
<address>    454             mylog.debug("Pixelizing contour %s", i)</address>
<address>    455 </address>
<address><br>
TypeError: object of type 'Clump' has no len()</address>
##########################################################################################<br>
<br>
<br>
If I also try to reproduce the example in the cookbook:<br>
<br>
##########################################################################################<br>
<address>In [19]: f = open('%s_clump_hierarchy.txt' % pf,'w')</address>
<address><br>
In [20]: write_clump_hierarchy(master_clump,0,f)</address>
<address>yt         INFO       2010-05-19 14:00:24,974 Getting field
CellMassMsun from 1</address>
<address>yt         INFO       2010-05-19 14:00:24,974 Getting field
CellVolume from 1</address>
<address>yt         INFO       2010-05-19 14:00:24,974 Getting field dx
from 1</address>
<address>yt         INFO       2010-05-19 14:00:24,978 Getting field dy
from 1</address>
<address>yt         INFO       2010-05-19 14:00:24,981 Getting field dz
from 1</address>
<address>ERROR: An unexpected error occurred while tokenizing input</address>
<address>The following traceback may be corrupted or invalid</address>
<address>The error message is: ('EOF in multi-line statement', (37, 0))</address>
<address><br>
ERROR: An unexpected error occurred while tokenizing input</address>
<address>The following traceback may be corrupted or invalid</address>
<address>The error message is: ('EOF in multi-line statement', (111, 0))</address>
<address><br>
ERROR: An unexpected error occurred while tokenizing input</address>
<address>The following traceback may be corrupted or invalid</address>
<address>The error message is: ('EOF in multi-line statement', (111, 0))</address>
<address><br>
ERROR: An unexpected error occurred while tokenizing input</address>
<address>The following traceback may be corrupted or invalid</address>
<address>The error message is: ('EOF in multi-line statement', (133, 0))</address>
<address><br>
---------------------------------------------------------------------------</address>
<address>NeedsDataField                            Traceback (most
recent call last)</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/scripts/iyt in
<module>()</address>
<address>----> 1 </address>
<address>      2 </address>
<address>      3 </address>
<address>      4 </address>
<address>      5 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/Clump.pyc in
write_clump_hierarchy(clump, level, f_ptr)</address>
<address>    196         f_ptr.write("\t")</address>
<address>    197     f_ptr.write("Clump at level %d:\n" % level)</address>
<address>--> 198     clump.write_info(level,f_ptr)</address>
<address>    199     f_ptr.write("\n")</address>
<address>    200     f_ptr.flush()</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/Clump.pyc in
write_info(self, level, f_ptr)</address>
<address>    102                 value = item['quantity']()</address>
<address>    103             else:</address>
<address>--> 104                 value = eval(item['quantity'])</address>
<address>    105             output = eval(item['format'])</address>
<address>    106             f_ptr.write("%s%s" % ('\t'*level,output))</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/Clump.pyc in
<module>()</address>
<address>----> 1 </address>
<address>      2 </address>
<address>      3 </address>
<address>      4 </address>
<address>      5 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/DerivedQuantities.pyc
in __call__(self, *args, **kwargs)</address>
<address>     70                           self._<a
 href="http://data_source.pf.h.io" target="_blank">data_source.pf.h.io</a>)</address>
<address>     71         if lazy_reader and not self.force_unlazy:</address>
<address>---> 72             return self._call_func_lazy(args,
kwargs)</address>
<address>     73         else:</address>
<address>     74             return self._call_func_unlazy(args, kwargs)</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/DerivedQuantities.pyc
in _call_func_lazy(self, args, kwargs)</address>
<address>     77         self.retvals = [ [] for i in range(self.n_ret)]</address>
<address>     78         for gi,g in enumerate(self._get_grids()):</address>
<address>---> 79             rv = self.func(GridChildMaskWrapper(g,
self._data_source), *args, **kwargs)</address>
<address>     80             for i in range(self.n_ret):
self.retvals[i].append(rv[i])</address>
<address>     81             g.clear_data()</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/DerivedQuantities.pyc
in _WeightedAverageQuantity(data, field, weight)</address>
<address>    151     :param weight: The field to weight by</address>
<address>    152     """</address>
<address>--> 153     num = (data[field] * data[weight]).sum()</address>
<address>    154     den = data[weight].sum()</address>
<address>    155     return num, den</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/DerivedQuantities.pyc
in __getitem__(self, item)</address>
<address>     41         return getattr(self.grid, attr)</address>
<address>     42     def __getitem__(self, item):</address>
<address>---> 43         return
self.data_source._get_data_from_grid(self.grid, item)</address>
<address>     44 </address>
<address>     45 class DerivedQuantity(ParallelAnalysisInterface):</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseDataTypes.pyc in
save_state(self, grid, field)</address>
<address>     41         old_keys = grid.data.keys()</address>
<address>     42         grid.field_parameters = self.field_parameters</address>
<address>---> 43         tr = func(self, grid, field)</address>
<address>     44         grid.field_parameters = old_params</address>
<address>     45         grid.data = dict( [(k, grid.data[k]) for k in
old_keys] )</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseDataTypes.pyc in
_get_data_from_grid(self, grid, field)</address>
<address>   1670         else:</address>
<address>   1671             pointI = self._get_point_indices(grid)</address>
<address>-> 1672             if grid[field].size == 1: # dx, dy, dz,
cellvolume</address>
<address>   1673                 t = grid[field] *
na.ones(grid.ActiveDimensions, dtype='float64')</address>
<address>   1674                 return t[pointI].ravel()</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
__getitem__(self, key)</address>
<address>    133         """</address>
<address>    134         if not self.data.has_key(key):</address>
<address>--> 135             self.get_data(key)</address>
<address>    136         return self.data[key]</address>
<address>    137 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
get_data(self, field)</address>
<address>    176                     else: raise</address>
<address>    177             else:</address>
<address>--> 178                 self._generate_field(field)</address>
<address>    179         return self.data[field]</address>
<address>    180 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
_generate_field(self, field)</address>
<address>    121                 self[field] = temp_array[sl]</address>
<address>    122             else:</address>
<address>--> 123                 self[field] =
self.pf.field_info[field](self)</address>
<address>    124         else: # Can't find the field, try as it might</address>
<address>    125             raise exceptions.KeyError, field</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/FieldInfoContainer.pyc
in __call__(self, data)</address>
<address>    316         ii = self.check_available(data)</address>
<address>    317         original_fields = data.keys() # Copy</address>
<address>--> 318         dd = self._function(self, data)</address>
<address>    319         dd *= self._convert_function(data)</address>
<address>    320         for field_name in data.keys():</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/UniversalFields.pyc
in _JeansMassMsun(field, data)</address>
<address>    769 </address>
<address>    770     return (MJ_constant *</address>
<address>--> 771            
((data["Temperature"]/data["MeanMolecularWeight"])**(1.5)) *</address>
<address>    772             (data["Density"]**(-0.5)))</address>
<address>    773 add_field("JeansMassMsun",function=_JeansMassMsun,</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
__getitem__(self, key)</address>
<address>    133         """</address>
<address>    134         if not self.data.has_key(key):</address>
<address>--> 135             self.get_data(key)</address>
<address>    136         return self.data[key]</address>
<address>    137 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
get_data(self, field)</address>
<address>    176                     else: raise</address>
<address>    177             else:</address>
<address>--> 178                 self._generate_field(field)</address>
<address>    179         return self.data[field]</address>
<address>    180 </address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/BaseGridType.pyc in
_generate_field(self, field)</address>
<address>    111             # First we check the validator</address>
<address><br>
    112             try:</address>
<address>--> 113                
self.pf.field_info[field].check_available(self)</address>
<address>    114             except NeedsGridType, ngt_exception:</address>
<address>    115                 # This is only going to be raised if
n_gz > 0</address>
<address><br>
</address>
<address>/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/FieldInfoContainer.pyc
in check_available(self, data)</address>
<address>    283         """</address>
<address>    284         for validator in self.validators:</address>
<address>--> 285             validator(data)</address>
<address>    286         # If we don't get an exception, we're good to
go</address>
<address><br>
    287         return True</address>
<address><br>
/rpod2/jcpassy/yt-x86_64/src/yt-trunk-svn/yt/lagos/FieldInfoContainer.pyc
in __call__(self, data)</address>
<address>    381                 doesnt_have.append(f)</address>
<address>    382         if len(doesnt_have) > 0:</address>
<address>--> 383             raise NeedsDataField(doesnt_have)</address>
<address>    384         return True</address>
<address>    385 </address>
<address><br>
NeedsDataField: (['Temperature'])</address>
##########################################################################################<br>
<br>
<br>
Also, if I correctly understand the Cookbook and the reference, the
tree of clumps in contained in master_clump. It contains only the bound
clumps so if I do :<br>
<br>
<br>
##########################################################################################<br>
<address>In [31]: master_clump.data.fields</address>
<address>Out[31]: ['Density', 'tempContours', 'CellMassMsun']</address>
<address><br>
In [32]: a = master_clump.data['CellMassMsun']</address>
<address><br>
In [33]: sum(a)</address>
<address>Out[33]: 0.98881452898337696</address>
##########################################################################################<br>
<br>
this will be the total bound mass. Does it automatically take into
account the thermal energy to determine whether a clump is bound or not
?<br>
<br>
<br>
I would really appreciate if someone could give me a hint.<br>
Thanks a lot,<br>
<br>
Jean-Claude<br>
</body>
</html>