From 930acfe247feef09a3accd4da2f59f1a09561c80 Mon Sep 17 00:00:00 2001 From: hotwa Date: Tue, 9 Jan 2024 10:11:43 +0800 Subject: [PATCH] update to cwd --- gentop.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/gentop.py b/gentop.py index 0d58100..4eebce5 100644 --- a/gentop.py +++ b/gentop.py @@ -5,8 +5,7 @@ import os def generate_gmx_top_files(directory, num_cores, forcefield="amber99sb-ildn", water_model="tip3p"): """ Generate GROMACS topology (.top) files for each PDB file in the specified directory - by running the 'gmx_mpi pdb2gmx' command in batch. All intermediate and output files - are generated in the same directory as the PDB files. + by running the 'gmx_mpi pdb2gmx' command in batch, with the working directory set to the specified directory. Args: directory (str): Directory containing PDB files. @@ -19,11 +18,8 @@ def generate_gmx_top_files(directory, num_cores, forcefield="amber99sb-ildn", wa if gmxrc_path: subprocess.run(f"source {gmxrc_path}", shell=True, executable='/bin/bash') - # Convert directory to Path object for ease of use - directory_path = Path(directory) - # Find all PDB files in the specified directory - pdb_files = directory_path.glob("*.pdb") + pdb_files = Path(directory).glob("*.pdb") # Iterate over each PDB file and execute the GROMACS command for pdb_file in pdb_files: @@ -31,7 +27,7 @@ def generate_gmx_top_files(directory, num_cores, forcefield="amber99sb-ildn", wa output_gro = f"{name}.gro" topol_file = "topol.top" - # Construct and run the command + # Construct and run the command with the working directory set to 'directory' cmd = [ "mpirun", "-np", str(num_cores), "gmx_mpi", "pdb2gmx", @@ -42,9 +38,9 @@ def generate_gmx_top_files(directory, num_cores, forcefield="amber99sb-ildn", wa "-ignh", "-p", topol_file ] - subprocess.run(cmd, check=True, cwd=directory_path) + subprocess.run(cmd, check=True, cwd=directory) # Example usage -directory = "./pdb_top" # Replace with your actual directory path +directory = "pdb_top" # Replace with your actual directory path num_cores = max(os.cpu_count() - 2, 1) # Determine the number of cores to use generate_gmx_top_files(directory, num_cores) # Run the function