renamed setup_sim->innitialize_sim; introduced annealing python script; outsourced replace_params; run.sh now template
This commit is contained in:
		
							
								
								
									
										40
									
								
								polyamorphism_optimization/annealing.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								polyamorphism_optimization/annealing.py
									
									
									
									
									
										Normal 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])) | ||||||
|  |  | ||||||
| @@ -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" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -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
									
								
							
							
						
						
									
										0
									
								
								polyamorphism_optimization/innitialize_sim.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										41
									
								
								polyamorphism_optimization/replace_params.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								polyamorphism_optimization/replace_params.py
									
									
									
									
									
										Normal 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() | ||||||
|  |  | ||||||
| @@ -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/*"] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user