Add some doc
This commit is contained in:
+3
-1
@@ -198,7 +198,9 @@ class BaseProcessor:
|
|||||||
|
|
||||||
def def_rules(self):
|
def def_rules(self):
|
||||||
for rule in self.rules:
|
for rule in self.rules:
|
||||||
setattr(self, rule, partial(self.process, rule))
|
func = partial(self.process, rule)
|
||||||
|
func.__doc__ = self.rules[rule].description
|
||||||
|
setattr(self, rule, func)
|
||||||
|
|
||||||
|
|
||||||
class HDF5Container(BaseProcessor):
|
class HDF5Container(BaseProcessor):
|
||||||
|
|||||||
+171
-124
@@ -1,5 +1,13 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
This software is a helper to use pysmes tools to read and analyse RAMSES Outputs.
|
||||||
|
It's a rule based interface.
|
||||||
|
This is the plotter module.
|
||||||
|
|
||||||
|
@author Noé Brucy 2019-2020
|
||||||
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
from functools import partial
|
from functools import partial
|
||||||
@@ -27,13 +35,24 @@ P.rcParams.update(tex_params)
|
|||||||
|
|
||||||
|
|
||||||
class PlotRule(Rule):
|
class PlotRule(Rule):
|
||||||
|
"""
|
||||||
|
The rule class, speficic to plot.
|
||||||
|
Add an extra method, plot, that take the reference to an open hdf5 file (from pytables)
|
||||||
|
"""
|
||||||
|
|
||||||
def plot(self, save, arg, **kwargs):
|
def plot(self, save, arg, **kwargs):
|
||||||
|
"""
|
||||||
|
Set the plotter's storage to 'save' and exetute the rule
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
save : opended pytables hdf5 file, where to find the data
|
||||||
|
arg : main argument of the plotting function
|
||||||
|
kargs : optional keyword arguments to the plotting function
|
||||||
|
"""
|
||||||
self.postproc.save = save
|
self.postproc.save = save
|
||||||
return self.process_fn(arg, **kwargs)
|
return self.process_fn(arg, **kwargs)
|
||||||
|
|
||||||
def is_valid(self, arg):
|
|
||||||
return self.is_valid_add(arg)
|
|
||||||
|
|
||||||
|
|
||||||
class Plotter(Aggregator, BaseProcessor):
|
class Plotter(Aggregator, BaseProcessor):
|
||||||
"""
|
"""
|
||||||
@@ -50,6 +69,7 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
|
|
||||||
G = 1.0 # Gravitational constant
|
G = 1.0 # Gravitational constant
|
||||||
|
|
||||||
|
# Conversion table from namelist keys (from amses config file) into LaTex strings
|
||||||
label_convert = {
|
label_convert = {
|
||||||
"turb_rms": "$f_{rms}$",
|
"turb_rms": "$f_{rms}$",
|
||||||
"beta": "$\\beta$",
|
"beta": "$\\beta$",
|
||||||
@@ -60,6 +80,7 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
"comp_frac": "$\\zeta$",
|
"comp_frac": "$\\zeta$",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Conversion table from namelist values (from amses config file) into LaTex strings
|
||||||
value_convert = {
|
value_convert = {
|
||||||
"sfr_avg_window": lambda x: "${:g}$ Myr".format(80 * x),
|
"sfr_avg_window": lambda x: "${:g}$ Myr".format(80 * x),
|
||||||
"comp_frac": lambda x: "${:g}$".format(1 - x),
|
"comp_frac": lambda x: "${:g}$".format(1 - x),
|
||||||
@@ -77,6 +98,22 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
**kwargs
|
**kwargs
|
||||||
):
|
):
|
||||||
|
|
||||||
|
"""
|
||||||
|
Create a new Plotter instance. Will select run and outputs via a RunSelector object.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
|
||||||
|
path : path to the main folder of the simulations (ex '~/simus/myproject')
|
||||||
|
in_runs : list of the runs to consider (ex ['run1', 'run2'])
|
||||||
|
in_nums : list or dict of the outputs numbers to consider (ex [3, 5] or {'run1' : [3, 5], 'run2' : [4, 6])
|
||||||
|
path_out : Path where the plot will be saved. By default set to `path`
|
||||||
|
pp_params : Parameters for postprocessing. See pp_params module.
|
||||||
|
selector : Existing instance of RunSelector, that selects runs and outputs. If set, in_runs and in_nums will be ignored
|
||||||
|
tag : string to add in the output and data files.
|
||||||
|
kwargs : Keyword arguments for RunSelector.
|
||||||
|
"""
|
||||||
|
|
||||||
super(Plotter, self).__init__(path, path_out, pp_params, tag)
|
super(Plotter, self).__init__(path, path_out, pp_params, tag)
|
||||||
|
|
||||||
# Select runs
|
# Select runs
|
||||||
@@ -105,6 +142,7 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
self.save = None
|
self.save = None
|
||||||
|
|
||||||
def _not_self_dep(self, name, dep, dep_arg, overwrite, **kwargs):
|
def _not_self_dep(self, name, dep, dep_arg, overwrite, **kwargs):
|
||||||
|
""""""
|
||||||
if dep in self.comp.rules:
|
if dep in self.comp.rules:
|
||||||
done = self.comp.process(dep, dep_arg, overwrite, overwrite)
|
done = self.comp.process(dep, dep_arg, overwrite, overwrite)
|
||||||
self.just_done.extend(done)
|
self.just_done.extend(done)
|
||||||
@@ -874,13 +912,13 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
"coldens": PlotRule(
|
"coldens": PlotRule(
|
||||||
self,
|
self,
|
||||||
partial(self._plot_map, "coldens", label=r"$\Sigma$", unit=cst.coldens),
|
partial(self._plot_map, "coldens", label=r"$\Sigma$", unit=cst.coldens),
|
||||||
"Column density",
|
"Column density map",
|
||||||
dependencies=["coldens"],
|
dependencies=["coldens"],
|
||||||
),
|
),
|
||||||
"rho": PlotRule(
|
"rho": PlotRule(
|
||||||
self,
|
self,
|
||||||
partial(self._plot_map, "rho", label=r"$\rho$", unit=cst.Msun_pc3),
|
partial(self._plot_map, "rho", label=r"$\rho$", unit=cst.Msun_pc3),
|
||||||
"Density slice",
|
"Density slice at s = 0, with s = x, y or z.",
|
||||||
dependencies=["rho"],
|
dependencies=["rho"],
|
||||||
),
|
),
|
||||||
"coldens_l": PlotRule(
|
"coldens_l": PlotRule(
|
||||||
@@ -892,7 +930,7 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
unit=cst.coldens,
|
unit=cst.coldens,
|
||||||
overlays=[self._overlay_levels],
|
overlays=[self._overlay_levels],
|
||||||
),
|
),
|
||||||
"Column density",
|
"Column density with level overlay",
|
||||||
dependencies=["coldens", "levels"],
|
dependencies=["coldens", "levels"],
|
||||||
),
|
),
|
||||||
"rho_v": PlotRule(
|
"rho_v": PlotRule(
|
||||||
@@ -904,7 +942,7 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
unit=cst.Msun_pc3,
|
unit=cst.Msun_pc3,
|
||||||
overlays=[self._overlay_speed],
|
overlays=[self._overlay_speed],
|
||||||
),
|
),
|
||||||
"Density slice",
|
"Density slice with speed overlay",
|
||||||
dependencies=["rho", "speed_h", "speed_v"],
|
dependencies=["rho", "speed_h", "speed_v"],
|
||||||
),
|
),
|
||||||
"jeans_ratio": PlotRule(
|
"jeans_ratio": PlotRule(
|
||||||
@@ -948,22 +986,145 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
xlog=True,
|
xlog=True,
|
||||||
put_time=False,
|
put_time=False,
|
||||||
),
|
),
|
||||||
"PDF",
|
"Column density PDF, averaged in time",
|
||||||
kind="runs",
|
kind="runs",
|
||||||
dependencies={"avg_time_coldens_pdf": "z"},
|
dependencies={"avg_time_coldens_pdf": "z"},
|
||||||
),
|
),
|
||||||
"T_pdf": PlotRule(
|
"T_pdf": PlotRule(
|
||||||
self, partial(self._plot_hist, "T_pdf"), "T-PDF", dependencies=["T_pdf"]
|
self,
|
||||||
|
partial(self._plot_hist, "T_pdf"),
|
||||||
|
"T-PDF on a 2D slice",
|
||||||
|
dependencies=["T_pdf"],
|
||||||
),
|
),
|
||||||
"P_pdf": PlotRule(
|
"P_pdf": PlotRule(
|
||||||
self, partial(self._plot_hist, "P_pdf"), "P-PDF", dependencies=["P_pdf"]
|
self,
|
||||||
|
partial(self._plot_hist, "P_pdf"),
|
||||||
|
"P-PDF on a 2D slice ",
|
||||||
|
dependencies=["P_pdf"],
|
||||||
),
|
),
|
||||||
"rho_prof": PlotRule(
|
"rho_prof": PlotRule(
|
||||||
self,
|
self,
|
||||||
partial(self._plot, "/profile/axis", "/profile/rho_prof"),
|
partial(self._plot, "/profile/axis", "/profile/rho_prof"),
|
||||||
|
"Density profile",
|
||||||
dependencies=["axis", "rho_prof"],
|
dependencies=["axis", "rho_prof"],
|
||||||
),
|
),
|
||||||
"pspec": PlotRule(self, self._pspec, dependencies={"pspec": None}),
|
"pspec": PlotRule(self, self._pspec, dependencies={"pspec": None}),
|
||||||
|
"kappa_beta": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/comp/nml_cloud_params/beta_cool",
|
||||||
|
"/comp/avg_time_pdf_slope_coldens",
|
||||||
|
),
|
||||||
|
"Slope of the Sigma-PDF against cooling beta factor",
|
||||||
|
kind="comp",
|
||||||
|
dependencies={
|
||||||
|
"nml": "cloud_params/beta_cool",
|
||||||
|
"avg_time_pdf_slope_coldens": None,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
"sink_mass": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/sinks_from_log/time",
|
||||||
|
"/series/sinks_from_log/mass_sink",
|
||||||
|
"Mass of the sinks against time",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
yunit=cst.Msun,
|
||||||
|
),
|
||||||
|
kind="series",
|
||||||
|
dependencies=["sinks_from_log"],
|
||||||
|
),
|
||||||
|
"assfr": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/sfr_from_log/time",
|
||||||
|
"/series/sfr_from_log/sfr",
|
||||||
|
ylabel="Averaged surfacic SFR",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
yunit=cst.ssfr,
|
||||||
|
),
|
||||||
|
kind="series",
|
||||||
|
dependencies=["sfr_from_log"],
|
||||||
|
),
|
||||||
|
"issfr": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/sinks_from_log/time",
|
||||||
|
"/series/sinks_from_log/issfr",
|
||||||
|
ylabel="Surfacic SFR",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
yunit=cst.ssfr,
|
||||||
|
),
|
||||||
|
kind="series",
|
||||||
|
dependencies=["issfr"],
|
||||||
|
),
|
||||||
|
"turb_rms": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/rms_from_log/time",
|
||||||
|
"/series/rms_from_log/turb_rms",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
),
|
||||||
|
"Turbulent RMS",
|
||||||
|
kind="series",
|
||||||
|
dependencies=["rms_from_log"],
|
||||||
|
),
|
||||||
|
"turb_energy": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/rms_from_log/time",
|
||||||
|
"/series/rms_from_log/turb_energy",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
),
|
||||||
|
"Turbulent energy",
|
||||||
|
kind="series",
|
||||||
|
dependencies=["rms_from_log"],
|
||||||
|
),
|
||||||
|
"turb_power": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/rms_from_log/time",
|
||||||
|
"/series/rms_from_log/turb_power",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
),
|
||||||
|
"Turbulent power",
|
||||||
|
kind="series",
|
||||||
|
dependencies=["turb_power"],
|
||||||
|
),
|
||||||
|
"sigma": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/time",
|
||||||
|
"/series/time_sigma",
|
||||||
|
ylabel="$\\sigma$",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
yunit=cst.km_s,
|
||||||
|
),
|
||||||
|
"Velocity dispersion",
|
||||||
|
kind="series",
|
||||||
|
dependencies=["time_sigma"],
|
||||||
|
),
|
||||||
|
"max_fluct_coldens": PlotRule(
|
||||||
|
self,
|
||||||
|
partial(
|
||||||
|
self._plot,
|
||||||
|
"/series/time",
|
||||||
|
"/series/time_max_fluct_coldens_z",
|
||||||
|
ylabel="$\\max(\Sigma/\overline{\Sigma})$",
|
||||||
|
xunit=cst.Myr,
|
||||||
|
),
|
||||||
|
"Maximal fluctuation of the column density against time",
|
||||||
|
kind="series",
|
||||||
|
dependencies={"time_max_fluct_coldens": "z"},
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
averageables = ["coldens", "rho", "T", "Q"]
|
averageables = ["coldens", "rho", "T", "Q"]
|
||||||
@@ -1006,118 +1167,4 @@ class Plotter(Aggregator, BaseProcessor):
|
|||||||
dependencies=["fit_pdf_" + name],
|
dependencies=["fit_pdf_" + name],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.rules.update(
|
|
||||||
{
|
|
||||||
"kappa_beta": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/comp/nml_cloud_params/beta_cool",
|
|
||||||
"/comp/avg_time_pdf_slope_coldens",
|
|
||||||
),
|
|
||||||
kind="comp",
|
|
||||||
dependencies={
|
|
||||||
"nml": "cloud_params/beta_cool",
|
|
||||||
"avg_time_pdf_slope_coldens": None,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
"sink_mass": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/sinks_from_log/time",
|
|
||||||
"/series/sinks_from_log/mass_sink",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
yunit=cst.Msun,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["sinks_from_log"],
|
|
||||||
),
|
|
||||||
"assfr": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/sfr_from_log/time",
|
|
||||||
"/series/sfr_from_log/sfr",
|
|
||||||
ylabel="Averaged surfacic SFR",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
yunit=cst.ssfr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["sfr_from_log"],
|
|
||||||
),
|
|
||||||
"issfr": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/sinks_from_log/time",
|
|
||||||
"/series/sinks_from_log/issfr",
|
|
||||||
ylabel="Surfacic SFR",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
yunit=cst.ssfr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["issfr"],
|
|
||||||
),
|
|
||||||
"turb_rms": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/rms_from_log/time",
|
|
||||||
"/series/rms_from_log/turb_rms",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["rms_from_log"],
|
|
||||||
),
|
|
||||||
"turb_energy": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/rms_from_log/time",
|
|
||||||
"/series/rms_from_log/turb_energy",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["rms_from_log"],
|
|
||||||
),
|
|
||||||
"turb_power": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/rms_from_log/time",
|
|
||||||
"/series/rms_from_log/turb_power",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["turb_power"],
|
|
||||||
),
|
|
||||||
"sigma": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/time",
|
|
||||||
"/series/time_sigma",
|
|
||||||
ylabel="$\\sigma$",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
yunit=cst.km_s,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies=["time_sigma"],
|
|
||||||
),
|
|
||||||
"max_fluct_coldens": PlotRule(
|
|
||||||
self,
|
|
||||||
partial(
|
|
||||||
self._plot,
|
|
||||||
"/series/time",
|
|
||||||
"/series/time_max_fluct_coldens_z",
|
|
||||||
ylabel="$\\max(\Sigma/\overline{\Sigma})$",
|
|
||||||
xunit=cst.Myr,
|
|
||||||
),
|
|
||||||
kind="series",
|
|
||||||
dependencies={"time_max_fluct_coldens": "z"},
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
super(Plotter, self).def_rules()
|
super(Plotter, self).def_rules()
|
||||||
|
|||||||
Reference in New Issue
Block a user