From 709684e314a57fc3308efe1fdf979f0699aabc3b Mon Sep 17 00:00:00 2001 From: VEZINET Didier Date: Thu, 28 Nov 2019 18:14:04 +0100 Subject: [PATCH] [Issue304] get_summary() added to Struct and CamLOS2D --- tofu/geom/_core.py | 98 +++++++++++++++++++++++++++++++++++++++++++++- tofu/version.py | 2 +- 2 files changed, 97 insertions(+), 3 deletions(-) diff --git a/tofu/geom/_core.py b/tofu/geom/_core.py index 123c9fd49..4e4021a11 100644 --- a/tofu/geom/_core.py +++ b/tofu/geom/_core.py @@ -885,6 +885,51 @@ def dmisc(self): # public methods ########### + def get_summary( + self, + sep=" ", + line="-", + just="l", + table_sep=None, + verb=True, + return_=False, + ): + """ Summary description of the object content """ + + # ----------------------- + # Build detailed view + col0 = [ + "class", + "Name", + "SaveName", + "nP", + "noccur", + "mobile", + "color", + ] + ar0 = [ + self._Id.Cls, + self._Id.Name, + self._Id.SaveName, + str(self._dgeom["nP"]), + str(self._dgeom["noccur"]), + str(self._dgeom["mobile"]), + str(self._dmisc["color"])] + + return self._get_summary( + [ar0], + [col0], + sep=sep, + line=line, + table_sep=table_sep, + verb=verb, + return_=return_, + ) + + ########### + # public methods + ########### + def set_color(self, col): self._set_color(col) @@ -6728,21 +6773,29 @@ def get_summary( kout = self._dgeom["kOut"] indout = self._dgeom["indout"] lS = self._dconfig["Config"].lStruct + angles = np.arccos(-np.sum(self.u*self.dgeom['vperp'], axis=0)) # ar0 - col0 = ["nb. los", "av. length", "nb. touch"] + col0 = ["nb. los", "av. length", "min length", "max length", + "nb. touch", "av. angle", "min angle", "max angle"] ar0 = [ self.nRays, "{:.3f}".format(np.nanmean(kout)), + "{:.3f}".format(np.nanmin(kout)), + "{:.3f}".format(np.nanmax(kout)), np.unique(indout[0, :]).size, + "{:.2f}".format(np.nanmean(angles)), + "{:.2f}".format(np.nanmin(angles)), + "{:.2f}".format(np.nanmax(angles)), ] # ar1 - col1 = ["los index", "length", "touch"] + col1 = ["los index", "length", "touch", "angle (rad)"] ar1 = [ np.arange(0, self.nRays), np.around(kout, decimals=3).astype("U"), ["%s_%s" % (lS[ii].Id.Cls, lS[ii].Id.Name) for ii in indout[0, :]], + np.around(angles, decimals=2).astype('U') ] for k, v in self._dchans.items(): @@ -6838,6 +6891,47 @@ def save_to_imas( class CamLOS2D(Rays): + def get_summary( + self, + sep=" ", + line="-", + just="l", + table_sep=None, + verb=True, + return_=False, + ): + + # Prepare + kout = self._dgeom["kOut"] + indout = self._dgeom["indout"] + lS = self._dconfig["Config"].lStruct + angles = np.arccos(-np.sum(self.u*self.dgeom['vperp'], axis=0)) + + # ar0 + col0 = ["nb. los", "av. length", "min length", "max length", + "nb. touch", "av. angle", "min angle", "max angle"] + ar0 = [ + self.nRays, + "{:.3f}".format(np.nanmean(kout)), + "{:.3f}".format(np.nanmin(kout)), + "{:.3f}".format(np.nanmax(kout)), + np.unique(indout[0, :]).size, + "{:.2f}".format(np.nanmean(angles)), + "{:.2f}".format(np.nanmin(angles)), + "{:.2f}".format(np.nanmax(angles)), + ] + + # call base method + return self._get_summary( + [ar0], + [col0], + sep=sep, + line=line, + table_sep=table_sep, + verb=verb, + return_=return_, + ) + def _isImage(self): return self._dgeom["isImage"] diff --git a/tofu/version.py b/tofu/version.py index 0ffec04af..ab0e46b95 100644 --- a/tofu/version.py +++ b/tofu/version.py @@ -1,2 +1,2 @@ # Do not edit, pipeline versioning governed by git tags! -__version__ = '1.4.2-a4-11-g4a3c745' +__version__ = '1.4.2-a5'