renamed setup_sim->innitialize_sim; introduced annealing python script; outsourced replace_params; run.sh now template

This commit is contained in:
Robin
2025-08-13 15:25:27 +02:00
parent 076b8d090c
commit 5342dd197f
7 changed files with 82 additions and 80 deletions

View File

@@ -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]))

View File

@@ -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"

View File

@@ -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"

0
polyamorphism_optimization/innitialize_sim.py Normal file → Executable file
View File

View File

@@ -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()

View File

@@ -17,7 +17,7 @@ dependencies = [
] ]
[project.scripts] [project.scripts]
po_setup_sim = "polyamorphism_optimization.setup_sim:main" po_init_sim = "polyamorphism_optimization.innitialize_sim:main"
[tool.setuptools.package-data] [tool.setuptools.package-data]
polyamorphism_optimization = ["templates/*"] polyamorphism_optimization = ["templates/*"]