Nathan,
I'm using yt version 3.0.2 (which I see is not quite current) on Debian 7 (wheezy). I tried to pastebin the iPython error traceback, but it failed with a complaint that the MySQL server has 'gone away'. With apologies to the list, here's the traceback:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-49-3f118016da60> in <module>()
----> 1 p.annotate_particles((4.0,'kpc'))
/usr/local/lib/python2.7/dist-packages/yt/visualization/plot_container.pyc in newfunc(*args, **kwargs)
68 rv = f(*args, **kwargs)
69 args[0]._plot_valid = False
---> 70 args[0]._setup_plots()
71 return rv
72 return newfunc
/usr/local/lib/python2.7/dist-packages/yt/visualization/plot_window.pyc in _setup_plots(self)
860 label.set_fontproperties(fp)
861
--> 862 self.run_callbacks(f)
863
864 if draw_axes is False:
/usr/local/lib/python2.7/dist-packages/yt/visualization/plot_container.pyc in run_callbacks(self, f)
313 CallbackMaker = callback_registry[name]
314 callback = CallbackMaker(*args[1:], **kwargs)
--> 315 callback(cbw)
316 for key in self.frb.keys():
317 if key not in keys:
/usr/local/lib/python2.7/dist-packages/yt/visualization/plot_modifications.pyc in __call__(self, plot)
1053 pt = self.ptype
1054 gg = ( ( reg[pt, field_x] >= x0 ) & ( reg[pt, field_x] <= x1 )
-> 1055 & ( reg[pt, field_y] >= y0 ) & ( reg[pt, field_y] <= y1 ) )
1056 if self.minimum_mass is not None:
1057 gg &= (reg[pt, "particle_mass"] >= self.minimum_mass)
/usr/local/lib/python2.7/dist-packages/yt/data_objects/data_containers.pyc in __getitem__(self, key)
238 return self.field_data[f]
239 else:
--> 240 self.get_data(f)
241 # fi.units is the unit expression string. We depend on the registry
242 # hanging off the dataset to define this unit object.
/usr/local/lib/python2.7/dist-packages/yt/data_objects/data_containers.pyc in get_data(self, fields)
665
666 read_particles, gen_particles = self.index._read_particle_fields(
--> 667 particles, self, self._current_chunk)
668 for f, v in read_particles.items():
669 self.field_data[f] = self.ds.arr(v, input_units = finfos[f].units)
/usr/local/lib/python2.7/dist-packages/yt/geometry/geometry_handler.pyc in _read_particle_fields(self, fields, dobj, chunk)
232 self._chunk_io(dobj, cache = False),
233 selector,
--> 234 fields_to_read)
235 return fields_to_return, fields_to_generate
236
/usr/local/lib/python2.7/dist-packages/yt/utilities/io_handler.pyc in _read_particle_selection(self, chunks, selector, fields)
148 # Here, ptype_map means which particles contribute to a given type.
149 # And ptf is the actual fields from disk to read.
--> 150 psize = self._count_particles_chunks(chunks, ptf, selector)
151 # Now we allocate
152 # ptf, remember, is our mapping of what we want to read
/usr/local/lib/python2.7/dist-packages/yt/utilities/io_handler.pyc in _count_particles_chunks(self, chunks, ptf, selector)
119 def _count_particles_chunks(self, chunks, ptf, selector):
120 psize = defaultdict(lambda: 0) # COUNT PTYPES ON DISK
--> 121 for ptype, (x, y, z) in self._read_particle_coords(chunks, ptf):
122 psize[ptype] += selector.count_points(x, y, z, 0.0)
123 return dict(psize.items())
/usr/local/lib/python2.7/dist-packages/yt/frontends/flash/io.pyc in _read_particle_coords(self, chunks, ptf)
72 start = p_ind[
g1.id - g1._id_offset]
73 end = p_ind[
g2.id - g2._id_offset + 1]
---> 74 x = np.asarray(p_fields[start:end, px], dtype="=f8")
75 y = np.asarray(p_fields[start:end, py], dtype="=f8")
76 z = np.asarray(p_fields[start:end, pz], dtype="=f8")
/usr/lib/python2.7/dist-packages/h5py/_hl/dataset.pyc in __getitem__(self, args)
312
313 # Perform the dataspace selection.
--> 314 selection = sel.select(self.shape, args, dsid=
self.id)
315
316 if selection.nselect == 0:
/usr/lib/python2.7/dist-packages/h5py/_hl/selections.pyc in select(shape, args, dsid)
92
93 sel = SimpleSelection(shape)
---> 94 sel[args]
95 return sel
96
/usr/lib/python2.7/dist-packages/h5py/_hl/selections.pyc in __getitem__(self, args)
259 return self
260
--> 261 start, count, step, scalar = _handle_simple(self.shape,args)
262
263 self._id.select_hyperslab(start, count, step)
/usr/lib/python2.7/dist-packages/h5py/_hl/selections.pyc in _handle_simple(shape, args)
510 for arg, length in zip(args, shape):
511 if isinstance(arg, slice):
--> 512 x,y,z = _translate_slice(arg, length)
513 s = False
514 else:
/usr/lib/python2.7/dist-packages/h5py/_hl/selections.pyc in _translate_slice(exp, length)
551 raise ValueError("Step must be >= 1 (got %d)" % step)
552 if stop == start:
--> 553 raise ValueError("Zero-length selections are not allowed")
554 if stop < start:
555 raise ValueError("Reverse-order selections are not allowed")
ValueError: Zero-length selections are not allowed
------------------------------------------------------------------------
Let me know if any other info would be useful.