diff --git a/cfg/cygnusa.cfg b/cfg/cygnusa.cfg index 940938545a5702abe70cab1d0428ef72ae0ce76f..ffafd0f0a17cf56468c82297e95b504b3c6a5748 100644 --- a/cfg/cygnusa.cfg +++ b/cfg/cygnusa.cfg @@ -5,7 +5,6 @@ science target = CYG-ALL-2052-2MHZ.ms:(Cygnus-N$0$DATA) number of randomly sampled rows = 10000 [optimization] -output folder = output_cygnusa_stokesi total iterations = 23 likelihood = points,data weights,full,* constants = None,None,4*sky,None,* diff --git a/cfg/cygnusa_mf.cfg b/cfg/cygnusa_mf.cfg index 5945386ac26b80143213127dfcaaa6d704f17039..4651a0893fb355b2886b275eaef5ebffd0569584 100644 --- a/cfg/cygnusa_mf.cfg +++ b/cfg/cygnusa_mf.cfg @@ -5,7 +5,6 @@ science target = CYG-ALL-2052-2MHZ.ms:(Cygnus-N$0$DATA),CYG-ALL-4811-8MHZ.ms:(Cy number of randomly sampled rows = 10000 [optimization] -output folder = output total iterations = 30 likelihood = points,data weights,full,* constants = None,None,4*sky,5*weights,None,* diff --git a/cfg/cygnusa_mf_cfm.cfg b/cfg/cygnusa_mf_cfm.cfg index 84bb5f19eec06dd1e72e8cb35f7d20c94f5cff34..18055b65bae9a2e8d645b22ef8b8001e07c935a8 100644 --- a/cfg/cygnusa_mf_cfm.cfg +++ b/cfg/cygnusa_mf_cfm.cfg @@ -5,7 +5,6 @@ science target = CYG-ALL-2052-2MHZ.ms:(Cygnus-N$0$DATA),CYG-ALL-4811-8MHZ.ms:(Cy number of randomly sampled rows = 10000 [optimization] -output folder = output total iterations = 20 likelihood = data weights constants = None diff --git a/cfg/cygnusa_polarization.cfg b/cfg/cygnusa_polarization.cfg index 1b2701d802779156f66b5b085ab7663ae9938a3f..d642d18305e1994e72d2afd3191a9174a72ecc00 100644 --- a/cfg/cygnusa_polarization.cfg +++ b/cfg/cygnusa_polarization.cfg @@ -5,7 +5,6 @@ science target = CYG-ALL-2052-2MHZ.ms:(Cygnus-N$0$DATA) number of randomly sampled rows = 10000 [optimization] -output folder = output_cygnusa_polarization total iterations = 23 likelihood = points,data weights,full,* constants = None,None,4*sky,5*weights,None,* diff --git a/cfg/gauss_001almacycle53noisy.cfg b/cfg/gauss_001almacycle53noisy.cfg index 82e6d0e2b84cf31e034b057ec699b6efa7defdfb..c3ee94930d339b50be8add0422ef92ed0f65d142 100644 --- a/cfg/gauss_001almacycle53noisy.cfg +++ b/cfg/gauss_001almacycle53noisy.cfg @@ -5,7 +5,6 @@ science target = /data/gauss_001almacycle53noisy.ms:(gauss_001.alma.cycle5.3_0$0 #number of randomly sampled rows = 10000 [optimization] -output folder = output total iterations = 23 likelihood = data weights constants = None diff --git a/cfg/mf.cfg b/cfg/mf.cfg index 4942663b67a1471478494ef399af403138e42ae9..146b5e68b645840ef88080e921ecc6ff8b274534 100644 --- a/cfg/mf.cfg +++ b/cfg/mf.cfg @@ -5,7 +5,6 @@ science target = mf_test_data.npz #number of randomly sampled rows = 10000 [optimization] -output folder = output_mf total iterations = 1 likelihood = data weights constants = None diff --git a/misc/mpa_cluster/cfgs/cygnusa_polarization_13360.cfg b/misc/mpa_cluster/sample_reconstruction/cfg.txt similarity index 100% rename from misc/mpa_cluster/cfgs/cygnusa_polarization_13360.cfg rename to misc/mpa_cluster/sample_reconstruction/cfg.txt diff --git a/misc/mpa_cluster/total_script.sh b/misc/mpa_cluster/total_script.sh index 7ecc87ef24a3c69467151b96e6db61df015b0053..7085f31c7702241579d00e5675b754699e964486 100644 --- a/misc/mpa_cluster/total_script.sh +++ b/misc/mpa_cluster/total_script.sh @@ -1,8 +1,9 @@ set -ex -INSTALL_DIR=~/temp4/cluster_playground +CONFIG_FILE=`realpath cfgs/cygnusa_polarization_13360.cfg` +INSTALL_DIR=`dirname $CONFIG_FILE` QUEUE=pascal -RESOLVE_BRANCH=mpa_cluster +RESOLVE_BRANCH=devel NIFTY_BRANCH=NIFTy_8 # Possible values for pe @@ -15,7 +16,7 @@ TOTAL_THREADS=100 # Total number of threads across all MPI tasks MEM=40G # Memory per Task MPI_NP=5 # Number of MPI processes -#./prepare_environment.sh $INSTALL_DIR $QUEUE $RESOLVE_BRANCH $NIFTY_BRANCH +./prepare_environment.sh $INSTALL_DIR $QUEUE $RESOLVE_BRANCH $NIFTY_BRANCH python3 generate_cluster_files.py \ --qname $QUEUE \ --venv-dir $INSTALL_DIR \ @@ -24,4 +25,4 @@ python3 generate_cluster_files.py \ --mpi-np $MPI_NP \ --total-threads $TOTAL_THREADS \ --mem $MEM \ - cfgs/cygnusa_polarization_13360.cfg --max-iteration 2 + $CONFIG_FILE # --max-iteration 2 diff --git a/resolve/command_line/resolve.py b/resolve/command_line/resolve.py index 74546b23b4ab8dc350ee9396f03f1a1944020c5d..2b94aaba61790aa5aa244e092e8299a9ed5f1a4c 100644 --- a/resolve/command_line/resolve.py +++ b/resolve/command_line/resolve.py @@ -47,14 +47,23 @@ def main(): nthreads = args.j ift.set_nthreads(nthreads) + # Read config file + if not os.path.isfile(args.config_file): + raise RuntimeError(f"Config file {args.config_file} not found") + output_directory = os.path.split(args.config_file)[0] + if output_directory == "": + output_directory = "." cfg = ConfigParser() cfg.read(args.config_file) + # /Read config file + # Read data obs_calib_flux, obs_calib_phase, obs_science = parse_data_config(cfg) if cfg["sky"]["polarization"] == "I": obs_science = [oo.restrict_to_stokesi().average_stokesi() for oo in obs_science] assert len(obs_calib_flux) == len(obs_calib_phase) == 0 + # /Read data # Model operators diffuse, additional_diffuse = sky_model_diffuse(cfg["sky"], obs_science, nthreads=nthreads) @@ -90,13 +99,11 @@ def main(): lhs["data weights"] = ImagingLikelihood(obs_science, sky, epsilon=epsilon, do_wgridding=do_wgridding, nthreads=nthreads) # /Likelihoods - outdir = parse_optimize_kl_config(cfg["optimization"], lhs, domains)["output_directory"] - # Profiling position = 0.1 * ift.from_random(lhs["full"].domain) barrier(comm) if master: - os.makedirs(outdir, exist_ok=True) + os.makedirs(output_directory, exist_ok=True) with ift.random.Context(12): ift.exec_time(lhs["full"], verbose=args.verbose) if args.profile_only: @@ -105,10 +112,11 @@ def main(): barrier(comm) # /Profiling + # Inference def inspect_callback(sl, iglobal, position): - visualize_weighted_residuals(obs_science, sl, iglobal, sky, weights, outdir, io=master, + visualize_weighted_residuals(obs_science, sl, iglobal, sky, weights, output_directory, io=master, do_wgridding=do_wgridding, epsilon=epsilon, nthreads=nthreads) - plot_sky(sl.average(sky), os.path.join(outdir, f"sky/sky_{iglobal}.pdf")) + plot_sky(sl.average(sky), os.path.join(output_directory, f"sky/sky_{iglobal}.pdf")) if args.terminate is None: terminate_callback = lambda iglobal: False @@ -119,7 +127,9 @@ def main(): get_comm = comm ift.optimize_kl(**parse_optimize_kl_config(cfg["optimization"], lhs, domains, inspect_callback), plottable_operators=operators, comm=get_comm, overwrite=True, - plot_latent=True, resume=args.resume, terminate_callback=terminate_callback) + plot_latent=True, resume=args.resume, terminate_callback=terminate_callback, + output_directory=output_directory) + # /Inference if __name__ == "__main__": diff --git a/resolve/config_utils.py b/resolve/config_utils.py index b2d599c6cf04a17a996d1d8f5f7462b5de54c160..b55d6cc68eaf509ae231207ffe419281036e889b 100644 --- a/resolve/config_utils.py +++ b/resolve/config_utils.py @@ -79,7 +79,6 @@ def parse_optimize_kl_config(cfg, likelihood_dct, constants_dct={}, inspect_call sampling_iterations = f_int(cfg["sampling iteration limit"]) res["n_samples"] = lambda ii: f_int(cfg["n samples"])[ii] res["sampling_iteration_controller"] = lambda ii: ift.AbsDeltaEnergyController(0.05, iteration_limit=sampling_iterations[ii], convergence_level=3, name="Sampling") - res["output_directory"] = os.path.expanduser(cfg["output folder"]) def optimizer(ii):