Skip to content
Snippets Groups Projects
Commit 92ca3440 authored by Charlotte Hausman's avatar Charlotte Hausman
Browse files

add split launching to casa envoy

parent 5ac647e8
No related branches found
No related tags found
1 merge request!1074add split launching to casa envoy
Pipeline #6799 passed
Pipeline: workspaces

#6801

    ......@@ -28,9 +28,10 @@ class CasaConfigure:
    Class for unifying environment setup. Required by all CASA Runner types
    """
    def __init__(self, parameters: dict):
    def __init__(self, parameters: dict, content: dict):
    self.logger = logging.getLogger("casa_envoy")
    self.parameters = parameters
    self.metadata_content = content
    def setup_environment(self):
    """
    ......@@ -40,10 +41,15 @@ class CasaConfigure:
    """
    os.environ["SCIPIPE_ROOTDIR"] = self.parameters["rootDirectory"]
    if "vlass" in self.parameters["product_type"]:
    os.environ["CASA_HOME"] = self.parameters["vlassHome"]
    # If user specified CASA Version, use it
    if "casaHome" in self.metadata_content:
    os.environ["CASA_HOME"] = self.metadata_content.get("casaHome")
    else:
    os.environ["CASA_HOME"] = self.parameters["homeForReprocessing"]
    # If VLASS, use the current VLASS CASA release
    if "vlass" in self.parameters["product_type"]:
    os.environ["CASA_HOME"] = self.parameters["vlassHome"]
    else:
    os.environ["CASA_HOME"] = self.parameters["homeForReprocessing"]
    os.environ["LANG"] = "en_US.UTF-8"
    os.environ["PPR_FILENAME"] = self.parameters["ppr"]
    ......
    ......@@ -74,6 +74,7 @@ class CasaLauncher:
    self.logger = logging.getLogger("casa_envoy")
    self.runner = runner
    self.parameters = runner.parameters
    self.metadata = get_abs_file(self.runner.parameters.get("metadata"))
    def run(self):
    """
    ......@@ -81,7 +82,7 @@ class CasaLauncher:
    :return:
    """
    CasaConfigure(self.parameters).setup_environment()
    CasaConfigure(self.parameters, json.loads(self.metadata.content)).setup_environment()
    # Check if running locally or with rapid testing parameters, if so, run Vela instead
    if self.parameters.get("useCasa"):
    ......@@ -235,3 +236,21 @@ class ImagingLauncher(LauncherIF):
    else:
    self.logger.error("SPL ERROR: This product locator is not calibratable! Please check your inputs")
    return False
    class SplitLauncher(LauncherIF):
    def __init__(self, parameters: dict):
    self.logger = logging.getLogger("casa_envoy")
    self.parameters = parameters
    self.ppr = get_abs_file(parameters.get("ppr"))
    self.metadata = get_abs_file(parameters.get("metadata"))
    self.content = json.loads(self.metadata.content)
    self.runner = determine_runner_type(parameters)
    def launch_casa(self):
    self.prepare_for_casa()
    run_audit(self.logger, self.ppr, self.metadata, self.parameters)
    CasaLauncher(self.runner).run()
    def prepare_for_casa(self):
    GeneralFoundation(self.parameters, self.metadata).data_foundation()
    ......@@ -27,7 +27,7 @@ import sys
    from casa_envoy.enums import ProductType
    from casa_envoy.interfaces import LauncherIF
    from casa_envoy.launchers import CalibrationLauncher, ImagingLauncher
    from casa_envoy.launchers import CalibrationLauncher, ImagingLauncher, SplitLauncher
    from pycapo import CapoConfig
    """
    ......@@ -115,6 +115,9 @@ def _setup_launcher(path: pathlib.Path, args: argparse.Namespace) -> LauncherIF:
    }
    return ImagingLauncher(parameters)
    elif args.split is not None:
    parameters = {**parameters, **_get_settings(path, args.split)}
    return SplitLauncher(parameters)
    def arg_parser() -> argparse.ArgumentParser:
    ......@@ -154,6 +157,14 @@ def arg_parser() -> argparse.ArgumentParser:
    required=False,
    help="run a VLASS imaging CASA pipeline",
    )
    parser.add_argument(
    "-s",
    "--split",
    nargs=2,
    action="store",
    required=False,
    help="run a PIMS Split CASA pipeline",
    )
    parser.add_argument(
    "-p",
    "--parallel",
    ......
    ......@@ -19,11 +19,13 @@
    """
    Tests for casa_envoy Configure
    """
    import json
    import os
    from pathlib import Path
    from unittest.mock import patch
    from casa_envoy.configure import CasaConfigure, StandardRunner, ParallelRunner
    from casa_envoy.schema import AbstractTextFile
    cal_parameters = {
    "useCasa": False,
    ......@@ -47,6 +49,10 @@ parallel_parameters = {
    "requested_parallel": "4",
    }
    test_cal_metadata = AbstractTextFile(
    filename="test/input_files/test.json", content=Path("test/input_files/test.json").read_text()
    )
    class TestCasaConfigure:
    """
    ......@@ -54,7 +60,8 @@ class TestCasaConfigure:
    """
    def test_setup_environment(self):
    CasaConfigure(parameters=cal_parameters).setup_environment()
    content = json.loads(test_cal_metadata.content)
    CasaConfigure(parameters=cal_parameters, content=content).setup_environment()
    assert os.environ.get("SCIPIPE_ROOTDIR") == cal_parameters["rootDirectory"]
    assert os.environ.get("CASA_HOME") == cal_parameters["homeForReprocessing"]
    assert os.environ.get("PPR_FILENAME") == "test/input_files/PPR.xml"
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment