Files
pipeline/pipeline_disk.py
T
Noe Brucy 02d987ee97 Cleaning
2020-12-14 16:22:36 +01:00

165 lines
5.0 KiB
Python

# coding: utf-8
import os
from shutil import copy
import argparse
import time
import numpy as np
import disk_postprocess as dp
storage_in = "/home/nbrucy/simus/"
storage_out = "/home/nbrucy/visus/"
parser = argparse.ArgumentParser()
parser.add_argument("runs", help="name of runs", nargs="*", default=["015_iso"])
parser.add_argument("-b", "--begin", help="id of first output", type=int, default=1)
parser.add_argument("-e", "--end", help="id of last output", type=int, default=100)
parser.add_argument("-s", "--step", help="step between two output", type=int, default=1)
parser.add_argument(
"-d", "--disk", help="do specific disk radial analysis", action="store_true"
)
parser.add_argument(
"--nb_bin", help="Number of bins for azimuthal averages", type=int, default=50
)
parser.add_argument("-m", "--maps", help="do generic maps", action="store_true")
parser.add_argument("-p", "--project", help="specify project name", default="disk")
parser.add_argument(
"-fr",
"--force_redo",
help="redo plots even if the files already exist",
action="store_true",
)
parser.add_argument(
"-w", "--watch", help="wait and watch for missing outputs", action="store_true"
)
parser.add_argument("--skip", help="skip failed loadings", action="store_true")
parser.add_argument(
"-wt",
"--waiting_time",
help="time between to successive try when watching new outputs (in second)",
type=int,
default=120,
)
parser.add_argument(
"-af",
"--allowed_failures",
help="number of allowed failures when waiting",
default=30,
)
parser.add_argument("--level", help="plot levels", action="store_true")
parser.add_argument("--cpu", help="plot cpu", action="store_true")
parser.add_argument(
"-x", help="x position of the central point", type=float, default=1.0
)
parser.add_argument(
"-y", help="y position of the central point", type=float, default=1.0
)
parser.add_argument(
"-z", help="z position of the central point", type=float, default=1.0
)
parser.add_argument(
"--fft", help="use quick and dirty fft rendering", action="store_true"
)
parser.add_argument("-i", "--interactive", help="Interactive mode", action="store_true")
parser.add_argument(
"--colormap", help="Colormap used", choices=dp.P.colormaps(), default="plasma"
)
parser.add_argument(
"--format",
help="Format of the output",
choices=["png", "jpeg", "pdf", "ps"],
default="jpeg",
)
parser.add_argument("--dpi", help="Resolution of the output", type=int, default=400)
args = parser.parse_args()
project = args.project
runs = args.runs
first = args.begin
last = args.end
step = args.step
# extension for out files
dp.out_ext = "." + args.format
# Plot properties
dp.P.rcParams["image.cmap"] = args.colormap
dp.P.rcParams["savefig.dpi"] = args.dpi
for run in runs:
path_suffix = project + "/" + run
path_in = storage_in + path_suffix
path_out = storage_out + path_suffix
if not os.path.exists(path_out):
os.makedirs(path_out)
try:
copy(path_in + "/disk.nml", path_out)
copy(path_in + "/output_00001/compilation.txt", path_out)
except:
pass
for i in range(first, last + 1, step):
failures = 0
success = False
while not success:
try:
if args.maps:
dp.make_image_disk(
path_in,
i,
path_out=path_out,
tag=run,
map_size=1024,
force=args.force_redo,
level=args.level,
cpu=args.cpu,
pos_star=np.array([args.x, args.y, args.z]),
fft=args.fft,
interactive=args.interactive,
)
if args.disk:
dp.disk_prop(
path_in,
i,
path_out=path_out,
rad_ext=1,
nb_bin=args.nb_bin,
force=args.force_redo,
pos_star=np.array([args.x, args.y, args.z]),
)
dp.plot_disk_prop(
path_out,
i,
tag=run,
force=args.force_redo,
interactive=args.interactive,
)
success = True
except ValueError:
if args.watch and failures < args.allowed_failures:
failures = failures + 1
print(
"Unable to proceed for run {} output {}. Trying again in {} s ({} tries remaining)".format(
run, i, args.waiting_time, args.allowed_failures - failures
)
)
time.sleep(args.waiting_time)
elif args.skip:
break
else:
raise