[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 # Open particle HDF5 file
filename = self.save.get_node("/hdf5/particles").read() filename = self.save.get_node("/hdf5/particles").read()[0].decode()
hdf5_parts = tables.open(filename, "r") hdf5_parts = tables.open_file(filename, "r")
part_pos = hdf5_parts.get_node("/data/pos").read() part_pos = hdf5_parts.get_node("/data/pos").read()
hdf5_parts.close()
# index of the horizontal axis # index of the horizontal axis
ih = self._ax_nb[self._axes_h[ax_los]] 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 part_v = im_extent[2] + (im_extent[3] - im_extent[2]) * part_v
# Scatter plot # Scatter plot
plt.scatter(part_h, part_v) plt.scatter(part_h, part_v, **kwargs)
def _overlay_speed( def _overlay_speed(
self, ax_los, im_extent, unit=U.km_s, unit_coeff=1.0, key_v=None, **kwargs 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 G = 1.0 # Gravitational constant
cells_loaded = False cells_loaded = False
parts_loaded = False
def __init__( def __init__(
self, self,
@@ -241,7 +242,7 @@ class PostProcessor(HDF5Container):
verbose=self.pp_params.pymses.verbose, verbose=self.pp_params.pymses.verbose,
) )
self._amr = self._ro.amr_source(self.pp_params.pymses.variables) 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: if self.pp_params.pymses.filter:
self.min_coords = np.array(self.pp_params.pymses.min_coords) 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. Load data from the source file in the memory.
(Long and memory heavy) (Long and memory heavy)
""" """
if not self.part_loaded: if not self.parts_loaded:
if os.path.exists(filename): if os.path.exists(filename):
hdf5 = tables.open_file(filename, mode="r") hdf5 = tables.open_file(filename, mode="r")
try: try:
node = hdf5.get_node("/data") node = hdf5.get_node("/data")
data = {} data = {}
for key in node._v_children: for key in node._v_children:
self.part[key] = hdf5.get_node("/data/" + key).read() data[key] = hdf5.get_node("/data/" + key).read()
finally: finally:
hdf5.close() hdf5.close()
else: else:
@@ -373,7 +374,10 @@ class PostProcessor(HDF5Container):
data = {} data = {}
for key in data_pymses.fields: for key in data_pymses.fields:
data[key] = data_pymses[key] 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 data["pos"] = data_pymses.points
if save: if save:
@@ -1164,7 +1168,7 @@ class PostProcessor(HDF5Container):
"""Ensure particles are written in the hdf5 file""" """Ensure particles are written in the hdf5 file"""
self.load_parts() self.load_parts()
self.unload_parts() self.unload_parts()
return self.parts_filename return np.array([self.parts_filename])
def _filaments(self): 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 verbose : False # Give more infos on what is going on
num_process : 1 # Number of forks num_process : 1 # Number of forks
save_cells : True # Save cells structure on disk 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 unload_cells : True # Save memory usage
rules: # Specific rules parameters rules: # Specific rules parameters