diff --git a/polyamorphism_optimization/annealing.py b/polyamorphism_optimization/annealing.py new file mode 100644 index 0000000..2c70d7e --- /dev/null +++ b/polyamorphism_optimization/annealing.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +import shutil +from pathlib import Path +from generate_annealing import generate_annealing +from replace_params import replace_params + + +def main(root_dir: Path): + simdir = root_dir / "01_an1" + + if simdir.exists(): + shutil.rmtree(simdir) + simdir.mkdir() + + # Copy topology and replace parameters + shutil.copy(root_dir / "topology.top", simdir / "topology.top") + replace_params(root_dir / "params.ini", root_dir / "topology.top", simdir / "topology.top") + replace_params(root_dir / "params_an1.ini", root_dir / "mdp_parameters.mdp", simdir / "mdp_parameters.mdp") + replace_params(root_dir / "params.ini", simdir / "mdp_parameters.mdp", simdir / "mdp_parameters.mdp") + + # Copy run.sh + shutil.copy(root_dir / "run.sh", simdir / "run.sh") + + # Generate annealing section + annealing = generate_annealing(d=50, l=50, u=1000, s=50, e=2000) + # -d 20 -l 750 -u 2100 -s 50 -e 10000 -c + with (simdir / "mdp_parameters.mdp").open("a") as f: + f.write("\n") + f.write(annealing) + + print(f"Annealing directory {simdir} created and filled.") + + +if __name__ == "__main__": + import sys + if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ROOT_DIRECTORY") + sys.exit(1) + main(Path(sys.argv[1])) + diff --git a/polyamorphism_optimization/create_annealing1.sh b/polyamorphism_optimization/create_annealing1.sh deleted file mode 100755 index bca9576..0000000 --- a/polyamorphism_optimization/create_annealing1.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -get_ini_value() { - local file=$1 - local section=$2 - local key=$3 - - awk -F '=' -v section="$section" -v key="$key" ' - $0 ~ "\\[" section "\\]" { in_section = 1; next } - in_section && $1 ~ "^" key"[[:space:]]*$" { - gsub(/[[:space:]]+/, "", $2) - print $2 - exit - } - $0 ~ /^\[/ { in_section = 0 } - ' "$file" -} - -simdir="01_an1" - - -rm -r "$simdir" 2>/dev/null -mkdir "$simdir" - -cp topology.top "$simdir/" -"$(dirname $0)/replace_params.sh" params.ini topology.top --output "$simdir/topology.top" -"$(dirname $0)/replace_params.sh" params_an1.ini mdp_parameters.mdp --output "$simdir/mdp_parameters.mdp" -"$(dirname $0)/replace_params.sh" params.ini "$simdir/mdp_parameters.mdp" --output "$simdir/mdp_parameters.mdp" -cp "$(dirname $0)/run.sh" "$simdir/" -cp "00_em/out/out.gro" "$simdir/gro_start.gro" - - -annealing=$($(dirname $0)/generate_annealing.py -d 50 -l 50 -u 1000 -s 50 -e 2000) - -#annealing=$($(dirname $0)/generate_annealing.py -d 30 -l 400 -u 950 -s 50 -e 2000) - -echo "" >> "$simdir/mdp_parameters.mdp" -echo "$annealing" >> "$simdir/mdp_parameters.mdp" - - diff --git a/polyamorphism_optimization/create_annealing2.sh b/polyamorphism_optimization/create_annealing2.sh deleted file mode 100755 index b909192..0000000 --- a/polyamorphism_optimization/create_annealing2.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -get_ini_value() { - local file=$1 - local section=$2 - local key=$3 - - awk -F '=' -v section="$section" -v key="$key" ' - $0 ~ "\\[" section "\\]" { in_section = 1; next } - in_section && $1 ~ "^" key"[[:space:]]*$" { - gsub(/[[:space:]]+/, "", $2) - print $2 - exit - } - $0 ~ /^\[/ { in_section = 0 } - ' "$file" -} - -simdir="02_an_cooling" - - -rm -r "$simdir" 2>/dev/null -mkdir "$simdir" - -cp topology.top "$simdir/" -"$(dirname $0)/replace_params.sh" params.ini topology.top --output "$simdir/topology.top" -"$(dirname $0)/replace_params.sh" params_an1.ini mdp_parameters.mdp --output "$simdir/mdp_parameters.mdp" -"$(dirname $0)/replace_params.sh" params.ini "$simdir/mdp_parameters.mdp" --output "$simdir/mdp_parameters.mdp" -cp "$(dirname $0)/run.sh" "$simdir/" -#cp "00_em/out/out.gro" "$simdir/gro_start.gro" - - -#annealing=$($(dirname $0)/generate_annealing.py -d 50 -l 180 -u 750 -e 2000 -c) -annealing=$($(dirname $0)/generate_annealing.py -d 20 -l 750 -u 2100 -s 50 -e 10000 -c) - -echo "" >> "$simdir/mdp_parameters.mdp" -echo "$annealing" >> "$simdir/mdp_parameters.mdp" - - diff --git a/polyamorphism_optimization/innitialize_sim.py b/polyamorphism_optimization/innitialize_sim.py old mode 100644 new mode 100755 diff --git a/polyamorphism_optimization/replace_params.py b/polyamorphism_optimization/replace_params.py new file mode 100644 index 0000000..cb804e7 --- /dev/null +++ b/polyamorphism_optimization/replace_params.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +import sys +import configparser +from pathlib import Path + + +def replace_params(param_file: Path, template_file: Path, output_file: Path): + """Replace placeholders in template_file with values from an INI file.""" + config = configparser.ConfigParser() + config.optionxform = str # keep case sensitivity + config.read(param_file) + + # Flatten into a simple dict {KEY: VALUE} + params = {} + for section in config.sections(): + for key, value in config.items(section): + params[key] = value + + content = template_file.read_text() + + for key, value in params.items(): + content = content.replace(key, value) + + output_file.write_text(content) + + +def main(): + if len(sys.argv) != 4: + print(f"Usage: {sys.argv[0]} PARAM_FILE TEMPLATE_FILE OUTPUT_FILE") + sys.exit(1) + + param_file = Path(sys.argv[1]) + template_file = Path(sys.argv[2]) + output_file = Path(sys.argv[3]) + + replace_params(param_file, template_file, output_file) + + +if __name__ == "__main__": + main() + diff --git a/polyamorphism_optimization/run.sh b/polyamorphism_optimization/templates/run.sh similarity index 100% rename from polyamorphism_optimization/run.sh rename to polyamorphism_optimization/templates/run.sh diff --git a/pyproject.toml b/pyproject.toml index d5caedf..ac4522b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ ] [project.scripts] -po_setup_sim = "polyamorphism_optimization.setup_sim:main" +po_init_sim = "polyamorphism_optimization.innitialize_sim:main" [tool.setuptools.package-data] polyamorphism_optimization = ["templates/*"]