Package: nonos
nonosnonos is a 2D visualization command line application for planet-disk numerical simulations, as well as a Python library. It works with vtk-formatted data from Pluto and Idefix, and dat-formatted data for Fargo-adsg and Fargo3D.For more, readthe documentation !Data FormatsWe list here the accepted formats for the data:
Pluto and Idefix: data.****.vtk
Fargo-adsg: gasdens.dat, gasvy*.dat, gasvx*.dat
Fargo3D: same as Fargo-adsg + gasvz*.dat:construction: This project and documentation are under construction :construction:Ongoing progressspherical coordinatesnonos' apiInstallation:warning: Nonos requires Python 3.8 or newer. The easiest installation method is$pipinstallnonosUsageOn the command lineThe nonos CLI gets its parameters from three sources:command line parametersa configuration filedefault valuesCommand line parameters take priority over the configuration file, which itself takes priority over default values.To get help, run$nonos--helpusage: nonos [-h] [-dir DATADIR] [-field FIELD]
             [-geometry {polar,cylindrical,spherical,cartesian}]
             [-operation {vm,vp,vz,lt,lp,aa,ap,apl,rr} [{vm,vp,vz,lt,lp,aa,ap,apl,rr} ...]]
             [-plane PLANE [PLANE ...]] [-corotate COROTATE] [-range RANGE [RANGE ...]]
             [-vmin VMIN] [-vmax VMAX] [-theta THETA] [-z Z] [-phi PHI]
             [-distance DISTANCE] [-cpu NCPU] [-on ON [ON ...] | -all] [-diff] [-log]
             [-pbar] [-scaling SCALING] [-cmap CMAP] [-title TITLE]
             [-uc UNIT_CONVERSION] [-fmt FORMAT] [-dpi DPI] [-input INPUT | -isolated]
             [-d | -version | -logo | -config] [-v]

Analysis tool for idefix/pluto/fargo3d simulations (in polar coordinates).

optional arguments:
  -h, --help            show this help message and exit
  -dir DATADIR          location of output files and param files (default: '.').
  -field FIELD          name of field to plot (default: 'RHO').
  -geometry {polar,cylindrical,spherical,cartesian}
                        if the geometry of idefix outputs is not recognized (default:
                        'unset').
  -operation {vm,vp,vz,lt,lp,aa,ap,apl,rr} [{vm,vp,vz,lt,lp,aa,ap,apl,rr} ...]
                        operation to apply to the fild (default: 'unset').
  -plane PLANE [PLANE ...]
                        abscissa and ordinate of the plane of projection (default:
                        'unset'), example: r phi
  -corotate COROTATE    planet number that defines with which planet the grid corotates.
  -range RANGE [RANGE ...]
                        range of matplotlib window (default: unset), example: x x -2 2
  -vmin VMIN            min value (default: unset)
  -vmax VMAX            max value (default: unset)
  -theta THETA          if latitudinal operation (default: unset)
  -z Z                  if vertical operation (default: unset)
  -phi PHI              if azimuthal operation (default: unset)
  -distance DISTANCE    if radial operation (default: unset)
  -cpu NCPU, -ncpu NCPU
                        number of parallel processes (default: 1).
  -on ON [ON ...]       output number(s) (on) to plot. This can be a single value or a
                        range (start, end, [step]) where both ends are inclusive.
                        (default: last output available).
  -all                  save an image for every available snapshot (this will force
                        show=False).
  -scaling SCALING      scale the overall sizes of features in the graph (fonts,
                        linewidth...) (default: 1).
  -cmap CMAP            choice of colormap for the 2D maps (default: 'RdYlBu_r').
  -title TITLE          name of the field in the colorbar for the 2D maps (default:
                        'unset').
  -uc UNIT_CONVERSION, -unit_conversion UNIT_CONVERSION
                        conversion factor for the considered quantity (default: '1').
  -fmt FORMAT, -format FORMAT
                        select output image file format (default: unset)
  -dpi DPI              image file resolution (default: 200)

boolean flags:
  -diff                 plot the relative perturbation of the field f, i.e. (f-f0)/f0.
  -log                  plot the log10 of the field f, i.e. log(f).
  -pbar                 display a progress bar

CLI-only options:
  -input INPUT, -i INPUT
                        specify a configuration file.
  -isolated             ignore any existing 'nonos.ini' file.
  -d, -display          open a graphic window with the plot (only works with a single
                        image)
  -version, --version   show raw version number and exit
  -logo                 show Nonos logo with version number, and exit.
  -config               show configuration and exit.
  -v, -verbose, --verbose
                        increase output verbosity (-v: info, -vv: debug).The-operationcommand allows you to choose what operation is applied to the data, and can be paired with-z,-theta,-phi, or-distancedepending on the operation.vm: vertical_at_midplanevz: vertical_at_z, can be paired with-zto give the altitude at which the vertical slice is performed.vp: vertical_projection, can be paired with-zto give the interval of the vertical integral.lt: latitudinal_at_theta, can be paired with-thetato give the latitude at which the latitudinal slice is performed.lp: latitudinal_projection, can be paired with-thetato give the interval of the latitudinal integral.ap: azimuthal_at_phi, can be paired with-phito give the azimuth at which the azimuthal slice is performed.apl: azimuthal_at_planet, has to be paired with-corotateto perform a slice at the planet azimuth.aa: azimuthal_averagerr: radial_at_r, can be paired with-distanceto give the distance at which the radial slice is performed.
You can cumulate some operations, likelpandaawhich will given for example for-field=RHOthe gas surface density.Note that for old idefix outputs, you will need to add the-geometrycommand to process the data.Using a configuration fileThe CLI will read parameters from a local file namednonos.iniif it exists,
or any other name specified using the-i/-inputparameter.
To ignore any existingnonos.inifile, use the-isolatedflag.One way to configure nonos is to use$nonos-configwhich prints the current configuration to stdout.
You can then redirect it to get a working configuration file as$nonos-config>nonos.iniThis method can also be used to store a complete configuration file from command line arguments:$nonos-ncpu8-cmapviridis-operationvm-diff-vmin=-10-vmax=+100-configAs of nonos 0.7.0, this will print# Generated with nonos 0.7.0
datadir            .
field              RHO
operation          vm
theta              unset
z                  unset
phi                unset
distance           unset
geometry           unset
on                 unset
diff               True
log                False
range              unset
vmin               -1e1
vmax               1e2
plane              unset
progressBar        False
corotate           unset
ncpu               8
scaling            1
cmap               viridis
title              unset
unit_conversion    1
format             unset
dpi                200Programmatic usagefromnonos.apiimportGasDataSetimportmatplotlib.pyplotaspltplt.close("all")# We use GasDataSet which takes as argument the output number of the output file given by idefix/pluto/fargo# contains in particular a dictionary with the different fields.ds=GasDataSet(43,geometry="polar",directory="nonos/tests/data/idefix_planet3d")# We select the GasField "RHO", then# we perform a vertical slice in the midplane,# and make the result plotable in the xy plane,# rotating the grid given the planet number 0# (which orbit is described in the planet0.dat file).dsop=ds["RHO"].vertical_at_midplane().map("x","y",planet_corotation=0)fig,ax=plt.subplots()# dsop is now a Plotable object.# We represent its log10, with a given colormap,# and we display the colorbar by adding the argument title.dsop.plot(fig,ax,log=True,cmap="inferno",title=r"$\rho_{\rm mid}$")ax.set_aspect("equal")# This time, we perform a latitudinal projection,# i.e. the integral of "RHO" between -theta and theta,# and then an azimuthal average,# before mapping it in the radial ("R") direction.dsop=ds["RHO"].latitudinal_projection(theta=3*0.05).azimuthal_average().map("R")fig,ax=plt.subplots()# We display the y-axis by adding the argument title.dsop.plot(fig,ax,c="k",title=r"$\Sigma$")plt.show()Re-usingnonos' stylerequires matplotlib >= 3.7nonosCLI uses a custom style that can be reused programmatically, without
importing the package, using matplotlib APIimportmatplotlib.pyplotaspltplt.style.use("nonos.default")Seematplotlib.style's documentationfor more.