Skip to content
Snippets Groups Projects

imaging changes for casa_envoy and vela

Merged Charlotte Hausman requested to merge Standard_CMS_Imaging into main
All threads resolved!
16 files
+ 831
216
Compare changes
  • Side-by-side
  • Inline
Files
16
import logging
import re
import glob
import sys
import os
import subprocess
from casa_envoy.interfaces import CasaLauncherIF
from casa_envoy.schema import AbstractTextFile
def get_base_environment(parameters: dict):
os.environ["SCIPIPE_ROOTDIR"] = parameters["rootDirectory"]
os.environ["CASA_HOME"] = parameters["homeForReprocessing"]
os.environ["LANG"] = "en_US.UTF-8"
def check_processing_env(logger: logging.Logger):
logger.info("Checking processing environment:")
env1 = os.environ.get("SCIPIPE_ROOTDIR")
logger.info(f"SCIPIPE_ROOTDIR: {env1}")
env2 = os.environ.get("CASA_HOME")
logger.info(f"CASA_HOME: {env2}")
env3 = os.environ.get("PPR_FILENAME")
logger.info(f"PPR_FILENAME: {env3}")
env4 = os.environ.get("LANG")
logger.info(f"LANG: {env4}")
if "None" in [env1, env2, env3, env4]:
logger.info("Environment setup Failed!")
sys.exit(1)
else:
logger.info("Environment ready for processing")
class CalibrationLauncher(CasaLauncherIF):
def __init__(self, ppr: AbstractTextFile, metadata: AbstractTextFile):
self.logger = logging.getLogger("casa_envoy")
self.ppr = ppr
self.metadata = metadata
def run(self):
self.logger.info("RUNNING CASA CALIBRATION!")
os.chdir("./working")
result = subprocess.Popen(
"PYTHONPATH='' xvfb-run -e ${PWD}/xvfb-run.err.txt -d -s \"-screen 0 800x600x16\" "
"${CASA_HOME}/bin/casa --pipeline --nogui --nologger -c "
"${CASA_HOME}/pipeline/pipeline/runvlapipeline.py ${PPR_FILENAME} || true",
shell=True,
executable="/bin/bash",
stdout=sys.stdout,
stderr=sys.stderr,
)
return result.communicate()
def setup_environment(self, parameters: dict):
get_base_environment(parameters)
os.environ["PPR_FILENAME"] = str(self.ppr)
check_processing_env(self.logger)
def check_logs(self, parent_path: str):
self.logger.info("CHECKING CASA CALIBRATION LOGS!")
# make sure we are in the correct directory to find log file
if not os.getcwd().endswith("/working"):
os.chdir(parent_path + "/working")
casa_logs = glob.glob("casa-*.log")
for file in casa_logs:
if re.match("^.*SEVERE\sflagmanager.*$", open(file).read()):
self.logger.error("CASA ERROR!")
else:
self.logger.info("CASA Success!")
class ImagingLauncher(CasaLauncherIF):
def __init__(self, ppr: AbstractTextFile, metadata: AbstractTextFile):
self.logger = logging.getLogger("casa_envoy")
self.ppr = ppr
self.metadata = metadata
def run(self):
self.logger.info("RUNNING CASA IMAGING!")
os.chdir("./working")
result = subprocess.Popen(
"PYTHONPATH='' xvfb-run -e ${PWD}/xvfb-run.err.txt -d -s \"-screen 0 800x600x16\" "
"${CASA_HOME}/bin/casa --pipeline --nogui --nologger -c "
"${CASA_HOME}/pipeline/pipeline/runvlapipeline.py ${PPR_FILENAME} || true",
shell=True,
executable="/bin/bash",
stdout=sys.stdout,
stderr=sys.stderr,
)
return result.communicate()
def setup_environment(self, parameters: dict):
get_base_environment(parameters)
os.environ["PPR_FILENAME"] = str(self.ppr)
check_processing_env(self.logger)
def check_logs(self, parent_path: str):
self.logger.info("CHECKING CASA IMAGING LOGS!")
# make sure we are in the correct directory to find log file
if not os.getcwd().endswith("/working"):
os.chdir(parent_path + "/working")
casa_logs = glob.glob("casa-*.log")
for file in casa_logs:
if re.match("^.*SEVERE\sflagmanager.*$", open(file).read()):
self.logger.error("CASA ERROR!")
else:
self.logger.info("CASA Success!")
Loading