123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #!/bin/bash
- #
- # OBJECTIVE:
- # In Autosubmit 2.x experiments three projects were cloned (model, templates and ocean_diagnostics).
- # New Autosubmit 3.x experiments only allow cloning one project (auto-ecearth).
- # Auto-ecearth is a single project containing model, templates and ocean_diagnostics among others.
- #
- # This script covers the need of having to run an Autosubmit 2.x experiment with Autosubmit 3.x.
- # It assumes that no auto-ecearth available version can reproduce what the old experiment was doing,
- # and it adapts a copy of that old experiment, reshuffling the configuration files and removing
- # unnecessary variables from the old templates to adapt them to the Autosubmit 3.x framework.
- #
- # DESCRIPTION:
- # This script will modify and adapt the experiment configuration file of the TARGET_EXPID
- # according to Autosubmit 3.x standard.
- #
- # This script will also clone model, templates and ocean_diagnostics
- # from ORIGINAL_EXPID into TARGET_EXPID "proj" folder.
- #
- # This script will also remove unnecessary template header/tailer variables.
- #
- # USE:
- # 1st step
- # --------
- # Before executing this script you must use the copy option of Autosubmit 3.x
- # e.g. autosubmit expid -y i000 -H ithaca -d "copied from original i000"
- #
- # 2nd step
- # --------
- # ./migrate_exp.sh ORIGINAL_EXPID TARGET_EXPID
- #
- # CONTACT:
- # Written by Domingo Manubens-Gil
- #
- # Institut Català de Ciències del Clima / Climate Forecasting Unit (IC3/CFU)
- # Created: November 13, 2014
- copy_from="$1"
- target_expid="$2"
- experiments_path="/home/dmanubens/debug/autosubmit"
- target_file="$experiments_path/$target_expid/conf/expdef_$target_expid.conf"
- set -ex
- if [[ -d $experiments_path/$target_expid/proj ]]; then
- cd $experiments_path/$target_expid/proj
- echo "Existing clone for model, templates and ocean_diagnostics..."
- else
- mkdir $experiments_path/$target_expid/proj
- cd $experiments_path/$target_expid/proj
- git clone $experiments_path/$copy_from/git/model model
- git clone $experiments_path/$copy_from/git/templates templates
- git clone $experiments_path/$copy_from/git/ocean_diagnostics ocean_diagnostics
- echo "Cloned successfully model, templates and ocean_diagnostics..."
- fi
- if grep -q TEMPLATE_NAME "$target_file" ; then
- template=$(grep TEMPLATE_NAME $target_file | awk '{print $3}')
- sed -i '/%HEADER%/d' templates/$template/*
- sed -i '/%HEADER%/d' templates/common/*
- sed -i '/%AS-HEADER-LOC%/d' templates/$template/*
- sed -i '/%AS-HEADER-LOC%/d' templates/common/*
- sed -i '/%AS-HEADER-REM%/d' templates/$template/*
- sed -i '/%AS-HEADER-REM%/d' templates/common/*
- sed -i '/%AS-TAILER-LOC%/d' templates/$template/*
- sed -i '/%AS-TAILER-LOC%/d' templates/common/*
- sed -i '/%AS-TAILER-REM%/d' templates/$template/*
- sed -i '/%AS-TAILER-REM%/d' templates/common/*
-
- echo "Unnecessary template header/tailer variables deleted..."
- else
- echo "No variables deleted..."
- fi
- if grep -q HPCPROJ "$target_file" ; then
- sed -i '/^HPCPROJ/ a\# HPCPROJ moved to queues.conf (Autosubmit 3.x migration)' $target_file
- sed -i '/^HPCPROJ/ d' $target_file
- sed -i '/^HPCUSER/ a\# HPCUSER moved to queues.conf (Autosubmit 3.x migration)' $target_file
- sed -i '/^HPCUSER/ d' $target_file
- sed -i '/^RERUN/ a\# RERUN moved to rerun section (Autosubmit 3.x migration)' $target_file
- sed -i '/^RERUN/ d' $target_file
- sed -i '/^CHUNKLIST/ a\# CHUNKLIST moved to rerun section (Autosubmit 3.x migration)' $target_file
- sed -i '/^CHUNKLIST/ d' $target_file
- sed -i '/^WALLCLOCK/ a\# WALLCLOCK moved to jobs.conf (Autosubmit 3.x migration)' $target_file
- sed -i '/^WALLCLOCK/ d' $target_file
- sed -i '/^NUMPROC/ a\# NUMPROC moved to jobs.conf (Autosubmit 3.x migration)' $target_file
- sed -i '/^NUMPROC/ d' $target_file
- echo "Unnecessary configuration variables deleted..."
- else
- echo "No configuration variables deleted..."
- fi
- if grep -q CALENDAR "$target_file" ; then
- echo "No configuration variables added..."
- else
- sed -i '/CHUNKINI =*/a \
- # Calendar used. LIST: standard, noleap \
- CALENDAR = standard \
- ' $target_file
- sed -i '/TEMPLATE_NAME =*/a \
- \
- [project] \
- # Select project type. STRING = git, svn, local, none \
- # If PROJECT_TYPE is set to none, Autosubmit self-contained dummy templates will be used \
- PROJECT_TYPE = local \
- \
- # If PROJECT_TYPE is not git, no need to change \
- [git] \
- # Repository URL STRING = "'"https://github.com/torvalds/linux.git"'" \
- PROJECT_ORIGIN = \
- # Select branch or tag, STRING, default = "'"master"'", help = {"'"master"'" (default), "'"develop"'", "'"v3.1b"'", ...} \
- PROJECT_BRANCH = \
- # type = STRING, default = leave empty, help = if model branch is a TAG leave empty \
- PROJECT_COMMIT = \
- \
- # If PROJECT_TYPE is not svn, no need to change \
- [svn] \
- # type = STRING, help = "'"https://svn.ec-earth.org/ecearth3"'" \
- PROJECT_URL = \
- # Select revision number. NUMERIC = 1778 \
- PROJECT_REVISION = \
- \
- # If PROJECT_TYPE is not local, no need to change \
- [local] \
- # type = STRING, help = /foo/bar/ecearth \
- PROJECT_PATH = /esnas/autosubmit/'$copy_from'/git \
- \
- # If PROJECT_TYPE is none, no need to change \
- [project_files] \
- # Where is PROJECT CONFIGURATION file location relative to project root path \
- FILE_PROJECT_CONF = ../conf/expdef_'$target_expid'.conf \
- \
- [rerun] \
- # Is a rerun or not? [Default: Do set FALSE]. BOOLEAN = TRUE, FALSE \
- RERUN = FALSE \
- # If RERUN = TRUE then supply the list of chunks to rerun \
- # LIST = "[ 19601101 [ fc0 [1 2 3 4] fc1 [1] ] 19651101 [ fc0 [16-30] ] ]" \
- CHUNKLIST = \
- ' $target_file
- echo "New needed configuration variables added succesfuly..."
- fi
- exit 0
|