[plotter] [postprocessor] make particles scatter actually work

This commit is contained in:
Noe Brucy
2021-01-20 15:25:30 +01:00
parent 2c1c690ba8
commit 600f3a800a
3 changed files with 14 additions and 9 deletions
+4 -3
View File
@@ -695,9 +695,10 @@ class Plotter(Aggregator, BaseProcessor):
"""
# Open particle HDF5 file
filename = self.save.get_node("/hdf5/particles").read()
hdf5_parts = tables.open(filename, "r")
filename = self.save.get_node("/hdf5/particles").read()[0].decode()
hdf5_parts = tables.open_file(filename, "r")
part_pos = hdf5_parts.get_node("/data/pos").read()
hdf5_parts.close()
# index of the horizontal axis
ih = self._ax_nb[self._axes_h[ax_los]]
@@ -713,7 +714,7 @@ class Plotter(Aggregator, BaseProcessor):
part_v = im_extent[2] + (im_extent[3] - im_extent[2]) * part_v
# Scatter plot
plt.scatter(part_h, part_v)
plt.scatter(part_h, part_v, **kwargs)
def _overlay_speed(
self, ax_los, im_extent, unit=U.km_s, unit_coeff=1.0, key_v=None, **kwargs
+9 -5
View File
@@ -183,6 +183,7 @@ class PostProcessor(HDF5Container):
G = 1.0 # Gravitational constant
cells_loaded = False
parts_loaded = False
def __init__(
self,
@@ -241,7 +242,7 @@ class PostProcessor(HDF5Container):
verbose=self.pp_params.pymses.verbose,
)
self._amr = self._ro.amr_source(self.pp_params.pymses.variables)
self._part = self._ro.part_source(["vel", "mass"])
self._part = self._ro.particle_source(["vel", "mass"])
if self.pp_params.pymses.filter:
self.min_coords = np.array(self.pp_params.pymses.min_coords)
@@ -358,14 +359,14 @@ class PostProcessor(HDF5Container):
Load data from the source file in the memory.
(Long and memory heavy)
"""
if not self.part_loaded:
if not self.parts_loaded:
if os.path.exists(filename):
hdf5 = tables.open_file(filename, mode="r")
try:
node = hdf5.get_node("/data")
data = {}
for key in node._v_children:
self.part[key] = hdf5.get_node("/data/" + key).read()
data[key] = hdf5.get_node("/data/" + key).read()
finally:
hdf5.close()
else:
@@ -373,7 +374,10 @@ class PostProcessor(HDF5Container):
data = {}
for key in data_pymses.fields:
data[key] = data_pymses[key]
data["dx"] = data_pymses.get_sizes()
try:
data["dx"] = data_pymses.get_sizes()
except AttributeError:
pass
data["pos"] = data_pymses.points
if save:
@@ -1164,7 +1168,7 @@ class PostProcessor(HDF5Container):
"""Ensure particles are written in the hdf5 file"""
self.load_parts()
self.unload_parts()
return self.parts_filename
return np.array([self.parts_filename])
def _filaments(self):
+1 -1
View File
@@ -89,7 +89,7 @@ process: # General setting of the post-processor module
verbose : False # Give more infos on what is going on
num_process : 1 # Number of forks
save_cells : True # Save cells structure on disk
save_particles : True # Save particles on disk
save_parts : True # Save particles on disk
unload_cells : True # Save memory usage
rules: # Specific rules parameters