From 600f3a800a2d5c36a65708d26f6cfb2b0e878227 Mon Sep 17 00:00:00 2001 From: Noe Brucy Date: Wed, 20 Jan 2021 15:25:30 +0100 Subject: [PATCH] [plotter] [postprocessor] make particles scatter actually work --- plotter.py | 7 ++++--- postprocessor.py | 14 +++++++++----- pp_params.yml | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/plotter.py b/plotter.py index a9a5e59..c977fd0 100644 --- a/plotter.py +++ b/plotter.py @@ -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 diff --git a/postprocessor.py b/postprocessor.py index 7ad1df3..6314f7b 100644 --- a/postprocessor.py +++ b/postprocessor.py @@ -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): diff --git a/pp_params.yml b/pp_params.yml index fd0af68..798b23b 100644 --- a/pp_params.yml +++ b/pp_params.yml @@ -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